Mercurial > hg > svgui
comparison view/Overview.cpp @ 706:97ea68f62c1f imaf_enc
Merge from default branch
author | Chris Cannam |
---|---|
date | Thu, 05 Dec 2013 09:47:02 +0000 |
parents | 1a0dfcbffaf1 |
children | cf1e8a1abb7b 4c8ca536b54f |
comparison
equal
deleted
inserted
replaced
678:26c5f7fd4807 | 706:97ea68f62c1f |
---|---|
22 #include <QPainter> | 22 #include <QPainter> |
23 #include <iostream> | 23 #include <iostream> |
24 | 24 |
25 //#define DEBUG_OVERVIEW 1 | 25 //#define DEBUG_OVERVIEW 1 |
26 | 26 |
27 using std::cerr; | 27 |
28 using std::endl; | 28 |
29 | 29 |
30 Overview::Overview(QWidget *w) : | 30 Overview::Overview(QWidget *w) : |
31 View(w, false), | 31 View(w, false), |
32 m_clickedInRange(false) | 32 m_clickedInRange(false) |
33 { | 33 { |
93 | 93 |
94 void | 94 void |
95 Overview::globalCentreFrameChanged(unsigned long f) | 95 Overview::globalCentreFrameChanged(unsigned long f) |
96 { | 96 { |
97 #ifdef DEBUG_OVERVIEW | 97 #ifdef DEBUG_OVERVIEW |
98 std::cerr << "Overview::globalCentreFrameChanged: " << f << std::endl; | 98 cerr << "Overview::globalCentreFrameChanged: " << f << endl; |
99 #endif | 99 #endif |
100 update(); | 100 update(); |
101 } | 101 } |
102 | 102 |
103 void | 103 void |
104 Overview::viewCentreFrameChanged(View *v, unsigned long f) | 104 Overview::viewCentreFrameChanged(View *v, unsigned long f) |
105 { | 105 { |
106 #ifdef DEBUG_OVERVIEW | 106 #ifdef DEBUG_OVERVIEW |
107 std::cerr << "Overview[" << this << "]::viewCentreFrameChanged(" << v << "): " << f << std::endl; | 107 cerr << "Overview[" << this << "]::viewCentreFrameChanged(" << v << "): " << f << endl; |
108 #endif | 108 #endif |
109 if (m_views.find(v) != m_views.end()) { | 109 if (m_views.find(v) != m_views.end()) { |
110 update(); | 110 update(); |
111 } | 111 } |
112 } | 112 } |
122 | 122 |
123 void | 123 void |
124 Overview::viewManagerPlaybackFrameChanged(unsigned long f) | 124 Overview::viewManagerPlaybackFrameChanged(unsigned long f) |
125 { | 125 { |
126 #ifdef DEBUG_OVERVIEW | 126 #ifdef DEBUG_OVERVIEW |
127 std::cerr << "Overview[" << this << "]::viewManagerPlaybackFrameChanged(" << f << "): " << f << std::endl; | 127 cerr << "Overview[" << this << "]::viewManagerPlaybackFrameChanged(" << f << "): " << f << endl; |
128 #endif | 128 #endif |
129 | 129 |
130 bool changed = false; | 130 bool changed = false; |
131 | 131 |
132 f = getAlignedPlaybackFrame(); | 132 f = getAlignedPlaybackFrame(); |
141 Overview::paintEvent(QPaintEvent *e) | 141 Overview::paintEvent(QPaintEvent *e) |
142 { | 142 { |
143 // Recalculate zoom in case the size of the widget has changed. | 143 // Recalculate zoom in case the size of the widget has changed. |
144 | 144 |
145 #ifdef DEBUG_OVERVIEW | 145 #ifdef DEBUG_OVERVIEW |
146 std::cerr << "Overview::paintEvent: width is " << width() << ", centre frame " << m_centreFrame << std::endl; | 146 cerr << "Overview::paintEvent: width is " << width() << ", centre frame " << m_centreFrame << endl; |
147 #endif | 147 #endif |
148 | 148 |
149 size_t startFrame = getModelsStartFrame(); | 149 size_t startFrame = getModelsStartFrame(); |
150 size_t frameCount = getModelsEndFrame() - getModelsStartFrame(); | 150 size_t frameCount = getModelsEndFrame() - getModelsStartFrame(); |
151 int zoomLevel = frameCount / width(); | 151 int zoomLevel = frameCount / width(); |
161 if (centreFrame > (startFrame + getModelsEndFrame())/2) { | 161 if (centreFrame > (startFrame + getModelsEndFrame())/2) { |
162 centreFrame = (startFrame + getModelsEndFrame())/2; | 162 centreFrame = (startFrame + getModelsEndFrame())/2; |
163 } | 163 } |
164 if (centreFrame != m_centreFrame) { | 164 if (centreFrame != m_centreFrame) { |
165 #ifdef DEBUG_OVERVIEW | 165 #ifdef DEBUG_OVERVIEW |
166 std::cerr << "Overview::paintEvent: Centre frame changed from " | 166 cerr << "Overview::paintEvent: Centre frame changed from " |
167 << m_centreFrame << " to " << centreFrame << " and thus start frame from " << getStartFrame(); | 167 << m_centreFrame << " to " << centreFrame << " and thus start frame from " << getStartFrame(); |
168 #endif | 168 #endif |
169 m_centreFrame = centreFrame; | 169 m_centreFrame = centreFrame; |
170 #ifdef DEBUG_OVERVIEW | 170 #ifdef DEBUG_OVERVIEW |
171 std::cerr << " to " << getStartFrame() << std::endl; | 171 cerr << " to " << getStartFrame() << endl; |
172 #endif | 172 #endif |
173 emit centreFrameChanged(m_centreFrame, false, PlaybackIgnore); | 173 emit centreFrameChanged(m_centreFrame, false, PlaybackIgnore); |
174 } | 174 } |
175 | 175 |
176 View::paintEvent(e); | 176 View::paintEvent(e); |
276 | 276 |
277 if (std::max(m_centreFrame, newCentreFrame) - | 277 if (std::max(m_centreFrame, newCentreFrame) - |
278 std::min(m_centreFrame, newCentreFrame) > size_t(m_zoomLevel)) { | 278 std::min(m_centreFrame, newCentreFrame) > size_t(m_zoomLevel)) { |
279 size_t rf = alignToReference(newCentreFrame); | 279 size_t rf = alignToReference(newCentreFrame); |
280 #ifdef DEBUG_OVERVIEW | 280 #ifdef DEBUG_OVERVIEW |
281 std::cerr << "Overview::mouseMoveEvent: x " << e->x() << " and click x " << m_clickPos.x() << " -> frame " << newCentreFrame << " -> rf " << rf << std::endl; | 281 cerr << "Overview::mouseMoveEvent: x " << e->x() << " and click x " << m_clickPos.x() << " -> frame " << newCentreFrame << " -> rf " << rf << endl; |
282 #endif | 282 #endif |
283 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); | 283 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); |
284 } | 284 } |
285 } | 285 } |
286 | 286 |
289 { | 289 { |
290 long frame = getFrameForX(e->x()); | 290 long frame = getFrameForX(e->x()); |
291 size_t rf = 0; | 291 size_t rf = 0; |
292 if (frame > 0) rf = alignToReference(frame); | 292 if (frame > 0) rf = alignToReference(frame); |
293 #ifdef DEBUG_OVERVIEW | 293 #ifdef DEBUG_OVERVIEW |
294 std::cerr << "Overview::mouseDoubleClickEvent: frame " << frame << " -> rf " << rf << std::endl; | 294 cerr << "Overview::mouseDoubleClickEvent: frame " << frame << " -> rf " << rf << endl; |
295 #endif | 295 #endif |
296 m_clickedInRange = false; // we're not starting a drag with the second click | 296 m_clickedInRange = false; // we're not starting a drag with the second click |
297 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); | 297 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); |
298 } | 298 } |
299 | 299 |