Author: johnh Date: Wed Oct 14 21:36:55 2009 New Revision: 825296 URL: http://svn.apache.org/viewvc?rev=825296&view=rev Log: Update no_expand variable to mean "don't expand image size in either dimension, ever". This means that passing resize_h and resize_w along with no_expand=1, with an image having one dimension larger than the requested size, yields a proportionally scaled image, treating resize_X as a bounding box.
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BasicImageRewriter.java Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BasicImageRewriter.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BasicImageRewriter.java?rev=825296&r1=825295&r2=825296&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BasicImageRewriter.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BasicImageRewriter.java Wed Oct 14 21:36:55 2009 @@ -143,7 +143,8 @@ ImageInfo imageInfo = Sanselan.getImageInfo(response.getResponse(), uri.getPath()); - if ("1".equals(request.getParam(PARAM_NO_EXPAND)) && + boolean noExpand = "1".equals(request.getParam(PARAM_NO_EXPAND)); + if (noExpand && imageInfo.getHeight() <= requestedHeight && imageInfo.getWidth() <= requestedWidth) { // Don't do anything, since the current image fits within the bounding area. @@ -194,6 +195,18 @@ int heightAfterStep1 = max(1, (int) (ratio * origHeight)); heightDelta = requestedHeight - heightAfterStep1; + + if (noExpand) { + // No expansion requested: make sure not to expand the resulting image on either axis, + // even if both resize_[w,h] params are specified. + if (widthDelta == 0) { + requestedHeight = heightAfterStep1; + heightDelta = 0; + } else if (heightDelta == 0) { + requestedWidth = widthAfterStep1; + widthDelta = 0; + } + } } if (resizeQuality == null) {