svcore
1.9
PowerOfTwoZoomConstraint.cpp
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
#include "
PowerOfTwoZoomConstraint.h
"
17
18
int
19
PowerOfTwoZoomConstraint::getNearestBlockSize
(
int
req,
20
RoundingDirection
dir)
const
21
{
22
int
result = 0;
23
24
for
(
int
bs = 1; ; bs *= 2) {
25
if
(bs >= req) {
26
if
(dir ==
RoundNearest
) {
27
if
(bs - req < req - bs/2) {
28
result = bs;
29
break
;
30
}
else
{
31
result = bs/2;
32
break
;
33
}
34
}
else
if
(dir ==
RoundDown
) {
35
result = bs/2;
36
break
;
37
}
else
{
38
result = bs;
39
break
;
40
}
41
}
42
}
43
44
if
(result >
getMaxZoomLevel
()) result =
getMaxZoomLevel
();
45
return
result;
46
}
47
PowerOfTwoZoomConstraint::getNearestBlockSize
virtual int getNearestBlockSize(int requestedBlockSize, RoundingDirection dir=RoundNearest) const
Given the "ideal" block size (frames per pixel) for a given zoom level, return the nearest viable blo...
Definition:
PowerOfTwoZoomConstraint.cpp:19
PowerOfTwoZoomConstraint.h
ZoomConstraint::RoundNearest
Definition:
ZoomConstraint.h:38
ZoomConstraint::getMaxZoomLevel
virtual int getMaxZoomLevel() const
Return the maximum zoom level within range for this constraint.
Definition:
ZoomConstraint.h:62
ZoomConstraint::RoundingDirection
RoundingDirection
Definition:
ZoomConstraint.h:35
ZoomConstraint::RoundDown
Definition:
ZoomConstraint.h:36
data
model
PowerOfTwoZoomConstraint.cpp
Generated by
1.8.15