Mercurial > hg > svcore
annotate base/ZoomConstraint.h @ 0:da6937383da8
initial import
author | Chris Cannam |
---|---|
date | Tue, 10 Jan 2006 16:33:16 +0000 |
parents | |
children | d86891498eef |
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@0 | 5 Chris Cannam, Queen Mary University of London, 2005 |
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 |