Mercurial > hg > svgui
comparison view/Overview.cpp @ 1326:97c68bffbda6 zoom
More ZoomLevel updates
| author | Chris Cannam |
|---|---|
| date | Thu, 20 Sep 2018 10:45:24 +0100 |
| parents | bc2cb82050a0 |
| children | b39cd8fb309f |
comparison
equal
deleted
inserted
replaced
| 1325:bc2cb82050a0 | 1326:97c68bffbda6 |
|---|---|
| 122 update(); | 122 update(); |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 | 125 |
| 126 void | 126 void |
| 127 Overview::viewZoomLevelChanged(View *v, int, bool) | 127 Overview::viewZoomLevelChanged(View *v, ZoomLevel, bool) |
| 128 { | 128 { |
| 129 if (v == this) return; | 129 if (v == this) return; |
| 130 if (m_views.find(v) != m_views.end()) { | 130 if (m_views.find(v) != m_views.end()) { |
| 131 update(); | 131 update(); |
| 132 } | 132 } |
| 188 if (zoomLevel != m_zoomLevel) { | 188 if (zoomLevel != m_zoomLevel) { |
| 189 m_zoomLevel = zoomLevel; | 189 m_zoomLevel = zoomLevel; |
| 190 emit zoomLevelChanged(m_zoomLevel, m_followZoom); | 190 emit zoomLevelChanged(m_zoomLevel, m_followZoom); |
| 191 } | 191 } |
| 192 | 192 |
| 193 sv_frame_t centreFrame = startFrame + m_zoomLevel * (width() / 2); | 193 sv_frame_t centreFrame = startFrame + |
| 194 sv_frame_t(round(m_zoomLevel.pixelsToFrames(width()/2))); | |
| 195 | |
| 194 if (centreFrame > (startFrame + getModelsEndFrame())/2) { | 196 if (centreFrame > (startFrame + getModelsEndFrame())/2) { |
| 195 centreFrame = (startFrame + getModelsEndFrame())/2; | 197 centreFrame = (startFrame + getModelsEndFrame())/2; |
| 196 } | 198 } |
| 197 if (centreFrame != m_centreFrame) { | 199 if (centreFrame != m_centreFrame) { |
| 198 #ifdef DEBUG_OVERVIEW | 200 #ifdef DEBUG_OVERVIEW |
| 309 Overview::mouseMoveEvent(QMouseEvent *e) | 311 Overview::mouseMoveEvent(QMouseEvent *e) |
| 310 { | 312 { |
| 311 if (!m_clickedInRange) return; | 313 if (!m_clickedInRange) return; |
| 312 | 314 |
| 313 int xoff = int(e->x()) - int(m_clickPos.x()); | 315 int xoff = int(e->x()) - int(m_clickPos.x()); |
| 314 sv_frame_t frameOff = xoff * m_zoomLevel; | 316 sv_frame_t frameOff = sv_frame_t(round(m_zoomLevel.pixelsToFrames(xoff))); |
| 315 | 317 |
| 316 sv_frame_t newCentreFrame = m_dragCentreFrame; | 318 sv_frame_t newCentreFrame = m_dragCentreFrame; |
| 317 if (frameOff > 0) { | 319 if (frameOff > 0) { |
| 318 newCentreFrame += frameOff; | 320 newCentreFrame += frameOff; |
| 319 } else if (newCentreFrame >= -frameOff) { | 321 } else if (newCentreFrame >= -frameOff) { |
| 326 newCentreFrame = getModelsEndFrame(); | 328 newCentreFrame = getModelsEndFrame(); |
| 327 if (newCentreFrame > 0) --newCentreFrame; | 329 if (newCentreFrame > 0) --newCentreFrame; |
| 328 } | 330 } |
| 329 | 331 |
| 330 if (std::max(m_centreFrame, newCentreFrame) - | 332 if (std::max(m_centreFrame, newCentreFrame) - |
| 331 std::min(m_centreFrame, newCentreFrame) > m_zoomLevel) { | 333 std::min(m_centreFrame, newCentreFrame) > |
| 334 m_zoomLevel.pixelsToFrames(1)) { | |
| 332 sv_frame_t rf = alignToReference(newCentreFrame); | 335 sv_frame_t rf = alignToReference(newCentreFrame); |
| 333 #ifdef DEBUG_OVERVIEW | 336 #ifdef DEBUG_OVERVIEW |
| 334 cerr << "Overview::mouseMoveEvent: x " << e->x() << " and click x " << m_clickPos.x() << " -> frame " << newCentreFrame << " -> rf " << rf << endl; | 337 cerr << "Overview::mouseMoveEvent: x " << e->x() << " and click x " << m_clickPos.x() << " -> frame " << newCentreFrame << " -> rf " << rf << endl; |
| 335 #endif | 338 #endif |
| 336 if (m_followPlay == PlaybackScrollContinuous || | 339 if (m_followPlay == PlaybackScrollContinuous || |
