Author: phancock
Date: Mon Oct 22 14:06:43 2012
New Revision: 1400883
URL: http://svn.apache.org/viewvc?rev=1400883&view=rev
Log:
Support for relative border-*-*-radius fox properties
Plus cleanup
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/examples/fo/advanced/rounded-corners.fo
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/Constants.java
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/FOPropertyMapping.java
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/BoxCornerPropShorthandParser.java
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/layoutmgr/TraitSetter.java
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/render/intermediate/BorderPainter.java
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/examples/fo/advanced/rounded-corners.fo
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/examples/fo/advanced/rounded-corners.fo?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/examples/fo/advanced/rounded-corners.fo
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/examples/fo/advanced/rounded-corners.fo
Mon Oct 22 14:06:43 2012
@@ -12,7 +12,7 @@
Examples using Rounded Corners
</fo:block>
<fo:block margin="20pt 0 40pt 0">
- <fo:block>The "border-radius" property in the
http://xmlgraphics.apache.org/fop/extensions namespace is a shorthand property
for setting appropriate values for "border-*-radius-*" (see below), and is used
to specify round corners on block areas. The property takes one or two values:
+ <fo:block>The "border-radius" property in the
http://xmlgraphics.apache.org/fop/extensions namespace is a shorthand property
for setting appropriate values for "border-*-radius" (see below), and is used
to specify round corners on block areas. The property takes one or two values:
</fo:block>
<fo:block-container margin="10 20pt 20pt 20pt">
<fo:block border-style="solid" border-width="10" border-color="#00f"
fox:border-radius="20pt" padding="20pt" text-align="center"
margin-bottom="10pt"> Circular corners are specified when 'border-radius' is
set to a single value. This value is the radius of the outer quadrant of the
corner.</fo:block>
@@ -21,20 +21,20 @@
</fo:block-container>
</fo:block>
<fo:block margin="20pt 0 40pt 0">
- <fo:block>To specify the corner radii of two adjacent border segments,
A and B, the properties border-A-radius-B and border-B-radius-A are set. The
value border-A-radius-B is the radius of the A-B corner in the direction
perpendicular to segment A.
- </fo:block>
+ <fo:block>The radii for a specific corner can be specified for each
<fo:inline font-style="italic">CORNER</fo:inline> (in 'before-start',
'before-end', 'after-start', 'after-end') with the property "border-<fo:inline
font-style="italic">CORNER</fo:inline>-radius". These properties
+ have the same interpretation as the "border-radius" property.
</fo:block>
<fo:table border-collapse="separate" margin-top="10pt">
<fo:table-column column-width="200pt"/>
<fo:table-column column-width="200pt"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
- <fo:block margin-left="50pt" border-style="solid"
border-width="50pt 0 0 50pt" border-color="#00f"
fox:border-before-radius-start="100pt" fox:border-start-radius-before="100pt"
height="100pt">
+ <fo:block margin-left="50pt" border-style="solid"
border-width="50pt 0 0 50pt" border-color="#00f"
fox:border-before-start-radius="100pt" height="100pt">
<fo:block padding="50pt"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
- <fo:block margin-left="50pt" border-style="solid"
border-width="50pt 0 0 50pt" border-color="#00f"
fox:border-before-radius-start="100pt" fox:border-start-radius-before="200pt"
height="100pt">
+ <fo:block margin-left="50pt" border-style="solid"
border-width="50pt 0 0 50pt" border-color="#00f"
fox:border-before-start-radius="200pt 100pt" height="100pt">
<fo:block padding="50pt"/>
</fo:block>
</fo:table-cell>
@@ -53,14 +53,14 @@
<fo:table-body>
<fo:table-row>
<fo:table-cell height="100pt">
- <fo:block margin-left="50pt" border-style="solid"
border-width="70pt 0 0 70pt" border-color="#00f"
fox:border-before-radius-start="100pt" fox:border-start-radius-before="100pt"
height="100pt">
+ <fo:block margin-left="50pt" border-style="solid"
border-width="70pt 0 0 70pt" border-color="#00f"
fox:border-before-start-radius="100pt" height="100pt">
<fo:block padding="50pt" text-align="center">
<fo:inline font-style="italic">I</fo:inline>
</fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell height="100pt">
- <fo:block margin-left="50pt" border-style="solid"
border-width="70pt 0 0 70pt" border-color="#00f"
fox:border-before-radius-start="50pt" fox:border-start-radius-before="50pt"
height="100pt">
+ <fo:block margin-left="50pt" border-style="solid"
border-width="70pt 0 0 70pt" border-color="#00f"
fox:border-before-start-radius="50pt" height="100pt">
<fo:block padding="50pt" text-align="center">
<fo:inline font-style="italic">II</fo:inline>
</fo:block>
@@ -76,39 +76,39 @@
<fo:table-body>
<fo:table-row>
<fo:table-cell number-columns-spanned="3">
- <fo:block margin-bottom="20pt">The border segments join at a
line that coincides with the one that interesects the inner and outer corners
of the equivalent rectangular corner. This is clearly demonstrated below where
rounded borders are overlayed on top of rectangular borders.</fo:block>
+ <fo:block margin-bottom="20pt">The border segments join at a
line that coincides with the one that intersects the inner and outer corners of
the equivalent rectangular corner. This is clearly demonstrated below where
rounded borders are overlayed on top of rectangular borders.</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border-style="solid" border-width="0"
border-before-color="#afa" border-start-color="#aaf" border-before-width="50pt"
border-start-width="50pt" height="100pt">
- <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-radius-start="50pt" fox:border-start-radius-before="50pt"
border-before-width="50pt" border-start-width="50pt" height="100pt">
+ <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-start-radius="50pt" border-before-width="50pt"
border-start-width="50pt" height="100pt">
<fo:block margin-bottom="100pt"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="0"
border-before-color="#afa" border-start-color="#aaf" border-before-width="50pt"
border-start-width="50pt" height="100pt">
- <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-radius-start="100pt" fox:border-start-radius-before="100pt"
border-before-width="50pt" border-start-width="50pt" height="100pt">
+ <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-start-radius="100pt" border-before-width="50pt"
border-start-width="50pt" height="100pt">
<fo:block margin-bottom="100pt"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="0"
border-before-color="#afa" border-start-color="#aaf" border-before-width="50pt"
border-start-width="50pt" height="100pt">
- <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-radius-start="100pt" fox:border-start-radius-before="150pt"
border-before-width="50pt" border-start-width="50pt" height="100pt">
+ <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-start-radius="150pt 100pt" border-before-width="50pt"
border-start-width="50pt" height="100pt">
<fo:block margin-bottom="100pt"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border-style="solid" border-width="0"
border-before-color="#afa" border-start-color="#aaf" border-before-width="50pt"
border-start-width="100pt" height="100pt">
- <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-radius-start="50pt" fox:border-start-radius-before="50pt"
border-before-width="50pt" border-start-width="100pt" height="100pt">
+ <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-start-radius="50pt" border-before-width="50pt"
border-start-width="100pt" height="100pt">
<fo:block margin-bottom="100pt"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="0"
border-before-color="#afa" border-start-color="#aaf" border-before-width="50pt"
border-start-width="100pt" height="100pt">
- <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-radius-start="100pt" fox:border-start-radius-before="100pt"
border-before-width="50pt" border-start-width="100pt" height="100pt">
+ <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-start-radius="100pt" border-before-width="50pt"
border-start-width="100pt" height="100pt">
<fo:block margin-bottom="100pt"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="0"
border-before-color="#afa" border-start-color="#aaf" border-before-width="50pt"
border-start-width="100pt" height="100pt">
- <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-radius-start="100pt" fox:border-start-radius-before="150pt"
border-before-width="50pt" border-start-width="100pt" height="100pt">
+ <fo:block margin-top="-50pt" border-style="solid"
border-width="0" border-before-color="#0f0" border-start-color="#00f"
fox:border-before-start-radius="150pt 100pt" border-before-width="50pt"
border-start-width="100pt" height="100pt">
<fo:block margin-bottom="100pt"/>
</fo:block>
</fo:table-cell>
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/Constants.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/Constants.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/Constants.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/Constants.java
Mon Oct 22 14:06:43 2012
@@ -781,37 +781,43 @@ public interface Constants {
/** Property constant FOP proprietary*/
int PR_X_BORDER_BEFORE_RADIUS_START = 276;
-
/** Property constant FOP proprietary*/
int PR_X_BORDER_BEFORE_RADIUS_END = 277;
-
/** Property constant FOP proprietary*/
int PR_X_BORDER_AFTER_RADIUS_START = 278;
/** Property constant FOP proprietary*/
int PR_X_BORDER_AFTER_RADIUS_END = 279;
-
/** Property constant FOP proprietary*/
- int PR_X_BORDER_START_RADIUS_START = 280;
+ int PR_X_BORDER_START_RADIUS_BEFORE = 280;
/** Property constant FOP proprietary*/
- int PR_X_BORDER_START_RADIUS_END = 281;
+ int PR_X_BORDER_START_RADIUS_AFTER = 281;
/** Property constant FOP proprietary*/
- int PR_X_BORDER_END_RADIUS_START = 282;
+ int PR_X_BORDER_END_RADIUS_BEFORE = 282;
/** Property constant FOP proprietary*/
- int PR_X_BORDER_END_RADIUS_END = 283;
+ int PR_X_BORDER_END_RADIUS_AFTER = 283;
/** Property constant FOP proprietary*/
int PR_X_BORDER_RADIUS = 284;
+ /** Property constant FOP proprietary*/
+ int PR_X_BORDER_BEFORE_START_RADIUS = 285;
+ /** Property constant FOP proprietary*/
+ int PR_X_BORDER_BEFORE_END_RADIUS = 286;
+ /** Property constant FOP proprietary*/
+ int PR_X_BORDER_AFTER_START_RADIUS = 287;
+ /** Property constant FOP proprietary*/
+ int PR_X_BORDER_AFTER_END_RADIUS = 288;
+
/**
* Property constant - FOP proprietary extension (see NumberConverter) used
* to perform additional control over number conversion when generating
page
* numbers.
*/
- int PR_X_NUMBER_CONVERSION_FEATURES = 285;
+ int PR_X_NUMBER_CONVERSION_FEATURES = 289;
/** Scope for table header */
- int PR_X_HEADER_COLUMN = 286;
+ int PR_X_HEADER_COLUMN = 290;
/** Number of property constants defined */
- int PROPERTY_COUNT = 286;
+ int PROPERTY_COUNT = 290;
// compound property constants
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/FOPropertyMapping.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/FOPropertyMapping.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/FOPropertyMapping.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/FOPropertyMapping.java
Mon Oct 22 14:06:43 2012
@@ -206,12 +206,11 @@ public final class FOPropertyMapping imp
genericBorderStyle.setDefault("none");
// GenericCondCornerRadius
- genericCondCornerRadius = new CondLengthProperty.Maker(0);
+ genericCondCornerRadius = new CondLengthProperty.Maker(0);
genericCondCornerRadius.useGeneric(genericCondLength);
genericCondCornerRadius.setInherited(false);
genericCondCornerRadius.getSubpropMaker(CP_LENGTH).setDefault("0pt");
genericCondCornerRadius.setPercentBase(LengthBase.CONTAINING_BLOCK_HEIGHT);
- genericCondCornerRadius.addShorthand(generics[PR_X_BORDER_RADIUS]);
// GenericBreak
genericBreak = new EnumProperty.Maker(0);
@@ -2617,53 +2616,59 @@ public final class FOPropertyMapping imp
// fox:border-*-radius-*
-
- // border-before-radius-start
- m = new CondLengthProperty.Maker(PR_X_BORDER_BEFORE_RADIUS_START);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_BEFORE_RADIUS_START);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_BEFORE_START_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
-
addPropertyMaker("fox:border-before-radius-start", m);
- // border-before-radius-end
- m = new CondLengthProperty.Maker(PR_X_BORDER_BEFORE_RADIUS_END);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_BEFORE_RADIUS_END);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_BEFORE_END_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
addPropertyMaker("fox:border-before-radius-end", m);
- // border-after-radius-start
- m = new CondLengthProperty.Maker(PR_X_BORDER_AFTER_RADIUS_START);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_AFTER_RADIUS_START);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_AFTER_START_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
addPropertyMaker("fox:border-after-radius-start", m);
- // border-after-radius-end
- m = new CondLengthProperty.Maker(PR_X_BORDER_AFTER_RADIUS_END);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_AFTER_RADIUS_END);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_AFTER_END_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
addPropertyMaker("fox:border-after-radius-end", m);
- // border-start-radius-before
- m = new CondLengthProperty.Maker(PR_X_BORDER_START_RADIUS_START);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_START_RADIUS_BEFORE);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_BEFORE_START_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
addPropertyMaker("fox:border-start-radius-before", m);
- // border-start-radius-after
- m = new CondLengthProperty.Maker(PR_X_BORDER_START_RADIUS_END);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_START_RADIUS_AFTER);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_AFTER_START_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
addPropertyMaker("fox:border-start-radius-after", m);
- // border-end-radius-before
- m = new CondLengthProperty.Maker(PR_X_BORDER_END_RADIUS_START);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_END_RADIUS_BEFORE);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_BEFORE_END_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
addPropertyMaker("fox:border-end-radius-before", m);
- // border-end-radius-after
- m = new CondLengthProperty.Maker(PR_X_BORDER_END_RADIUS_END);
+ m = new CondLengthProperty.Maker(PR_X_BORDER_END_RADIUS_AFTER);
m.useGeneric(genericCondCornerRadius);
+ m.addShorthand(generics[PR_X_BORDER_AFTER_END_RADIUS]);
+ m.addShorthand(generics[PR_X_BORDER_RADIUS]);
m.getSubpropMaker(CP_CONDITIONALITY).setDefault("discard");
addPropertyMaker("fox:border-end-radius-after", m);
@@ -2793,14 +2798,14 @@ public final class FOPropertyMapping imp
addPropertyMaker("border-right", m);
// border-style
- m = new ListProperty.Maker(PR_BORDER_STYLE);
+ m = new ListProperty.Maker(PR_BORDER_STYLE);
m.setInherited(false);
m.setDefault("");
m.setDatatypeParser(new BoxPropShorthandParser());
addPropertyMaker("border-style", m);
// border-spacing
- m = new ListProperty.Maker(PR_BORDER_SPACING);
+ m = new ListProperty.Maker(PR_BORDER_SPACING);
m.setInherited(true);
m.setDefault("0pt");
m.setDatatypeParser(new BorderSpacingShorthandParser());
@@ -2821,12 +2826,40 @@ public final class FOPropertyMapping imp
addPropertyMaker("border-width", m);
// fox:border-radius
- m = new ListProperty.Maker(PR_X_BORDER_RADIUS);
+ m = new ListProperty.Maker(PR_X_BORDER_RADIUS);
m.setInherited(false);
m.setDatatypeParser(new BoxCornerPropShorthandParser());
m.setPercentBase(LengthBase.CONTAINING_BLOCK_WIDTH);
addPropertyMaker("fox:border-radius", m);
+ // fox:border-before-start-radius
+ m = new ListProperty.Maker(PR_X_BORDER_BEFORE_START_RADIUS);
+ m.setInherited(false);
+ m.setDatatypeParser(new BoxCornerPropShorthandParser());
+ m.setPercentBase(LengthBase.CONTAINING_BLOCK_WIDTH);
+ addPropertyMaker("fox:border-before-start-radius", m);
+
+ // fox:border-before-end-radius
+ m = new ListProperty.Maker(PR_X_BORDER_BEFORE_END_RADIUS);
+ m.setInherited(false);
+ m.setDatatypeParser(new BoxCornerPropShorthandParser());
+ m.setPercentBase(LengthBase.CONTAINING_BLOCK_WIDTH);
+ addPropertyMaker("fox:border-before-end-radius", m);
+
+ // fox:border-after-start-radius
+ m = new ListProperty.Maker(PR_X_BORDER_AFTER_START_RADIUS);
+ m.setInherited(false);
+ m.setDatatypeParser(new BoxCornerPropShorthandParser());
+ m.setPercentBase(LengthBase.CONTAINING_BLOCK_WIDTH);
+ addPropertyMaker("fox:border-after-start-radius", m);
+
+ // fox:border-after-end-radius
+ m = new ListProperty.Maker(PR_X_BORDER_AFTER_END_RADIUS);
+ m.setInherited(false);
+ m.setDatatypeParser(new BoxCornerPropShorthandParser());
+ m.setPercentBase(LengthBase.CONTAINING_BLOCK_WIDTH);
+ addPropertyMaker("fox:border-after-end-radius", m);
+
// cue
m = new ToBeImplementedProperty.Maker(PR_CUE);
m.setInherited(false);
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java
Mon Oct 22 14:06:43 2012
@@ -40,8 +40,7 @@ public class ExtensionElementMapping ext
/** The standard XML prefix for elements and attributes in this namespace.
*/
public static final String STANDARD_PREFIX = "fox";
- private static final Set<String> PROPERTY_ATTRIBUTES
- = new java.util.HashSet<String>();
+ private static final Set<String> PROPERTY_ATTRIBUTES = new
java.util.HashSet<String>();
static {
//These are FOP's standard extension properties (fox:*)
@@ -63,6 +62,10 @@ public class ExtensionElementMapping ext
PROPERTY_ATTRIBUTES.add("border-end-radius-before");
PROPERTY_ATTRIBUTES.add("border-end-radius-after");
PROPERTY_ATTRIBUTES.add("border-radius");
+ PROPERTY_ATTRIBUTES.add("border-before-start-radius");
+ PROPERTY_ATTRIBUTES.add("border-before-end-radius");
+ PROPERTY_ATTRIBUTES.add("border-after-start-radius");
+ PROPERTY_ATTRIBUTES.add("border-after-end-radius");
}
/**
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/BoxCornerPropShorthandParser.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/BoxCornerPropShorthandParser.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/BoxCornerPropShorthandParser.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/BoxCornerPropShorthandParser.java
Mon Oct 22 14:06:43 2012
@@ -39,8 +39,8 @@ public class BoxCornerPropShorthandParse
* If 2 value are present the first is the corner radius in the IP
direction,
* the second in the BP direction.
* {@inheritDoc}
- * int, Property, PropertyMaker, PropertyList)
*/
+ @Override
protected Property convertValueForProperty(int propId,
Property property,
PropertyMaker maker,
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java
Mon Oct 22 14:06:43 2012
@@ -372,15 +372,15 @@ public class CommonBorderPaddingBackgrou
Constants.PR_BORDER_START_STYLE,
Constants.PR_BORDER_START_WIDTH,
Constants.PR_PADDING_START,
- Constants.PR_X_BORDER_START_RADIUS_START,
- Constants.PR_X_BORDER_START_RADIUS_END);
+ Constants.PR_X_BORDER_START_RADIUS_BEFORE,
+ Constants.PR_X_BORDER_START_RADIUS_AFTER);
initBorderInfo(pList, END,
Constants.PR_BORDER_END_COLOR,
Constants.PR_BORDER_END_STYLE,
Constants.PR_BORDER_END_WIDTH,
Constants.PR_PADDING_END,
- Constants.PR_X_BORDER_END_RADIUS_START,
- Constants.PR_X_BORDER_END_RADIUS_END);
+ Constants.PR_X_BORDER_END_RADIUS_BEFORE,
+ Constants.PR_X_BORDER_END_RADIUS_AFTER);
}
@@ -452,15 +452,12 @@ public class CommonBorderPaddingBackgrou
padding[side] = pList.get(paddingProp).getCondLength();
// If style = none, force width to 0, don't get Color (spec 7.7.20)
int style = pList.get(styleProp).getEnum();
- // if (style != Constants.EN_NONE) {
- FOUserAgent ua = pList.getFObj().getUserAgent();
- setBorderInfo(BorderInfo.getInstance(style,
- pList.get(widthProp).getCondLength(),
- pList.get(colorProp).getColor(ua),
- pList.get(radiusStartProp).getCondLength(),
- pList.get(radiusEndProp).getCondLength()), side);
- // }
-
+ FOUserAgent ua = pList.getFObj().getUserAgent();
+ setBorderInfo(BorderInfo.getInstance(style,
+ pList.get(widthProp).getCondLength(),
+ pList.get(colorProp).getColor(ua),
+ pList.get(radiusStartProp).getCondLength(),
+ pList.get(radiusEndProp).getCondLength()), side);
}
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/layoutmgr/TraitSetter.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/layoutmgr/TraitSetter.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/layoutmgr/TraitSetter.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/layoutmgr/TraitSetter.java
Mon Oct 22 14:06:43 2012
@@ -104,14 +104,16 @@ public final class TraitSetter {
*/
private static void addBorderTrait(Area area,
CommonBorderPaddingBackground bpProps,
- boolean bDiscard, int iSide,
BorderProps.Mode mode,
+
+ boolean discard, int side,
BorderProps.Mode mode,
Integer traitCode, PercentBaseContext
context) {
- int iBP = bpProps.getBorderWidth(iSide, bDiscard);
- int radiusStart = bpProps.getBorderRadiusStart(iSide, bDiscard,
context);
- int radiusEnd = bpProps.getBorderRadiusEnd(iSide, bDiscard, context);
- if (iBP > 0 || radiusStart > 0 || radiusEnd > 0) {
- area.addTrait(traitCode, new
BorderProps(bpProps.getBorderStyle(iSide), iBP, radiusStart, radiusEnd,
- bpProps.getBorderColor(iSide), mode));
+ int width = bpProps.getBorderWidth(side, discard);
+ int radiusStart = bpProps.getBorderRadiusStart(side, discard, context);
+ int radiusEnd = bpProps.getBorderRadiusEnd(side, discard, context);
+ if (width > 0 || radiusStart > 0 || radiusEnd > 0) {
+ area.addTrait(traitCode, new
BorderProps(bpProps.getBorderStyle(side), width, radiusStart,
+ radiusEnd, bpProps.getBorderColor(side), mode));
+
}
}
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/render/intermediate/BorderPainter.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/render/intermediate/BorderPainter.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/render/intermediate/BorderPainter.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/src/java/org/apache/fop/render/intermediate/BorderPainter.java
Mon Oct 22 14:06:43 2012
@@ -30,9 +30,6 @@ import org.apache.fop.traits.BorderProps
*/
public class BorderPainter {
- /** TODO remove before integration*/
- public static final String ROUNDED_CORNERS = "fop.round-corners";
-
// TODO Use a class to model border instead of an array
/** Convention index of before top */
protected static final int TOP = 0;
@@ -318,10 +315,10 @@ public class BorderPainter {
final int ex2 = ex1 - end.getWidth() + end.getClippedWidth();
final int outery = -before.getClippedWidth();
final int innery = outery + before.getWidth();
- final int ellipseSBRadiusX = (int) (cornerCorrectionFactor *
start.getRadiusEnd());
- final int ellipseSBRadiusY = (int) (cornerCorrectionFactor *
before.getRadiusStart());
- final int ellipseBERadiusX = (int) (cornerCorrectionFactor *
end.getRadiusStart());
- final int ellipseBERadiusY = (int) (cornerCorrectionFactor *
before.getRadiusEnd());
+ final int ellipseSBRadiusX = correctRadius(cornerCorrectionFactor,
start.getRadiusEnd());
+ final int ellipseSBRadiusY = correctRadius(cornerCorrectionFactor,
before.getRadiusStart());
+ final int ellipseBERadiusX = correctRadius(cornerCorrectionFactor,
end.getRadiusStart());
+ final int ellipseBERadiusY = correctRadius(cornerCorrectionFactor,
before.getRadiusEnd());
saveGraphicsState();
translateCoordinates(x, y);
if (orientation != 0) {
@@ -406,6 +403,10 @@ public class BorderPainter {
}
}
+ private static int correctRadius(double cornerCorrectionFactor, int
radius) {
+ return (int) (Math.round(cornerCorrectionFactor * radius));
+ }
+
private static BorderSegment borderSegmentForBefore(BorderProps before) {
return AbstractBorderSegment.asBorderSegment(before);
}
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
Mon Oct 22 14:06:43 2012
@@ -24,64 +24,43 @@ import java.awt.Rectangle;
import org.junit.Test;
-import static org.junit.Assert.fail;
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.fo.Constants;
+import org.apache.fop.render.intermediate.IFContext;
+import org.apache.fop.traits.BorderProps;
+
import static org.mockito.Matchers.endsWith;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import org.apache.fop.apps.FOUserAgent;
-import org.apache.fop.fo.Constants;
-import org.apache.fop.render.intermediate.IFContext;
-import org.apache.fop.traits.BorderProps;
-
public class PDFPainterTestCase {
@Test
- public void testDrawBorderRect() {
+ public void testDrawBorderRect() throws Exception {
// the goal of this test is to check that the drawing of rounded
corners in PDF calls
// PDFGraphicsPaiter.cubicBezierTo(); the check is done by verifying
that a " c " command is written
// to the PDFContentGenerator
- // mock
PDFContentGenerator pdfContentGenerator =
mock(PDFContentGenerator.class);
- // the next line is commented out because the format() method is
static and not possible to mock
- // when(PDFContentGenerator.format(anyFloat())).thenReturn("20.0");
- // mock
FOUserAgent foUserAgent = mock(FOUserAgent.class);
when(foUserAgent.isAccessibilityEnabled()).thenReturn(false);
- // mock
IFContext ifContext = mock(IFContext.class);
when(ifContext.getUserAgent()).thenReturn(foUserAgent);
- // mock
PDFDocumentHandler pdfDocumentHandler = mock(PDFDocumentHandler.class);
when(pdfDocumentHandler.getGenerator()).thenReturn(pdfContentGenerator);
when(pdfDocumentHandler.getContext()).thenReturn(ifContext);
- // mock
PDFLogicalStructureHandler pdfLogicalStructureHandler =
mock(PDFLogicalStructureHandler.class);
- // real, not mock
PDFPainter pdfPainter = new PDFPainter(pdfDocumentHandler,
pdfLogicalStructureHandler);
// build rectangle 200 x 50 (points, which are converted to milipoints)
Rectangle rectangle = new Rectangle(0, 0, 200000, 50000);
// build border properties: width 4pt, radius 30pt
- int style = Constants.EN_SOLID;
- BorderProps.Mode mode = BorderProps.Mode.SEPARATE;
- Color color = Color.BLACK;
- int borderWidth = 4000;
- int radiusStart = 30000;
- int radiusEnd = 30000;
- BorderProps border1 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
- BorderProps border2 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
- BorderProps border3 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
- BorderProps border4 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
- try {
- pdfPainter.drawBorderRect(rectangle, border1, border2, border3,
border4, Color.WHITE);
- // since we cannot mock the PDFContentGenerator.format() static
method we have to restrict the
- // verification to commands that end with " c ".
- verify(pdfContentGenerator, times(16)).add(endsWith(" c "));
- } catch (Exception e) {
- fail("something broke...");
- }
+ BorderProps border = new BorderProps(Constants.EN_SOLID, 4000, 30000,
30000, Color.BLACK,
+ BorderProps.Mode.SEPARATE);
+ pdfPainter.drawBorderRect(rectangle, border, border, border, border,
Color.WHITE);
+ // since we cannot mock the PDFContentGenerator.format() static method
we have to restrict the
+ // verification to commands that end with " c ".
+ verify(pdfContentGenerator, times(16)).add(endsWith(" c "));
}
}
Modified:
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/ps/PSPainterTestCase.java?rev=1400883&r1=1400882&r2=1400883&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
(original)
+++
xmlgraphics/fop/branches/Temp_RoundedCorners/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
Mon Oct 22 14:06:43 2012
@@ -87,32 +87,20 @@ public class PSPainterTestCase {
// the goal of this test is to check that the drawing of rounded
corners in PS calls
// PSGraphicsPaiter.cubicBezierTo(); the check is done by verifying
that a curveto command is written
// to the PSGenerator
- // mock
PSGenerator psGenerator = mock(PSGenerator.class);
when(psGenerator.formatDouble(anyFloat())).thenReturn("20.0"); //
simplify!
- // mock
PSRenderingUtil psRenderingUtil = mock(PSRenderingUtil.class);
- // mock
PSDocumentHandler psDocumentHandler = mock(PSDocumentHandler.class);
when(psDocumentHandler.getGenerator()).thenReturn(psGenerator);
when(psDocumentHandler.getPSUtil()).thenReturn(psRenderingUtil);
- // real instance, no mock
PSPainter psPainter = new PSPainter(psDocumentHandler);
// build rectangle 200 x 50 (points, which are converted to milipoints)
Rectangle rectangle = new Rectangle(0, 0, 200000, 50000);
// build border properties: width 4pt, radius 30pt
- int style = Constants.EN_SOLID;
- BorderProps.Mode mode = BorderProps.Mode.SEPARATE;
- Color color = Color.BLACK;
- int borderWidth = 4000;
- int radiusStart = 30000;
- int radiusEnd = 30000;
- BorderProps border1 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
- BorderProps border2 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
- BorderProps border3 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
- BorderProps border4 = new BorderProps(style, borderWidth, radiusStart,
radiusEnd, color, mode);
+ BorderProps border = new BorderProps(Constants.EN_SOLID, 4000, 30000,
30000, Color.BLACK,
+ BorderProps.Mode.SEPARATE);
try {
- psPainter.drawBorderRect(rectangle, border1, border2, border3,
border4, Color.WHITE);
+ psPainter.drawBorderRect(rectangle, border, border, border,
border, Color.WHITE);
verify(psGenerator, times(16)).writeln("20.0 20.0 20.0 20.0 20.0
20.0 curveto ");
} catch (Exception e) {
fail("something broke...");
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]