Mercurial > hg > orthanc-stone
comparison Applications/Qt/QCairoWidget.h @ 277:a38465cc909f am-2
Qt: refresh ok + mouse interaction ok
author | am@osimis.io |
---|---|
date | Mon, 27 Aug 2018 14:41:49 +0200 |
parents | 5de5699ad570 |
children | 829163c6efc1 |
comparison
equal
deleted
inserted
replaced
276:5de5699ad570 | 277:a38465cc909f |
---|---|
7 #include <QWidget> | 7 #include <QWidget> |
8 #include <QGestureEvent> | 8 #include <QGestureEvent> |
9 #include <memory> | 9 #include <memory> |
10 #include <cassert> | 10 #include <cassert> |
11 | 11 |
12 class QCairoWidget : public QWidget | 12 class QCairoWidget : public QWidget, public OrthancStone::IViewport::IObserver |
13 { | 13 { |
14 Q_OBJECT | 14 Q_OBJECT |
15 | 15 |
16 private: | 16 private: |
17 std::auto_ptr<QImage> image_; | 17 std::auto_ptr<QImage> image_; |
18 OrthancStone::CairoSurface surface_; | 18 OrthancStone::CairoSurface surface_; |
19 OrthancStone::BasicNativeApplicationContext* context_; | 19 OrthancStone::BasicNativeApplicationContext* context_; |
20 bool isMouseOver_; | |
21 int mouseOverX_; | |
22 int mouseOverY_; | |
23 bool updateNeeded_; | |
24 | |
25 std::auto_ptr<OrthancStone::IMouseTracker> mouseTracker_; | |
26 | |
27 // void UpdateMouseCoordinates(int x, | |
28 // int y); | |
29 | 20 |
30 protected: | 21 protected: |
31 void paintEvent(QPaintEvent *event); | 22 virtual void paintEvent(QPaintEvent *event); |
32 | 23 |
33 void resizeEvent(QResizeEvent *event); | 24 virtual void resizeEvent(QResizeEvent *event); |
34 | 25 |
35 // void mouseMoveEvent(QMouseEvent *event); | 26 virtual void mouseMoveEvent(QMouseEvent *event); |
36 | 27 |
37 // void mousePressEvent(QMouseEvent *event); | 28 virtual void mousePressEvent(QMouseEvent *event); |
38 | 29 |
39 // void mouseReleaseEvent(QMouseEvent *event); | 30 virtual void mouseReleaseEvent(QMouseEvent *event); |
40 | 31 |
41 // void wheelEvent(QWheelEvent *event); | 32 virtual void wheelEvent(QWheelEvent *event); |
42 | 33 |
43 public: | 34 public: |
44 explicit QCairoWidget(QWidget *parent); | 35 explicit QCairoWidget(QWidget *parent); |
45 | 36 |
46 virtual ~QCairoWidget(); | 37 virtual ~QCairoWidget(); |
47 | 38 |
48 void SetContext(OrthancStone::BasicNativeApplicationContext& context) | 39 void SetContext(OrthancStone::BasicNativeApplicationContext& context); |
40 | |
41 virtual void OnViewportContentChanged(const OrthancStone::IViewport& /*sceneNotUsed*/) | |
49 { | 42 { |
50 context_ = &context; | 43 update(); // schedule a repaint (handled by Qt) |
44 emit ContentChanged(); | |
51 } | 45 } |
52 | 46 |
53 // void SetCentralWidget(OrthancStone::CairoWidget& widget) | 47 signals: |
54 // { | |
55 // centralWidget_ = &widget; | |
56 // } | |
57 | 48 |
58 // void SetScene(OrthancStone::ICairoScene& scene); | 49 void ContentChanged(); |
59 | |
60 // bool HasScene() const | |
61 // { | |
62 // return scene_ != NULL; | |
63 // } | |
64 | |
65 // OrthancStone::ICairoScene& GetScene() const | |
66 // { | |
67 // assert(HasScene()); | |
68 // return *scene_; | |
69 // } | |
70 | |
71 // virtual void SignalUpdatedScene(OrthancStone::ICairoScene& scene) | |
72 // { | |
73 // //printf("UPDATE NEEDED\n"); fflush(stdout); | |
74 // updateNeeded_ = true; | |
75 // } | |
76 | |
77 signals: | |
78 // void SliceChanged(int position); | |
79 | |
80 // void RangeChanged(unsigned int countSlices); | |
81 | |
82 // void PositionChanged(const QString& position); | |
83 | |
84 // void ContentChanged(); | |
85 | 50 |
86 public slots: | 51 public slots: |
87 // void SetDefaultView(); | |
88 | 52 |
89 // void Refresh(); | |
90 | |
91 // void SetSlice(int index); | |
92 }; | 53 }; |