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] > >
