Hi Glenn,

Rob didn't submit one, but since the change affects layout that is a reasonable request.

Thanks,

Chris

On 04/01/2013 16:25, Glenn Adams wrote:
are there any new tests to go along with this?

On Fri, Jan 4, 2013 at 9:11 AM, <cbowdi...@apache.org <mailto:cbowdi...@apache.org>> wrote:

    Author: cbowditch
    Date: Fri Jan  4 15:11:52 2013
    New Revision: 1428918

    URL: http://svn.apache.org/viewvc?rev=1428918&view=rev
    Log:
    Jira FOP-2174: When using SVG drawings, if no content-width and
    content-height is specified, 72 will be used instead of the
    source-resolution option
    Patch submitted by Robert Meyer (rmeyer at hotmail dot co dot uk)

    Modified:
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java
        xmlgraphics/fop/trunk/status.xml

    Modified:
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java
    URL:
    
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java?rev=1428918&r1=1428917&r2=1428918&view=diff
    
==============================================================================
    ---
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java
    (original)
    +++
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java
    Fri Jan  4 15:11:52 2013
    @@ -25,10 +25,14 @@ import java.awt.Rectangle;
     import org.apache.commons.logging.Log;
     import org.apache.commons.logging.LogFactory;

    +import org.apache.xmlgraphics.util.UnitConv;
    +
     import org.apache.fop.datatypes.Length;
     import org.apache.fop.datatypes.PercentBaseContext;
     import org.apache.fop.fo.Constants;
     import org.apache.fop.fo.GraphicsProperties;
    +import org.apache.fop.fo.expr.PropertyException;
    +import org.apache.fop.fo.flow.AbstractGraphics;
     import org.apache.fop.fo.properties.LengthRangeProperty;

     /**
    @@ -98,9 +102,9 @@ public class ImageLayout implements Cons
             boolean constrainIntrinsicSize = false;
             int cwidth = -1;
             int cheight = -1;
    -        len = props.getContentWidth();
    -        if (len.getEnum() != EN_AUTO) {
    -            switch (len.getEnum()) {
    +        Length lenWidth = props.getContentWidth();
    +        if (lenWidth.getEnum() != EN_AUTO) {
    +            switch (lenWidth.getEnum()) {
                 case EN_SCALE_TO_FIT:
                     if (ipd != -1) {
                         cwidth = ipd;
    @@ -120,12 +124,12 @@ public class ImageLayout implements Cons
                     constrainIntrinsicSize = true;
                     break;
                 default:
    -                cwidth = len.getValue(percentBaseContext);
    +                cwidth = lenWidth.getValue(percentBaseContext);
                 }
             }
    -        len = props.getContentHeight();
    -        if (len.getEnum() != EN_AUTO) {
    -            switch (len.getEnum()) {
    +        Length lenHeight = props.getContentHeight();
    +        if (lenHeight.getEnum() != EN_AUTO) {
    +            switch (lenHeight.getEnum()) {
                 case EN_SCALE_TO_FIT:
                     if (bpd != -1) {
                         cheight = bpd;
    @@ -145,10 +149,21 @@ public class ImageLayout implements Cons
                     constrainIntrinsicSize = true;
                     break;
                 default:
    -                cheight = len.getValue(percentBaseContext);
    +                cheight = lenHeight.getValue(percentBaseContext);
                 }
             }

    +        //If no content-width or height is specified, adjust
    dimensions based upon the source resolution
    +        int sourceResolution = 72;
    +        if (props instanceof AbstractGraphics) {
    +            sourceResolution = (int)
    ((AbstractGraphics)props).getUserAgent().getSourceResolution();
    +        }
    +        boolean foundNonAuto = (lenWidth.getEnum() != EN_AUTO ||
    lenHeight.getEnum() != EN_AUTO);
    +        if (!foundNonAuto) {
    +            cwidth = intrinsicSize.width / (sourceResolution /
    UnitConv.IN2PT);
    +            cheight = intrinsicSize.height / (sourceResolution /
    UnitConv.IN2PT);
    +        }
    +
             Dimension constrainedIntrinsicSize;
             if (constrainIntrinsicSize) {
                 constrainedIntrinsicSize = constrain(intrinsicSize);
    @@ -164,11 +179,13 @@ public class ImageLayout implements Cons
             //Adjust viewport if not explicit
             if (ipd == -1) {
                 ipd = constrainExtent(cwidth,
    -                    props.getInlineProgressionDimension(),
    props.getContentWidth());
    +                    props.getInlineProgressionDimension(),
    (foundNonAuto)
    +                    ? props.getContentWidth() : new DefaultLength());
             }
             if (bpd == -1) {
                 bpd = constrainExtent(cheight,
    -                    props.getBlockProgressionDimension(),
    props.getContentHeight());
    +                    props.getBlockProgressionDimension(),
    (foundNonAuto)
    +                    ? props.getContentHeight() : new
    DefaultLength());
             }

             this.clip = false;
    @@ -191,6 +208,36 @@ public class ImageLayout implements Cons
             this.placement = new Rectangle(xoffset, yoffset, cwidth,
    cheight);
         }

    +    private static class DefaultLength implements Length {
    +        public double getNumericValue() throws PropertyException {
    +            return 0;
    +        }
    +
    +        public double getNumericValue(PercentBaseContext context)
    throws PropertyException {
    +            return 0;
    +        }
    +
    +        public int getDimension() {
    +            return 0;
    +        }
    +
    +        public boolean isAbsolute() {
    +            return false;
    +        }
    +
    +        public int getEnum() {
    +            return 0;
    +        }
    +
    +        public int getValue() {
    +            return 0;
    +        }
    +
    +        public int getValue(PercentBaseContext context) {
    +            return 0;
    +        }
    +    }
    +
         private int constrainExtent(int extent, LengthRangeProperty
    range, Length contextExtent) {
             boolean mayScaleUp = (contextExtent.getEnum() !=
    EN_SCALE_DOWN_TO_FIT);
             boolean mayScaleDown = (contextExtent.getEnum() !=
    EN_SCALE_UP_TO_FIT);

    Modified: xmlgraphics/fop/trunk/status.xml
    URL:
    
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/status.xml?rev=1428918&r1=1428917&r2=1428918&view=diff
    
==============================================================================
    --- xmlgraphics/fop/trunk/status.xml (original)
    +++ xmlgraphics/fop/trunk/status.xml Fri Jan  4 15:11:52 2013
    @@ -59,6 +59,10 @@
           documents. Example: the fix of marks layering will be such
    a case when it's done.
         -->
         <release version="FOP Trunk" date="TBD">
    +      <action context="Layout" dev="CB" type="fix"
    fixes-bug="FOP-2174" due-to="Robert Meyer">
    +        When using SVG drawings, if no content-width and
    content-height is specified, 72 will
    +        be used instead of the source-resolution option.
    +      </action>
           <action context="Code" dev="GA" type="fix"
    fixes-bug="FOP-2179" due-to="Robert Meyer">
             Fix checkstyle and findbugs warnings.
           </action>



    ---------------------------------------------------------------------
    To unsubscribe, e-mail:
    fop-commits-unsubscr...@xmlgraphics.apache.org
    <mailto:fop-commits-unsubscr...@xmlgraphics.apache.org>
    For additional commands, e-mail:
    fop-commits-h...@xmlgraphics.apache.org
    <mailto:fop-commits-h...@xmlgraphics.apache.org>



Reply via email to