# HG changeset patch # User Chris Cannam # Date 1481555932 0 # Node ID 57d192e2633160cdf035cf5f7bccd19404d56e41 # Parent 6605984fa98f40534b2706555979a16592733850 Some hackery toward having a zoomlevel type diff -r 6605984fa98f -r 57d192e26331 layer/LayerGeometryProvider.h --- a/layer/LayerGeometryProvider.h Fri Dec 09 18:01:55 2016 +0000 +++ b/layer/LayerGeometryProvider.h Mon Dec 12 15:18:52 2016 +0000 @@ -147,9 +147,10 @@ bool &log) const = 0; /** - * Return the zoom level, i.e. the number of frames per pixel + * Return the zoom level, i.e. the number of frames per pixel or + * pixels per frame */ - virtual int getZoomLevel() const = 0; + virtual ZoomLevel getZoomLevel() const = 0; /** * To be called from a layer, to obtain the extent of the surface diff -r 6605984fa98f -r 57d192e26331 view/AlignmentView.cpp --- a/view/AlignmentView.cpp Fri Dec 09 18:01:55 2016 +0000 +++ b/view/AlignmentView.cpp Mon Dec 12 15:18:52 2016 +0000 @@ -57,14 +57,14 @@ } void -AlignmentView::viewAboveZoomLevelChanged(int level, bool) +AlignmentView::viewAboveZoomLevelChanged(ZoomLevel level, bool) { m_zoomLevel = level; update(); } void -AlignmentView::viewBelowZoomLevelChanged(int, bool) +AlignmentView::viewBelowZoomLevelChanged(ZoomLevel, bool) { update(); } @@ -80,9 +80,9 @@ if (m_above) { connect(m_above, - SIGNAL(zoomLevelChanged(int, bool)), + SIGNAL(zoomLevelChanged(ZoomLevel, bool)), this, - SLOT(viewAboveZoomLevelChanged(int, bool))); + SLOT(viewAboveZoomLevelChanged(ZoomLevel, bool))); } } @@ -97,9 +97,9 @@ if (m_below) { connect(m_below, - SIGNAL(zoomLevelChanged(int, bool)), + SIGNAL(zoomLevelChanged(ZoomLevel, bool)), this, - SLOT(viewBelowZoomLevelChanged(int, bool))); + SLOT(viewBelowZoomLevelChanged(ZoomLevel, bool))); } } diff -r 6605984fa98f -r 57d192e26331 view/AlignmentView.h --- a/view/AlignmentView.h Fri Dec 09 18:01:55 2016 +0000 +++ b/view/AlignmentView.h Mon Dec 12 15:18:52 2016 +0000 @@ -32,8 +32,8 @@ public slots: virtual void globalCentreFrameChanged(sv_frame_t); virtual void viewCentreFrameChanged(View *, sv_frame_t); - virtual void viewAboveZoomLevelChanged(int, bool); - virtual void viewBelowZoomLevelChanged(int, bool); + virtual void viewAboveZoomLevelChanged(ZoomLevel, bool); + virtual void viewBelowZoomLevelChanged(ZoomLevel, bool); virtual void viewManagerPlaybackFrameChanged(sv_frame_t); protected: diff -r 6605984fa98f -r 57d192e26331 view/Overview.cpp --- a/view/Overview.cpp Fri Dec 09 18:01:55 2016 +0000 +++ b/view/Overview.cpp Mon Dec 12 15:18:52 2016 +0000 @@ -47,10 +47,9 @@ bool zoomChanged = false; sv_frame_t frameCount = getModelsEndFrame() - getModelsStartFrame(); - int zoomLevel = int(frameCount / width()); - if (zoomLevel < 1) zoomLevel = 1; - zoomLevel = getZoomConstraintBlockSize(zoomLevel, - ZoomConstraint::RoundUp); + ZoomLevel zoomLevel { ZoomLevel::FramesPerPixel, int(frameCount / width()) }; + if (zoomLevel.level < 1) zoomLevel.level = 1; + zoomLevel = getZoomConstraintBlockSize(zoomLevel, ZoomConstraint::RoundUp); if (zoomLevel != m_zoomLevel) { zoomChanged = true; } diff -r 6605984fa98f -r 57d192e26331 view/View.cpp --- a/view/View.cpp Fri Dec 09 18:01:55 2016 +0000 +++ b/view/View.cpp Mon Dec 12 15:18:52 2016 +0000 @@ -444,7 +444,7 @@ } } -int +ZoomLevel View::getZoomLevel() const { #ifdef DEBUG_VIEW_WIDGET_PAINT @@ -473,7 +473,7 @@ } void -View::setZoomLevel(int z) +View::setZoomLevel(ZoomLevel z) { int dpratio = effectiveDevicePixelRatio(); if (z < dpratio) return; @@ -721,13 +721,13 @@ m_manager->disconnect(this, SLOT(globalCentreFrameChanged(sv_frame_t))); m_manager->disconnect(this, SLOT(viewCentreFrameChanged(View *, sv_frame_t))); m_manager->disconnect(this, SLOT(viewManagerPlaybackFrameChanged(sv_frame_t))); - m_manager->disconnect(this, SLOT(viewZoomLevelChanged(View *, int, bool))); + m_manager->disconnect(this, SLOT(viewZoomLevelChanged(View *, ZoomLevel, bool))); m_manager->disconnect(this, SLOT(toolModeChanged())); m_manager->disconnect(this, SLOT(selectionChanged())); m_manager->disconnect(this, SLOT(overlayModeChanged())); m_manager->disconnect(this, SLOT(zoomWheelsEnabledChanged())); disconnect(m_manager, SLOT(viewCentreFrameChanged(sv_frame_t, bool, PlaybackFollowMode))); - disconnect(m_manager, SLOT(zoomLevelChanged(int, bool))); + disconnect(m_manager, SLOT(zoomLevelChanged(ZoomLevel, bool))); } m_manager = manager; @@ -739,8 +739,8 @@ connect(m_manager, SIGNAL(playbackFrameChanged(sv_frame_t)), this, SLOT(viewManagerPlaybackFrameChanged(sv_frame_t))); - connect(m_manager, SIGNAL(viewZoomLevelChanged(View *, int, bool)), - this, SLOT(viewZoomLevelChanged(View *, int, bool))); + connect(m_manager, SIGNAL(viewZoomLevelChanged(View *, ZoomLevel, bool)), + this, SLOT(viewZoomLevelChanged(View *, ZoomLevel, bool))); connect(m_manager, SIGNAL(toolModeChanged()), this, SLOT(toolModeChanged())); @@ -760,8 +760,8 @@ m_manager, SLOT(viewCentreFrameChanged(sv_frame_t, bool, PlaybackFollowMode))); - connect(this, SIGNAL(zoomLevelChanged(int, bool)), - m_manager, SLOT(viewZoomLevelChanged(int, bool))); + connect(this, SIGNAL(zoomLevelChanged(ZoomLevel, bool)), + m_manager, SLOT(viewZoomLevelChanged(ZoomLevel, bool))); switch (m_followPlay) { @@ -1123,7 +1123,7 @@ } void -View::viewZoomLevelChanged(View *p, int z, bool locked) +View::viewZoomLevelChanged(View *p, ZoomLevel z, bool locked) { #ifdef DEBUG_VIEW_WIDGET_PAINT cerr << "View[" << this << "]: viewZoomLevelChanged(" << p << ", " << z << ", " << locked << ")" << endl; @@ -1450,14 +1450,14 @@ void View::zoom(bool in) { - int newZoomLevel = m_zoomLevel; + ZoomLevel newZoomLevel = m_zoomLevel; if (in) { - newZoomLevel = getZoomConstraintBlockSize(newZoomLevel - 1, - ZoomConstraint::RoundDown); + newZoomLevel = getZoomConstraintLevel(m_zoomLevel.decremented(), + ZoomConstraint::RoundDown); } else { - newZoomLevel = getZoomConstraintBlockSize(newZoomLevel + 1, - ZoomConstraint::RoundUp); + newZoomLevel = getZoomConstraintLevel(m_zoomLevel.incremented(), + ZoomConstraint::RoundUp); } if (newZoomLevel != m_zoomLevel) { diff -r 6605984fa98f -r 57d192e26331 view/View.h --- a/view/View.h Fri Dec 09 18:01:55 2016 +0000 +++ b/view/View.h Mon Dec 12 15:18:52 2016 +0000 @@ -148,16 +148,17 @@ bool logarithmic) const; /** - * Return the zoom level, i.e. the number of frames per pixel + * Return the zoom level, i.e. the number of frames per pixel or + * pixels per frame */ - int getZoomLevel() const; + ZoomLevel getZoomLevel() const; /** - * Set the zoom level, i.e. the number of frames per pixel. The - * centre frame will be unchanged; the start and end frames will - * change. + * Set the zoom level, i.e. the number of frames per pixel or + * pixels per frame. The centre frame will be unchanged; the + * start and end frames will change. */ - virtual void setZoomLevel(int z); + virtual void setZoomLevel(ZoomLevel z); /** * Zoom in or out. @@ -370,7 +371,7 @@ bool globalScroll, PlaybackFollowMode followMode); - void zoomLevelChanged(int level, bool locked); + void zoomLevelChanged(ZoomLevel level, bool locked); void contextHelpChanged(const QString &); @@ -388,7 +389,7 @@ virtual void globalCentreFrameChanged(sv_frame_t); virtual void viewCentreFrameChanged(View *, sv_frame_t); virtual void viewManagerPlaybackFrameChanged(sv_frame_t); - virtual void viewZoomLevelChanged(View *, int, bool); + virtual void viewZoomLevelChanged(View *, ZoomLevel, bool); virtual void propertyContainerSelected(View *, PropertyContainer *pc); @@ -426,9 +427,9 @@ bool areLayersScrollable() const; LayerList getScrollableBackLayers(bool testChanged, bool &changed) const; LayerList getNonScrollableFrontLayers(bool testChanged, bool &changed) const; - int getZoomConstraintBlockSize(int blockSize, - ZoomConstraint::RoundingDirection dir = - ZoomConstraint::RoundNearest) const; + ZoomLevel getZoomConstraintLevel(ZoomLevel level, + ZoomConstraint::RoundingDirection dir = + ZoomConstraint::RoundNearest) const; // True if the top layer(s) use colours for meaningful things. If // this is the case, selections will be shown using unfilled boxes @@ -451,7 +452,7 @@ int effectiveDevicePixelRatio() const; sv_frame_t m_centreFrame; - int m_zoomLevel; + ZoomLevel m_zoomLevel; bool m_followPan; bool m_followZoom; PlaybackFollowMode m_followPlay; @@ -463,7 +464,7 @@ QPixmap *m_cache; QPixmap *m_buffer; sv_frame_t m_cacheCentreFrame; - int m_cacheZoomLevel; + ZoomLevel m_cacheZoomLevel; bool m_selectionCached; bool m_deleting;