Skip to content

Commit bd00a08

Browse files
committed
Added resize event support
1 parent 069b1a0 commit bd00a08

File tree

2 files changed

+88
-80
lines changed

2 files changed

+88
-80
lines changed

QSFML/include/QSFMLCanvas.hpp

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,54 +12,58 @@
1212
#include <QMouseEvent>
1313
#include <QWheelEvent>
1414
#include <QKeyEvent>
15+
#include <qdebug.h>
1516
#include <QWidget>
1617
#include <QTimer>
1718

1819
namespace qsf
1920
{
20-
class QSFMLWidget
21-
: public QWidget,
22-
public sf::RenderWindow
23-
{
24-
public:
25-
explicit QSFMLWidget(QWidget *parent, const QPoint& Position, const QSize& Size, unsigned int FrameTime = 7); //Defauld frame time should give about 144 FPS
26-
virtual ~QSFMLWidget();
21+
class QSFMLWidget
22+
: public QWidget,
23+
public sf::RenderWindow
24+
{
25+
public:
26+
explicit QSFMLWidget(QWidget *parent, const QPoint& Position, const QSize& Size, unsigned int FrameTime = 7); //Defauld frame time should give about 144 FPS
27+
virtual ~QSFMLWidget();
2728

28-
virtual void showEvent(QShowEvent*);
29-
virtual QPaintEngine* paintEngine() const;
30-
virtual void paintEvent(QPaintEvent*);
29+
virtual void showEvent(QShowEvent*);
30+
virtual QPaintEngine* paintEngine() const;
31+
virtual void paintEvent(QPaintEvent*);
3132

32-
virtual void OnInit();
33-
virtual void OnUpdate();
33+
virtual void OnInit();
34+
virtual void OnUpdate();
3435

35-
bool pollEvent(sf::Event & ev);
36+
bool pollEvent(sf::Event & ev);
3637

37-
/* =============== *
38-
* EVENTS HANDLING *
39-
* =============== */
40-
//Mouse buttons
41-
void mousePressEvent(QMouseEvent *e);
42-
void mouseReleaseEvent(QMouseEvent *e);
38+
/* =============== *
39+
* EVENTS HANDLING *
40+
* =============== */
41+
//Mouse buttons
42+
void mousePressEvent(QMouseEvent *e);
43+
void mouseReleaseEvent(QMouseEvent *e);
4344

44-
//Mouse wheel
45-
void wheelEvent(QWheelEvent *e);
45+
//Mouse wheel
46+
void wheelEvent(QWheelEvent *e);
4647

47-
//Keyboard
48-
void keyPressEvent(QKeyEvent *e);
49-
void keyReleaseEvent(QKeyEvent *e);
48+
//Keyboard
49+
void keyPressEvent(QKeyEvent *e);
50+
void keyReleaseEvent(QKeyEvent *e);
5051

51-
private:
52-
bool _initialized;
53-
QTimer refreshTimer;
54-
sf::Time _frameTime;
55-
sf::Clock frameClock;
52+
//Resize event
53+
void resizeEvent(QResizeEvent *event);
5654

57-
protected:
58-
const bool & initialized = _initialized;
59-
const sf::Time & frameTime = _frameTime;
55+
private:
56+
bool _initialized;
57+
QTimer refreshTimer;
58+
sf::Time _frameTime;
59+
sf::Clock frameClock;
6060

61-
void pushEvent(sf::Event & ev);
62-
std::vector<sf::Event> SfEvents;
63-
};
61+
protected:
62+
const bool & initialized = _initialized;
63+
const sf::Time & frameTime = _frameTime;
64+
65+
void pushEvent(sf::Event & ev);
66+
std::vector<sf::Event> SfEvents;
67+
};
6468
}
6569
#endif // QSMLCANVAS_H

QSFML/src/QSFMLCanvasEventHandler.cpp

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,59 +9,63 @@
99

