aboutsummaryrefslogtreecommitdiffstats
path: root/src/java
diff options
context:
space:
mode:
authorChris Bowditch <cbowditch@apache.org>2013-03-05 15:45:13 +0000
committerChris Bowditch <cbowditch@apache.org>2013-03-05 15:45:13 +0000
commit0b97b8f60a914736582347f62ebbb3fe736dd6d1 (patch)
tree7ad23be70a049ad8466e1d6b61c3b1c060e00a32 /src/java
parent36a43fac57b775dee1c056ba637083dc7ebc7dd2 (diff)
downloadxmlgraphics-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.java3
-rw-r--r--src/java/org/apache/fop/layoutmgr/inline/ImageLayout.java67
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);