ZoomConstraint.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2006 Chris Cannam.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef SV_ZOOM_CONSTRAINT_H
17 #define SV_ZOOM_CONSTRAINT_H
18 
19 #include <stdlib.h>
20 
21 #include "ZoomLevel.h"
22 
33 {
34 public:
35  virtual ~ZoomConstraint() { }
36 
41  };
42 
53  virtual ZoomLevel getNearestZoomLevel(ZoomLevel requestedZoomLevel,
55  const
56  {
57  // canonicalise
58  if (requestedZoomLevel.level == 1) {
59  requestedZoomLevel.zone = ZoomLevel::FramesPerPixel;
60  }
61  if (getMaxZoomLevel() < requestedZoomLevel) return getMaxZoomLevel();
62  else return requestedZoomLevel;
63  }
64 
71  virtual ZoomLevel getMinZoomLevel() const {
72  return { ZoomLevel::PixelsPerFrame, 512 };
73  }
74 
81  virtual ZoomLevel getMaxZoomLevel() const {
82  return { ZoomLevel::FramesPerPixel, 4194304 }; // 2^22, arbitrarily
83  }
84 };
85 
86 #endif
87 
virtual ZoomLevel getMaxZoomLevel() const
Return the maximum zoom level within range for this constraint.
virtual ZoomLevel getMinZoomLevel() const
Return the minimum zoom level within range for this constraint.
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...
Zone zone
Definition: ZoomLevel.h:33
Display zoom level.
Definition: ZoomLevel.h:26
ZoomConstraint is a simple interface that describes a limitation on the available zoom sizes for a vi...
int level
Definition: ZoomLevel.h:34