]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla 42785: Support alignment-adjust for images (submitted by Max Berger)
authorAndreas L. Delmelle <adelmelle@apache.org>
Sun, 8 Jul 2007 19:47:53 +0000 (19:47 +0000)
committerAndreas L. Delmelle <adelmelle@apache.org>
Sun, 8 Jul 2007 19:47:53 +0000 (19:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@554423 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/XMLObj.java
src/java/org/apache/fop/fo/flow/AbstractGraphics.java
src/java/org/apache/fop/fo/flow/ExternalGraphic.java
src/java/org/apache/fop/fo/flow/InstreamForeignObject.java
src/java/org/apache/fop/image/AbstractFopImage.java
src/java/org/apache/fop/image/FopImage.java
status.xml

index e2b459192d009db18e93488388f5a3a369e7a0b0..f7d140732595651d4de01bc9fd05debf5ae8da19 100644 (file)
@@ -27,6 +27,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.batik.dom.util.XMLSupport;
 import org.apache.fop.apps.FOPException;
+import org.apache.fop.datatypes.Length;
 import org.apache.fop.util.ContentHandlerFactory.ObjectBuiltListener;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -94,6 +95,14 @@ public abstract class XMLObj extends FONode implements ObjectBuiltListener {
     public Point2D getDimension(Point2D view) {
          return null;
     }
+    
+    /**
+     * Retrieve the intrinsic alignment-adjust of the child element.
+     * @return the intrinsic alignment-adjust.
+     */
+    public Length getIntrinsicAlignmentAdjust() {
+        return null;
+    }
 
     /** @see org.apache.fop.fo.FONode#getLocalName() */
     public String getLocalName() {
index 853e438fad9dcdb10e525fa262f59edcf416c125..f480520097e4d48a18047531bd79f7d7a5028f50 100644 (file)
@@ -236,6 +236,12 @@ public abstract class AbstractGraphics extends FObj {
      * @return the "alignment-adjust" property
      */
     public Length getAlignmentAdjust() {
+        if (alignmentAdjust.getEnum() == EN_AUTO) {
+            final Length intrinsicAlignmentAdjust = this.getIntrinsicAlignmentAdjust();
+            if (intrinsicAlignmentAdjust != null) {
+                return intrinsicAlignmentAdjust;
+            }
+        }
         return alignmentAdjust;
     }
     
@@ -261,12 +267,17 @@ public abstract class AbstractGraphics extends FObj {
     }
     
     /**
-     * @return the graphics intrinsic width
+     * @return the graphics intrinsic width in millipoints
      */
     public abstract int getIntrinsicWidth();
 
     /**
-     * @return the graphics intrinsic height
+     * @return the graphics intrinsic height in millipoints
      */
     public abstract int getIntrinsicHeight();
+
+    /**
+     * @return the graphics intrinsic alignment-adjust
+     */
+    public abstract Length getIntrinsicAlignmentAdjust();
 }
index 632812270c86e4c6526729bb90dd113bfea76998..3ca8cf77739d85ddf3b4aa0246b9c7c561057cb0 100644 (file)
@@ -21,6 +21,7 @@ package org.apache.fop.fo.flow;
 
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.datatypes.Length;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.PropertyList;
 import org.apache.fop.fo.ValidationException;
@@ -44,6 +45,7 @@ public class ExternalGraphic extends AbstractGraphics {
     private String url;
     private int intrinsicWidth;
     private int intrinsicHeight;
+    private Length intrinsicAlignmentAdjust;
     
     /**
      * Create a new External graphic node.
@@ -75,6 +77,7 @@ public class ExternalGraphic extends AbstractGraphics {
             }
             this.intrinsicWidth = fopimage.getIntrinsicWidth();
             this.intrinsicHeight = fopimage.getIntrinsicHeight();
+            this.intrinsicAlignmentAdjust = fopimage.getIntrinsicAlignmentAdjust();
         }
         //TODO Report to caller so he can decide to throw an exception
     }
@@ -135,5 +138,12 @@ public class ExternalGraphic extends AbstractGraphics {
     public int getIntrinsicHeight() {
         return this.intrinsicHeight;
     }
-    
+
+    /**
+     * @see org.apache.fop.fo.flow.AbstractGraphics#getIntrinsicAlignmentAdjust()
+     */
+    public Length getIntrinsicAlignmentAdjust() {
+        return this.intrinsicAlignmentAdjust;
+    }
+
 }
index fc8dd4bc9863ce82c865d9fd3836e2c80507d2d1..b201b95b122254f4a87d1e1561183420fd662faa 100644 (file)
@@ -21,6 +21,7 @@ package org.apache.fop.fo.flow;
 
 import java.awt.geom.Point2D;
 import org.apache.fop.apps.FOPException;
+import org.apache.fop.datatypes.Length;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.ValidationException;
 import org.apache.fop.fo.XMLObj;
@@ -40,6 +41,8 @@ public class InstreamForeignObject extends AbstractGraphics {
     //Additional value
     private Point2D intrinsicDimensions;
     
+    private Length intrinsicAlignmentAdjust;
+    
     /**
      * constructs an instream-foreign-object object (called by Maker).
      *
@@ -98,6 +101,7 @@ public class InstreamForeignObject extends AbstractGraphics {
                 log.error("Intrinsic dimensions of "
                         + " instream-foreign-object could not be determined");
             }
+            intrinsicAlignmentAdjust = child.getIntrinsicAlignmentAdjust();
         }
     }
 
@@ -124,6 +128,15 @@ public class InstreamForeignObject extends AbstractGraphics {
             return 0;
         }
     }
+
+    /**
+     * @see org.apache.fop.fo.flow.AbstractGraphics#getIntrinsicAlignmentAdjust()
+     */
+    public  Length getIntrinsicAlignmentAdjust()
+    {
+        prepareIntrinsicSize();
+        return intrinsicAlignmentAdjust;
+    }
     
     /** @see org.apache.fop.fo.FONode#addChildNode(org.apache.fop.fo.FONode) */
     protected void addChildNode(FONode child) throws FOPException {
index 4d49034a78e2b03516a1c7525dc9009b687adc57..97f1767126b256a83ce8ab112454f08489991e12 100644 (file)
@@ -29,6 +29,7 @@ import java.awt.Color;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.fop.datatypes.Length;
 
 /**
  * Base class to implement the FopImage interface.
@@ -257,6 +258,11 @@ public abstract class AbstractFopImage implements FopImage {
     public int getIntrinsicHeight() {
         return (int)(getHeight() * 72000 / getVerticalResolution());
     }
+    
+    /** @see org.apache.fop.image.FopImage#getIntrinsicAlignmentAdjust() */
+    public Length getIntrinsicAlignmentAdjust() {
+        return this.imageInfo.alignmentAdjust;
+    }
 
     /** @see org.apache.fop.image.FopImage#getHorizontalResolution() */
     public double getHorizontalResolution() {
index 0db6a95a026f86aba685716203ffbd91007d33d5..30f3c8258596921354118454e85ed81ef90f3b4c 100644 (file)
@@ -24,6 +24,8 @@ import java.awt.color.ColorSpace;
 import java.awt.color.ICC_Profile;
 import java.awt.Color;
 
+import org.apache.fop.datatypes.Length;
+
 /**
  * Fop image interface for loading images.
  *
@@ -89,6 +91,12 @@ public interface FopImage {
      */
     int getIntrinsicHeight();
 
+    /**
+     * @return the intrinsic alignment-adjust value or NULL if the image does
+     *         not have one.
+     */
+    Length getIntrinsicAlignmentAdjust();
+    
     /**
      * @return the horizontal bitmap resolution (in dpi)
      */
@@ -193,6 +201,8 @@ public interface FopImage {
         public String mimeType;
         /** implementation-specific String (ex. the namespace for XML-based images) */
         public String str;
+        /** intrinsic alignment-adjust or null if there is none */
+        public Length alignmentAdjust;
     }
 
 }
index 81d8e67512e69763b30173a0c4618fe7fa8eeebb..d155da934c3474245b99efcf6cff946cbbaf9df5 100644 (file)
@@ -28,6 +28,9 @@
 
   <changes>
     <release version="FOP Trunk">
+      <action context="code" dev="AD" type="add" fixes-bug="42785" due-to="Max Berger">
+        Support alignment-adjust for images.
+      </action>
       <action context="code" dev="AD" type="add" fixes-bug="41044" due-to="Richard Wheeldon">
         Partial application of the patch in Bugzilla 41044:
           * addition of a generic PropertyCache to be used by all Property