You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by cb...@apache.org on 2009/10/12 09:26:04 UTC
svn commit: r824249 - in /xmlgraphics/fop/trunk: ./ lib/
src/documentation/content/xdocs/trunk/ src/java/org/apache/fop/afp/
src/java/org/apache/fop/render/afp/
src/java/org/apache/fop/render/afp/extensions/
Author: cbowditch
Date: Mon Oct 12 07:26:03 2009
New Revision: 824249
URL: http://svn.apache.org/viewvc?rev=824249&view=rev
Log:
add support for positioning Page Overlay in AFP Renderer/Painter
Added:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlay.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlayElement.java
Modified:
xmlgraphics/fop/trunk/lib/xmlgraphics-commons-1.4svn.jar
xmlgraphics/fop/trunk/src/documentation/content/xdocs/trunk/output.xml
xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/DataStream.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRenderer.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java
xmlgraphics/fop/trunk/status.xml
Modified: xmlgraphics/fop/trunk/lib/xmlgraphics-commons-1.4svn.jar
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/lib/xmlgraphics-commons-1.4svn.jar?rev=824249&r1=824248&r2=824249&view=diff
==============================================================================
Binary files - no diff available.
Modified: xmlgraphics/fop/trunk/src/documentation/content/xdocs/trunk/output.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/documentation/content/xdocs/trunk/output.xml?rev=824249&r1=824248&r2=824249&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/documentation/content/xdocs/trunk/output.xml (original)
+++ xmlgraphics/fop/trunk/src/documentation/content/xdocs/trunk/output.xml Mon Oct 12 07:26:03 2009
@@ -766,13 +766,14 @@
<source><![CDATA[
<fo:layout-master-set>
<fo:simple-page-master master-name="simple">
- <afp:include-page-overlay name="O1SAMP1 " />
+ <afp:include-page-overlay name="O1SAMP1 " x="20mm" y="30mm" />
...
</fo:simple-page-master>
</fo:layout-master-set>
]]></source>
<p>The mandatory name attribute must refer to an 8 character (space padded) resource name that
- must be known in the AFP processing environment.</p>
+ must be known in the AFP processing environment. Optional x and y attributes can be specified
+ to place the Overlay at an offset from the top left of the page.</p>
</section>
<section id="afp-page-segment">
<title>Page Segment (IPS) Extension</title>
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/DataStream.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/DataStream.java?rev=824249&r1=824248&r2=824249&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/DataStream.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/DataStream.java Mon Oct 12 07:26:03 2009
@@ -485,9 +485,11 @@
*
* @param name
* the name of the static overlay
+ * @param x x-coordinate
+ * @param y y-coordinate
*/
- public void createIncludePageOverlay(String name) {
- currentPageObject.createIncludePageOverlay(name, 0, 0, paintingState.getRotation());
+ public void createIncludePageOverlay(String name, int x, int y) {
+ currentPageObject.createIncludePageOverlay(name, x, y, paintingState.getRotation());
currentPageObject.getActiveEnvironmentGroup().createOverlay(name);
}
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java?rev=824249&r1=824248&r2=824249&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java Mon Oct 12 07:26:03 2009
@@ -47,6 +47,7 @@
import org.apache.fop.render.afp.extensions.AFPIncludeFormMap;
import org.apache.fop.render.afp.extensions.AFPInvokeMediumMap;
import org.apache.fop.render.afp.extensions.AFPPageSetup;
+import org.apache.fop.render.afp.extensions.AFPPageOverlay;
import org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler;
import org.apache.fop.render.intermediate.IFDocumentHandler;
import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
@@ -286,12 +287,7 @@
"AFP page setup extension encountered outside the page header: " + aps,
null);
}
- if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(element)) {
- String overlay = aps.getName();
- if (overlay != null) {
- dataStream.createIncludePageOverlay(overlay);
- }
- } else if (AFPElementMapping.INCLUDE_PAGE_SEGMENT.equals(element)) {
+ if (AFPElementMapping.INCLUDE_PAGE_SEGMENT.equals(element)) {
String name = aps.getName();
String source = aps.getValue();
pageSegmentMap.put(source, name);
@@ -302,6 +298,17 @@
}
}
}
+ } else if (extension instanceof AFPPageOverlay) {
+ AFPPageOverlay ipo = (AFPPageOverlay)extension;
+ if (this.location != LOC_IN_PAGE_HEADER) {
+ throw new IFException(
+ "AFP page overlay extension encountered outside the page header: " + ipo,
+ null);
+ }
+ String overlay = ipo.getName();
+ if (overlay != null) {
+ dataStream.createIncludePageOverlay(overlay, ipo.getX(), ipo.getY());
+ }
} else if (extension instanceof AFPInvokeMediumMap) {
if (this.location != LOC_FOLLOWING_PAGE_SEQUENCE
&& this.location != LOC_IN_PAGE_HEADER) {
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRenderer.java?rev=824249&r1=824248&r2=824249&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRenderer.java Mon Oct 12 07:26:03 2009
@@ -91,6 +91,7 @@
import org.apache.fop.render.afp.extensions.AFPIncludeFormMap;
import org.apache.fop.render.afp.extensions.AFPInvokeMediumMap;
import org.apache.fop.render.afp.extensions.AFPPageSetup;
+import org.apache.fop.render.afp.extensions.AFPPageOverlay;
/**
* This is an implementation of a FOP Renderer that renders areas to AFP.
@@ -758,12 +759,7 @@
if (attachment instanceof AFPPageSetup) {
AFPPageSetup aps = (AFPPageSetup) attachment;
String element = aps.getElementName();
- if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(element)) {
- String overlay = aps.getName();
- if (overlay != null) {
- dataStream.createIncludePageOverlay(overlay);
- }
- } else if (AFPElementMapping.INCLUDE_PAGE_SEGMENT
+ if (AFPElementMapping.INCLUDE_PAGE_SEGMENT
.equals(element)) {
String name = aps.getName();
String source = aps.getValue();
@@ -779,6 +775,15 @@
dataStream.createNoOperation(content);
}
}
+ } else if (attachment instanceof AFPPageOverlay) {
+ AFPPageOverlay ipo = (AFPPageOverlay) attachment;
+ String element = ipo.getElementName();
+ if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(element)) {
+ String overlay = ipo.getName();
+ if (overlay != null) {
+ dataStream.createIncludePageOverlay(overlay, ipo.getX(), ipo.getY());
+ }
+ }
}
}
}
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java?rev=824249&r1=824248&r2=824249&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java Mon Oct 12 07:26:03 2009
@@ -97,7 +97,7 @@
static class AFPIncludePageOverlayMaker extends ElementMapping.Maker {
public FONode make(FONode parent) {
- return new AFPPageSetupElement(parent, INCLUDE_PAGE_OVERLAY);
+ return new AFPPageOverlayElement(parent, INCLUDE_PAGE_OVERLAY);
}
}
Added: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlay.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlay.java?rev=824249&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlay.java (added)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlay.java Mon Oct 12 07:26:03 2009
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id: AFPIncludeFormMap.java 798207 2009-07-27 16:33:01Z jeremias $ */
+
+package org.apache.fop.render.afp.extensions;
+
+import java.net.URI;
+
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+import org.apache.fop.fo.extensions.ExtensionAttachment;
+
+/**
+ * This extension allows to include an AFP Page Overlay resource. It is implemented as an extension
+ * attachment ({@link ExtensionAttachment}).
+ */
+public class AFPPageOverlay extends AFPExtensionAttachment {
+
+ private static final long serialVersionUID = 8548056652642588919L;
+
+ /** X coordinate attribute */
+ protected static final String ATT_X = "X";
+ /** X coordinate attribute */
+ protected static final String ATT_Y = "Y";
+
+ /**
+ * The x coordinate
+ */
+ private int x = 0;
+
+ /**
+ * The y coordinate
+ */
+ private int y = 0;
+
+ /**
+ * Default constructor.
+ */
+ public AFPPageOverlay() {
+ super(AFPElementMapping.INCLUDE_PAGE_OVERLAY);
+ }
+
+ /**
+ * returns X coordinate
+ * @return x integer
+ */
+ public int getX() {
+ return x;
+ }
+
+ /**
+ * Sets the X coordinate
+ * @param x The integer to be set.
+ */
+ public void setX(int x) {
+ this.x = x;
+ }
+
+ /**
+ * returns Y coordinate
+ * @return y integer
+ */
+ public int getY() {
+ return y;
+ }
+
+ /**
+ * Sets the Y coordinate
+ * @param y The integer to be set.
+ */
+ public void setY(int y) {
+ this.y = y;
+ }
+
+ /** {@inheritDoc} */
+ public void toSAX(ContentHandler handler) throws SAXException {
+ AttributesImpl atts = new AttributesImpl();
+ if (name != null && name.length() > 0) {
+ atts.addAttribute(null, ATT_NAME, ATT_NAME, "CDATA", name);
+ }
+ handler.startElement(CATEGORY, elementName, elementName, atts);
+ handler.endElement(CATEGORY, elementName, elementName);
+ }
+
+ /** {@inheritDoc} */
+ public String toString() {
+ return getClass().getName() + "(element-name=" + getElementName()
+ + " name=" + getName() + " x=" + getX() + " y=" + getY() + ")";
+ }
+}
Added: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlayElement.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlayElement.java?rev=824249&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlayElement.java (added)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlayElement.java Mon Oct 12 07:26:03 2009
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id: AFPPageSetupElement.java 798207 2009-07-27 16:33:01Z jeremias $ */
+
+package org.apache.fop.render.afp.extensions;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+
+import org.apache.fop.apps.FOPException;
+import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.extensions.ExtensionAttachment;
+import org.apache.fop.afp.AFPPaintingState;
+import org.apache.fop.afp.AFPUnitConverter;
+import org.apache.xmlgraphics.util.UnitConv;
+
+/**
+ * This class extends the org.apache.fop.render.afp.extensions.AbstractAFPExtensionObject class.
+ * This object will be used to map the page overlay object in AFPElementMapping.
+ * <p/>
+ */
+public class AFPPageOverlayElement extends AbstractAFPExtensionObject {
+
+ private static final String ATT_X = "x";
+ private static final String ATT_Y = "y";
+
+ /**
+ * Constructs an AFP object (called by Maker).
+ *
+ * @param parent the parent formatting object
+ * @param name the name of the afp element
+ */
+ public AFPPageOverlayElement(FONode parent, String name) {
+ super(parent, name);
+ }
+
+ private AFPPageOverlay getPageSetupAttachment() {
+ return (AFPPageOverlay)getExtensionAttachment();
+ }
+
+ /** {@inheritDoc} */
+ protected void startOfNode() throws FOPException {
+ super.startOfNode();
+ if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(getLocalName())) {
+ if (parent.getNameId() != Constants.FO_SIMPLE_PAGE_MASTER
+ && parent.getNameId() != Constants.FO_PAGE_SEQUENCE) {
+ invalidChildError(getLocator(), parent.getName(), getNamespaceURI(), getName(),
+ "rule.childOfPageSequenceOrSPM");
+ }
+ } else {
+ if (parent.getNameId() != Constants.FO_SIMPLE_PAGE_MASTER) {
+ invalidChildError(getLocator(), parent.getName(), getNamespaceURI(), getName(),
+ "rule.childOfSPM");
+ }
+ }
+ }
+
+
+ /** {@inheritDoc} */
+ public void processNode(String elementName, Locator locator,
+ Attributes attlist, PropertyList propertyList)
+ throws FOPException {
+ super.processNode(elementName, locator, attlist, propertyList);
+ AFPPageOverlay pageOverlay = getPageSetupAttachment();
+ if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(elementName)) {
+ // convert user specific units to mpts and set the coordinates for the page overlay
+ AFPPaintingState paintingState = new AFPPaintingState();
+ AFPUnitConverter unitConverter = new AFPUnitConverter(paintingState);
+ int x = (int)unitConverter.mpt2units(UnitConv.convert(attlist.getValue(ATT_X)));
+ int y = (int)unitConverter.mpt2units(UnitConv.convert(attlist.getValue(ATT_Y)));
+ pageOverlay.setX(x);
+ pageOverlay.setY(y);
+ }
+ }
+
+ /** {@inheritDoc} */
+ protected ExtensionAttachment instantiateExtensionAttachment() {
+ return new AFPPageOverlay();
+ }
+}
Modified: xmlgraphics/fop/trunk/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/status.xml?rev=824249&r1=824248&r2=824249&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/status.xml (original)
+++ xmlgraphics/fop/trunk/status.xml Mon Oct 12 07:26:03 2009
@@ -58,6 +58,9 @@
documents. Example: the fix of marks layering will be such a case when it's done.
-->
<release version="FOP Trunk" date="TBD">
+ <action context="Renderers" dev="CB" type="add">
+ Added support for positioning Page Overlays in AFP Output
+ </action>
<action context="Fonts" dev="JM" type="add">
Added support for specifying referenced fonts per renderer in addition to the general
match list.
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org