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, <[email protected]
<mailto:[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]
<mailto:[email protected]>
For additional commands, e-mail:
[email protected]
<mailto:[email protected]>