diff options
author | Chris Bowditch <cbowditch@apache.org> | 2013-03-05 15:45:13 +0000 |
---|---|---|
committer | Chris Bowditch <cbowditch@apache.org> | 2013-03-05 15:45:13 +0000 |
commit | 0b97b8f60a914736582347f62ebbb3fe736dd6d1 (patch) | |
tree | 7ad23be70a049ad8466e1d6b61c3b1c060e00a32 /src/java | |
parent | 36a43fac57b775dee1c056ba637083dc7ebc7dd2 (diff) | |
download | xmlgraphics-fop-0b97b8f60a914736582347f62ebbb3fe736dd6d1.tar.gz xmlgraphics-fop-0b97b8f60a914736582347f62ebbb3fe736dd6d1.zip |
FOP-2217; Image scaling change was adversely affecting other image types
Submitted by Robert Meyer (rmeyer.at.hotmail.co.uk)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1452859 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/org/apache/fop/fo/extensions/svg/SVGElement.java | 3 | ||||
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java | 67 |
2 files changed, 12 insertions, 58 deletions
diff --git a/src/java/org/apache/fop/fo/extensions/svg/SVGElement.java b/src/java/org/apache/fop/fo/extensions/svg/SVGElement.java index 577efcdf4..5c6ab16ad 100644 --- a/src/java/org/apache/fop/fo/extensions/svg/SVGElement.java +++ b/src/java/org/apache/fop/fo/extensions/svg/SVGElement.java @@ -145,7 +145,8 @@ public class SVGElement extends SVGObj { Point2D p2d = getSize(fontSize, svgRoot, getUserAgent().getSourcePixelUnitToMillimeter()); e.setSVGContext(null); - return p2d; + double pixelToPoint = 72d / getUserAgent().getSourceResolution(); + return new Point2D.Double(p2d.getX() * pixelToPoint, p2d.getY() * pixelToPoint); } /** diff --git a/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java b/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java index 627fd29df..31ede9aee 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java +++ b/src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java @@ -25,14 +25,10 @@ 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; /** @@ -102,9 +98,9 @@ public class ImageLayout implements Constants { boolean constrainIntrinsicSize = false; int cwidth = -1; int cheight = -1; - Length lenWidth = props.getContentWidth(); - if (lenWidth.getEnum() != EN_AUTO) { - switch (lenWidth.getEnum()) { + len = props.getContentWidth(); + if (len.getEnum() != EN_AUTO) { + switch (len.getEnum()) { case EN_SCALE_TO_FIT: if (ipd != -1) { cwidth = ipd; @@ -124,12 +120,12 @@ public class ImageLayout implements Constants { constrainIntrinsicSize = true; break; default: - cwidth = lenWidth.getValue(percentBaseContext); + cwidth = len.getValue(percentBaseContext); } } - Length lenHeight = props.getContentHeight(); - if (lenHeight.getEnum() != EN_AUTO) { - switch (lenHeight.getEnum()) { + len = props.getContentHeight(); + if (len.getEnum() != EN_AUTO) { + switch (len.getEnum()) { case EN_SCALE_TO_FIT: if (bpd != -1) { cheight = bpd; @@ -149,21 +145,10 @@ public class ImageLayout implements Constants { constrainIntrinsicSize = true; break; default: - cheight = lenHeight.getValue(percentBaseContext); + cheight = len.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 = (int)(intrinsicSize.width / ((float)sourceResolution / (float)UnitConv.IN2PT)); - cheight = (int)(intrinsicSize.height / ((float)sourceResolution / (float)UnitConv.IN2PT)); - } - Dimension constrainedIntrinsicSize; if (constrainIntrinsicSize) { constrainedIntrinsicSize = constrain(intrinsicSize); @@ -179,13 +164,11 @@ public class ImageLayout implements Constants { //Adjust viewport if not explicit if (ipd == -1) { ipd = constrainExtent(cwidth, - props.getInlineProgressionDimension(), (foundNonAuto) - ? props.getContentWidth() : new DefaultLength()); + props.getInlineProgressionDimension(), props.getContentWidth()); } if (bpd == -1) { bpd = constrainExtent(cheight, - props.getBlockProgressionDimension(), (foundNonAuto) - ? props.getContentHeight() : new DefaultLength()); + props.getBlockProgressionDimension(), props.getContentHeight()); } this.clip = false; @@ -208,36 +191,6 @@ public class ImageLayout implements Constants { 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); |