From 74f8b211ee5894c3188eb969fc5ad6fe66d70ac0 Mon Sep 17 00:00:00 2001 From: Michael Ang Date: Tue, 27 Jul 2010 01:39:01 +0000 Subject: [PATCH] Support named sizes in permalink image urls --- BookReaderIA/datanode/BookReaderImages.inc.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/BookReaderIA/datanode/BookReaderImages.inc.php b/BookReaderIA/datanode/BookReaderImages.inc.php index e8d3877..1c9c44b 100644 --- a/BookReaderIA/datanode/BookReaderImages.inc.php +++ b/BookReaderIA/datanode/BookReaderImages.inc.php @@ -268,6 +268,8 @@ class BookReaderImages // The pbmreduce reduction factor produces an image with dimension 1/n // The kakadu reduction factor produceds an image with dimension 1/(2^n) + + // Set scale from height or width if set if (isset($requestEnv['height'])) { $powReduce = $this->nearestPow2Reduce($requestEnv['height'], $imageInfo['height']); $scale = pow(2, $powReduce); @@ -278,11 +280,16 @@ class BookReaderImages } else { // $$$ could be cleaner // Provide next smaller power of two reduction + + // Set scale from 'scale' if set $scale = $requestEnv['scale']; if (!$scale) { $scale = 1; } - if (array_key_exists($scale, self::$imageSizes)) { + + // Set scale from named size (e.g. 'large') if set + $size = $requestEnv['size']; + if ( $size && array_key_exists($size, self::$imageSizes)) { $srcRatio = floatval($imageInfo['width']) / floatval($imageInfo['height']); if ($srcRatio > 1) { // wide @@ -290,10 +297,13 @@ class BookReaderImages } else { $dimension = 'height'; } - $powReduce = $this->nearestPow2Reduce($this->imageSizes[$scale], $imageInfo[$dimension]); + $powReduce = $this->nearestPow2Reduce(self::$imageSizes[$size], $imageInfo[$dimension]); } else { - $powReduce = $this->nearestPow2ForScale($scale); + // No named size - update powReduce from scale + $powReduce = $this->nearestPow2ForScale($sale); } + + // Make sure scale matches powReduce $scale = pow(2, $powReduce); } @@ -793,7 +803,7 @@ class BookReaderImages // Look for other known parts foreach ($parts as $part) { - if ( in_array($part, self::$imageSizes) ) { + if ( array_key_exists($part, self::$imageSizes) ) { $pageInfo['size'] = $part; continue; } -- 2.20.1