You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by an...@apache.org on 2008/07/04 22:54:20 UTC

svn commit: r674121 - in /cocoon/branches/BRANCH_2_1_X: src/blocks/imageop/java/org/apache/cocoon/reading/imageop/ResizeOperation.java status.xml

Author: anathaniel
Date: Fri Jul  4 13:54:19 2008
New Revision: 674121

URL: http://svn.apache.org/viewvc?rev=674121&view=rev
Log:
<action dev="AN" type="fix" fixes-bug="COCOON-2177" due-to="Mark Lundquist" due-to-email="lundquist.mark@gmail.com">
  ImageOp block: Make resize a no-op if width and height are zero.
</action>
<action dev="AN" type="add" fixes-bug="COCOON-2133" due-to="Robin Wyles" due-to-email="reb@robinwyles.com">
  ImageOp block: Addition of "allow-enlarge" parameter to resize operation.
</action>

Modified:
    cocoon/branches/BRANCH_2_1_X/src/blocks/imageop/java/org/apache/cocoon/reading/imageop/ResizeOperation.java
    cocoon/branches/BRANCH_2_1_X/status.xml

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/imageop/java/org/apache/cocoon/reading/imageop/ResizeOperation.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/imageop/java/org/apache/cocoon/reading/imageop/ResizeOperation.java?rev=674121&r1=674120&r2=674121&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/imageop/java/org/apache/cocoon/reading/imageop/ResizeOperation.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/imageop/java/org/apache/cocoon/reading/imageop/ResizeOperation.java Fri Jul  4 13:54:19 2008
@@ -31,6 +31,7 @@
     private int     width;
     private boolean preserveRatio;
     private boolean adjustX;
+    private boolean allowEnlarge;
 
     public void setPrefix( String prefix ) {
         this.prefix = prefix;
@@ -49,27 +50,50 @@
         }
         preserveRatio = params.getParameterAsBoolean( prefix + "preserve-ratio", false );
         adjustX = params.getParameterAsBoolean( prefix + "adjust-x", false );
+        allowEnlarge = params.getParameterAsBoolean( prefix + "allow-enlarge", true );
     }
  
     public WritableRaster apply( WritableRaster image ) {
         if( ! enabled ) {
             return image;
         }
+        if ( this.width == 0 && this.height == 0 ) {
+            return image;
+        }
         double height = image.getHeight();
         double width = image.getWidth();
         double xScale = this.width / width;
         double yScale = this.height / height;
-        if( preserveRatio )
+        if (allowEnlarge || (xScale <= 1 && yScale <= 1))
         {
-            if( adjustX )
-                xScale = yScale;
-            else
-                yScale = xScale;
+	        if( preserveRatio )
+	        {
+	        	if (allowEnlarge) {
+	        		if (xScale >= 1) {
+	        			yScale = xScale;
+	        		} else if (yScale >= 1) {
+	        			xScale = yScale;
+	        		}
+	        	} else {
+	        		if (xScale <= 1) {
+	        			yScale = xScale;
+	        		} else if (yScale <= 1) {
+	        			xScale = yScale;
+	        		}
+	        	}
+	            if( adjustX )
+	                xScale = yScale;
+	            else
+	                yScale = xScale;
+	        }
+	        
+	        AffineTransform scale = AffineTransform.getScaleInstance( xScale, yScale );
+	        AffineTransformOp op = new AffineTransformOp( scale, AffineTransformOp.TYPE_BILINEAR );
+	        WritableRaster scaledRaster = op.filter( image, null );
+	        return scaledRaster;
+        } else {
+        		return image;
         }
-        AffineTransform scale = AffineTransform.getScaleInstance( xScale, yScale );
-        AffineTransformOp op = new AffineTransformOp( scale, AffineTransformOp.TYPE_BILINEAR );
-        WritableRaster scaledRaster = op.filter( image, null );
-        return scaledRaster;
     }
 
     public String getKey() {
@@ -77,6 +101,7 @@
                + ( enabled ? "enable" : "disable" )
                + ":" + width
                + ":" + height
-               + ":" + prefix;
+               + ":" + prefix
+               + ":" + ( allowEnlarge ? "allowEnlarge" : "disallowEnlarge" );
     }
 } 

Modified: cocoon/branches/BRANCH_2_1_X/status.xml
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/status.xml?rev=674121&r1=674120&r2=674121&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml Fri Jul  4 13:54:19 2008
@@ -186,6 +186,12 @@
     <action dev="all" type="update">
       Starting with 2.1.12 the minimum required Java version will be 1.4.2.
     </action>
+    <action dev="AN" type="fix" fixes-bug="COCOON-2177" due-to="Mark Lundquist" due-to-email="lundquist.mark@gmail.com">
+      ImageOp block: Make resize a no-op if width and height are zero.
+    </action>
+    <action dev="AN" type="add" fixes-bug="COCOON-2133" due-to="Robin Wyles" due-to-email="reb@robinwyles.com">
+      ImageOp block: Addition of "allow-enlarge" parameter to resize operation.
+    </action>
     <action dev="AN" type="fix" fixes-bug="COCOON-2213" due-to="Jasha Joachimsthal" due-to-email="j.joachimsthal@onehippo.com">
       Mail block: Allow mime-type to explicitly set a charset as in mime-type="text/html;charset=UTF-8".
     </action>