41 if (blockSize < (1 << minCachePower)) {
44 float val = 1.0, prevVal = 1.0;
45 while (val + 0.01 < blockSize) {
50 if (dir ==
RoundUp) rval = int(val + 0.01);
51 else if (dir ==
RoundDown) rval = int(prevVal + 0.01);
52 else if (val - blockSize < blockSize - prevVal) rval = int(val + 0.01);
53 else rval = int(prevVal + 0.01);
58 int prevBase = (1 << minCachePower);
59 int prevPower = minCachePower;
64 for (
unsigned int i = 0; ; ++i) {
66 power = minCachePower + i/2;
73 base = (((
unsigned int)((1 << minCachePower) * sqrt(2.) + 0.01))
74 << (power - minCachePower));
79 if (base == blockSize) {
84 if (base > blockSize) {
86 if (base - blockSize < blockSize - prevBase) {
virtual int getMinCachePower() const
virtual int getMaxZoomLevel() const
Return the maximum zoom level within range for this constraint.
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...