Mercurial > hg > svgui
comparison view/Overview.cpp @ 663:1a0fdad4af4d tonioni
Merge from the default branch
author | Chris Cannam |
---|---|
date | Fri, 12 Jul 2013 13:25:22 +0100 |
parents | 77fa3fdbfc7e |
children | 1a0dfcbffaf1 |
comparison
equal
deleted
inserted
replaced
660:8663a831838f | 663:1a0fdad4af4d |
---|---|
19 #include "base/ZoomConstraint.h" | 19 #include "base/ZoomConstraint.h" |
20 | 20 |
21 #include <QPaintEvent> | 21 #include <QPaintEvent> |
22 #include <QPainter> | 22 #include <QPainter> |
23 #include <iostream> | 23 #include <iostream> |
24 | |
25 //#define DEBUG_OVERVIEW 1 | |
24 | 26 |
25 using std::cerr; | 27 using std::cerr; |
26 using std::endl; | 28 using std::endl; |
27 | 29 |
28 Overview::Overview(QWidget *w) : | 30 Overview::Overview(QWidget *w) : |
88 m_views.erase(view); | 90 m_views.erase(view); |
89 update(); | 91 update(); |
90 } | 92 } |
91 | 93 |
92 void | 94 void |
93 Overview::globalCentreFrameChanged(unsigned long) | 95 Overview::globalCentreFrameChanged(unsigned long f) |
94 { | 96 { |
97 #ifdef DEBUG_OVERVIEW | |
98 std::cerr << "Overview::globalCentreFrameChanged: " << f << std::endl; | |
99 #endif | |
95 update(); | 100 update(); |
96 } | 101 } |
97 | 102 |
98 void | 103 void |
99 Overview::viewCentreFrameChanged(View *v, unsigned long) | 104 Overview::viewCentreFrameChanged(View *v, unsigned long f) |
100 { | 105 { |
106 #ifdef DEBUG_OVERVIEW | |
107 std::cerr << "Overview[" << this << "]::viewCentreFrameChanged(" << v << "): " << f << std::endl; | |
108 #endif | |
101 if (m_views.find(v) != m_views.end()) { | 109 if (m_views.find(v) != m_views.end()) { |
102 update(); | 110 update(); |
103 } | 111 } |
104 } | 112 } |
105 | 113 |
113 } | 121 } |
114 | 122 |
115 void | 123 void |
116 Overview::viewManagerPlaybackFrameChanged(unsigned long f) | 124 Overview::viewManagerPlaybackFrameChanged(unsigned long f) |
117 { | 125 { |
126 #ifdef DEBUG_OVERVIEW | |
127 std::cerr << "Overview[" << this << "]::viewManagerPlaybackFrameChanged(" << f << "): " << f << std::endl; | |
128 #endif | |
129 | |
118 bool changed = false; | 130 bool changed = false; |
119 | 131 |
120 f = getAlignedPlaybackFrame(); | 132 f = getAlignedPlaybackFrame(); |
121 | 133 |
122 if (getXForFrame(m_playPointerFrame) != getXForFrame(f)) changed = true; | 134 if (getXForFrame(m_playPointerFrame) != getXForFrame(f)) changed = true; |
128 void | 140 void |
129 Overview::paintEvent(QPaintEvent *e) | 141 Overview::paintEvent(QPaintEvent *e) |
130 { | 142 { |
131 // Recalculate zoom in case the size of the widget has changed. | 143 // Recalculate zoom in case the size of the widget has changed. |
132 | 144 |
133 // SVDEBUG << "Overview::paintEvent: width is " << width() << ", centre frame " << m_centreFrame << endl; | 145 #ifdef DEBUG_OVERVIEW |
146 std::cerr << "Overview::paintEvent: width is " << width() << ", centre frame " << m_centreFrame << std::endl; | |
147 #endif | |
134 | 148 |
135 size_t startFrame = getModelsStartFrame(); | 149 size_t startFrame = getModelsStartFrame(); |
136 size_t frameCount = getModelsEndFrame() - getModelsStartFrame(); | 150 size_t frameCount = getModelsEndFrame() - getModelsStartFrame(); |
137 int zoomLevel = frameCount / width(); | 151 int zoomLevel = frameCount / width(); |
138 if (zoomLevel < 1) zoomLevel = 1; | 152 if (zoomLevel < 1) zoomLevel = 1; |
146 size_t centreFrame = startFrame + m_zoomLevel * (width() / 2); | 160 size_t centreFrame = startFrame + m_zoomLevel * (width() / 2); |
147 if (centreFrame > (startFrame + getModelsEndFrame())/2) { | 161 if (centreFrame > (startFrame + getModelsEndFrame())/2) { |
148 centreFrame = (startFrame + getModelsEndFrame())/2; | 162 centreFrame = (startFrame + getModelsEndFrame())/2; |
149 } | 163 } |
150 if (centreFrame != m_centreFrame) { | 164 if (centreFrame != m_centreFrame) { |
151 // SVDEBUG << "Overview::paintEvent: Centre frame changed from " | 165 #ifdef DEBUG_OVERVIEW |
152 // << m_centreFrame << " to " << centreFrame << " and thus start frame from " << getStartFrame(); | 166 std::cerr << "Overview::paintEvent: Centre frame changed from " |
167 << m_centreFrame << " to " << centreFrame << " and thus start frame from " << getStartFrame(); | |
168 #endif | |
153 m_centreFrame = centreFrame; | 169 m_centreFrame = centreFrame; |
154 // SVDEBUG << " to " << getStartFrame() << endl; | 170 #ifdef DEBUG_OVERVIEW |
171 std::cerr << " to " << getStartFrame() << std::endl; | |
172 #endif | |
155 emit centreFrameChanged(m_centreFrame, false, PlaybackIgnore); | 173 emit centreFrameChanged(m_centreFrame, false, PlaybackIgnore); |
156 } | 174 } |
157 | 175 |
158 View::paintEvent(e); | 176 View::paintEvent(e); |
159 | 177 |
257 } | 275 } |
258 | 276 |
259 if (std::max(m_centreFrame, newCentreFrame) - | 277 if (std::max(m_centreFrame, newCentreFrame) - |
260 std::min(m_centreFrame, newCentreFrame) > size_t(m_zoomLevel)) { | 278 std::min(m_centreFrame, newCentreFrame) > size_t(m_zoomLevel)) { |
261 size_t rf = alignToReference(newCentreFrame); | 279 size_t rf = alignToReference(newCentreFrame); |
280 #ifdef DEBUG_OVERVIEW | |
281 std::cerr << "Overview::mouseMoveEvent: x " << e->x() << " and click x " << m_clickPos.x() << " -> frame " << newCentreFrame << " -> rf " << rf << std::endl; | |
282 #endif | |
262 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); | 283 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); |
263 } | 284 } |
264 } | 285 } |
265 | 286 |
266 void | 287 void |
267 Overview::mouseDoubleClickEvent(QMouseEvent *e) | 288 Overview::mouseDoubleClickEvent(QMouseEvent *e) |
268 { | 289 { |
269 long frame = getFrameForX(e->x()); | 290 long frame = getFrameForX(e->x()); |
270 size_t rf = 0; | 291 size_t rf = 0; |
271 if (frame > 0) rf = alignToReference(frame); | 292 if (frame > 0) rf = alignToReference(frame); |
293 #ifdef DEBUG_OVERVIEW | |
294 std::cerr << "Overview::mouseDoubleClickEvent: frame " << frame << " -> rf " << rf << std::endl; | |
295 #endif | |
296 m_clickedInRange = false; // we're not starting a drag with the second click | |
272 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); | 297 emit centreFrameChanged(rf, true, PlaybackScrollContinuous); |
273 } | 298 } |
274 | 299 |
275 void | 300 void |
276 Overview::enterEvent(QEvent *) | 301 Overview::enterEvent(QEvent *) |