1010
namespace qsf
1111
{
12-
//Mouse buttons events
13-
void QSFMLWidget::mousePressEvent(QMouseEvent *e)
14-
{
15-
sf::Event ev;
16-
ev.type = sf::Event::MouseButtonPressed;
12+
//Mouse buttons events
13+
void QSFMLWidget::mousePressEvent(QMouseEvent *e) {
14+
sf::Event ev;
15+
ev.type = sf::Event::MouseButtonPressed;
1716

18-
ev.mouseButton.button = (e->buttons() == Qt::RightButton ? sf::Mouse::Right : sf::Mouse::Left);
19-
ev.mouseButton.x = e->localPos().x();
20-
ev.mouseButton.y = e->localPos().y();
17+
ev.mouseButton.button = (e->buttons() == Qt::RightButton ? sf::Mouse::Right : sf::Mouse::Left);
18+
ev.mouseButton.x = e->localPos().x();
19+
ev.mouseButton.y = e->localPos().y();
2120

22-
pushEvent(ev);
23-
}
24-
void QSFMLWidget::mouseReleaseEvent(QMouseEvent *e)
25-
{
26-
sf::Event ev;
27-
ev.type = sf::Event::MouseButtonReleased;
21+
pushEvent(ev);
22+
}
23+
void QSFMLWidget::mouseReleaseEvent(QMouseEvent *e) {
24+
sf::Event ev;
25+
ev.type = sf::Event::MouseButtonReleased;
2826

29-
ev.mouseButton.button = (e->buttons() == Qt::RightButton ? sf::Mouse::Right : sf::Mouse::Left);
30-
ev.mouseButton.x = e->localPos().x();
31-
ev.mouseButton.y = e->localPos().y();
27+
ev.mouseButton.button = (e->buttons() == Qt::RightButton ? sf::Mouse::Right : sf::Mouse::Left);
28+
ev.mouseButton.x = e->localPos().x();
29+
ev.mouseButton.y = e->localPos().y();
3230

33-
pushEvent(ev);
34-
}
31+
pushEvent(ev);
32+
}
3533

36-
//Mouse Wheel events
37-
void QSFMLWidget::wheelEvent(QWheelEvent *e)
38-
{
39-
sf::Event ev;
40-
ev.type = sf::Event::MouseWheelMoved;
34+
//Mouse Wheel event
35+
void QSFMLWidget::wheelEvent(QWheelEvent *e) {
36+
sf::Event ev;
37+
ev.type = sf::Event::MouseWheelMoved;
4138

42-
ev.mouseWheel.delta = e->delta() / 8 / 15;
43-
ev.mouseWheel.x = sf::Mouse::getPosition(*this).x;
44-
ev.mouseWheel.y = sf::Mouse::getPosition(*this).y;
39+
ev.mouseWheel.delta = e->delta() / 8 / 15;
40+
ev.mouseWheel.x = sf::Mouse::getPosition(*this).x;
41+
ev.mouseWheel.y = sf::Mouse::getPosition(*this).y;
4542

46-
pushEvent(ev);
47-
e->accept();
48-
}
43+
pushEvent(ev);
44+
e->accept();
45+
}
4946

50-
//Keyboard events
51-
void QSFMLWidget::keyPressEvent(QKeyEvent *event)
52-
{
53-
sf::Event ev;
54-
ev.type = sf::Event::KeyPressed;
55-
ev.key.code = QtKeyToSFML(event->key());
47+
//Keyboard events
48+
void QSFMLWidget::keyPressEvent(QKeyEvent *event) {
49+
sf::Event ev;
50+
ev.type = sf::Event::KeyPressed;
51+
ev.key.code = QtKeyToSFML(event->key());
5652

57-
pushEvent(ev);
58-
}
59-
void QSFMLWidget::keyReleaseEvent(QKeyEvent *event)
60-
{
61-
sf::Event ev;
62-
ev.type = sf::Event::KeyReleased;
63-
ev.key.code = QtKeyToSFML(event->key());
53+
pushEvent(ev);
54+
}
55+
void QSFMLWidget::keyReleaseEvent(QKeyEvent *event) {
56+
sf::Event ev;
57+
ev.type = sf::Event::KeyReleased;
58+
ev.key.code = QtKeyToSFML(event->key());
6459

65-
pushEvent(ev);
66-
}
60+
pushEvent(ev);
61+
}
62+
63+
//Resize event
64+
void QSFMLWidget::resizeEvent(QResizeEvent *event) {
65+
sf::Event ev;
66+
ev.type = sf::Event::Resized;
67+
ev.size = { event->size().width(), event->size().height() };
68+
69+
pushEvent(ev);
70+
}
6771
}

0 commit comments

Comments
 (0)