annotate base/ZoomConstraint.h @ 6:44bbf5793d84

* Rework handling of layer properties in file I/O -- we now get the individual layers to load and save them rather than doing it via generic property lists in the base class, so as to ensure we read and write meaningful values rather than generic int values requiring conversion.
author Chris Cannam
date Thu, 19 Jan 2006 12:54:38 +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