are there any new tests to go along with this?

On Fri, Jan 4, 2013 at 9:11 AM, <[email protected]> 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: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to