annotate base/ZoomConstraint.h @ 5:31c4ed2d5da6

* Hook up SV file i/o. You can now save and load sessions. Some problems -- gain is not reloaded correctly for waveforms, reloaded panes are not properly reconnected to the panner, and no doubt plenty of others.
author Chris Cannam
date Tue, 17 Jan 2006 17:45:55 +0000
parents d86891498eef
children f67ddc287bc3
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 A waveform viewer and audio annotation editor.
Chris@2 5 Chris Cannam, Queen Mary University of London, 2005-2006
Chris@0 6
Chris@0 7 This is experimental software. Not for distribution.
Chris@0 8 */
Chris@0 9
Chris@0 10 #ifndef _ZOOM_CONSTRAINT_H_
Chris@0 11 #define _ZOOM_CONSTRAINT_H_
Chris@0 12
Chris@0 13 #include <stdlib.h>
Chris@0 14
Chris@0 15 /**
Chris@0 16 * ZoomConstraint is a simple interface that describes a limitation on
Chris@0 17 * the available zoom sizes for a view, for example based on cache
Chris@0 18 * strategy or a (processing) window-size limitation.
Chris@0 19 *
Chris@0 20 * The default ZoomConstraint imposes no actual constraint.
Chris@0 21 */
Chris@0 22
Chris@0 23 class ZoomConstraint
Chris@0 24 {
Chris@0 25 public:
Chris@0 26 enum RoundingDirection {
Chris@0 27 RoundDown,
Chris@0 28 RoundUp,
Chris@0 29 RoundNearest
Chris@0 30 };
Chris@0 31
Chris@0 32 /**
Chris@0 33 * Given the "ideal" block size (frames per pixel) for a given
Chris@0 34 * zoom level, return the nearest viable block size for this
Chris@0 35 * constraint.
Chris@0 36 *
Chris@0 37 * For example, if a block size of 1523 frames per pixel is
Chris@0 38 * requested but the underlying model only supports value
Chris@0 39 * summaries at powers-of-two block sizes, return 1024 or 2048
Chris@0 40 * depending on the rounding direction supplied.
Chris@0 41 */
Chris@0 42 virtual size_t getNearestBlockSize(size_t requestedBlockSize,
Chris@0 43 RoundingDirection = RoundNearest)
Chris@0 44 const
Chris@0 45 {
Chris@0 46 return requestedBlockSize;
Chris@0 47 }
Chris@0 48 };
Chris@0 49
Chris@0 50 #endif
Chris@0 51