ZoomConstraint Class Reference

ZoomConstraint is a simple interface that describes a limitation on the available zoom sizes for a view, for example based on cache strategy or a (processing) window-size limitation. More...

#include <ZoomConstraint.h>

Inheritance diagram for ZoomConstraint:
Inheritance graph

Public Types

enum  RoundingDirection { RoundDown, RoundUp, RoundNearest }
 

Public Member Functions

virtual ~ZoomConstraint ()
 
virtual ZoomLevel getNearestZoomLevel (ZoomLevel requestedZoomLevel, RoundingDirection=RoundNearest) const
 Given an "ideal" zoom level (frames per pixel or pixels per frame) for a given zoom level, return the nearest viable block size for this constraint. More...
 
virtual ZoomLevel getMinZoomLevel () const
 Return the minimum zoom level within range for this constraint. More...
 
virtual ZoomLevel getMaxZoomLevel () const
 Return the maximum zoom level within range for this constraint. More...
 

Detailed Description

ZoomConstraint is a simple interface that describes a limitation on the available zoom sizes for a view, for example based on cache strategy or a (processing) window-size limitation.

The default ZoomConstraint imposes no actual constraint except for a nominal maximum.

Definition at line 32 of file ZoomConstraint.h.

Member Enumeration Documentation

Enumerator
RoundDown 
RoundUp 
RoundNearest 

Definition at line 37 of file ZoomConstraint.h.

Constructor & Destructor Documentation

virtual ZoomConstraint::~ZoomConstraint ( )
inlinevirtual

Definition at line 35 of file ZoomConstraint.h.

Member Function Documentation

virtual ZoomLevel ZoomConstraint::getNearestZoomLevel ( ZoomLevel  requestedZoomLevel,
RoundingDirection  = RoundNearest 
) const
inlinevirtual

Given an "ideal" zoom level (frames per pixel or pixels per frame) for a given zoom level, return the nearest viable block size for this constraint.

For example, if a block size of 1523 frames per pixel is requested but the underlying model only supports value summaries at powers-of-two block sizes, return 1024 or 2048 depending on the rounding direction supplied.

Reimplemented in PowerOfSqrtTwoZoomConstraint, PowerOfTwoZoomConstraint, and RelativelyFineZoomConstraint.

Definition at line 53 of file ZoomConstraint.h.

References ZoomLevel::FramesPerPixel, getMaxZoomLevel(), ZoomLevel::level, and ZoomLevel::zone.

virtual ZoomLevel ZoomConstraint::getMinZoomLevel ( ) const
inlinevirtual

Return the minimum zoom level within range for this constraint.

Individual views will probably want to limit this, for example in order to ensure that at least one or two samples fit in the current window size, or in order to save on interpolation cost.

Definition at line 71 of file ZoomConstraint.h.

References ZoomLevel::PixelsPerFrame.

Referenced by PowerOfSqrtTwoZoomConstraint::getNearestZoomLevel(), and PowerOfTwoZoomConstraint::getNearestZoomLevel().

virtual ZoomLevel ZoomConstraint::getMaxZoomLevel ( ) const
inlinevirtual

Return the maximum zoom level within range for this constraint.

This is quite large – individual views will probably want to limit how far a user might reasonably zoom out based on other factors such as the duration of the file.

Definition at line 81 of file ZoomConstraint.h.

References ZoomLevel::FramesPerPixel.

Referenced by PowerOfTwoZoomConstraint::getNearestBlockSize(), PowerOfSqrtTwoZoomConstraint::getNearestBlockSize(), PowerOfTwoZoomConstraint::getNearestZoomLevel(), and getNearestZoomLevel().


The documentation for this class was generated from the following file: