import org.apache.fop.area.AreaTree;
import org.apache.fop.area.AreaTreeModel;
-import org.apache.fop.extensions.Bookmarks;
+import org.apache.fop.fo.extensions.Bookmarks;
import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fo.FOTreeEvent;
import org.apache.fop.fo.FOTreeListener;
+++ /dev/null
-/*
- * $Id: Bookmarks.java,v 1.7 2003/03/05 20:40:18 jeremias Exp $
- * ============================================================================
- * The Apache Software License, Version 1.1
- * ============================================================================
- *
- * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modifica-
- * tion, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. The end-user documentation included with the redistribution, if any, must
- * include the following acknowledgment: "This product includes software
- * developed by the Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself, if
- * and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "FOP" and "Apache Software Foundation" must not be used to
- * endorse or promote products derived from this software without prior
- * written permission. For written permission, please contact
- * apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache", nor may
- * "Apache" appear in their name, without prior written permission of the
- * Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ============================================================================
- *
- * This software consists of voluntary contributions made by many individuals
- * on behalf of the Apache Software Foundation and was originally created by
- * James Tauber <jtauber@jtauber.com>. For more information on the Apache
- * Software Foundation, please see <http://www.apache.org/>.
- */
-package org.apache.fop.extensions;
-
-import org.apache.fop.fo.FONode;
-import org.apache.fop.fo.FOTreeVisitor;
-
-import java.util.ArrayList;
-
-/**
- * Bookmarks data is the top level element of the pdf bookmark extension.
- * This handles the adding of outlines. When the element is ended it
- * creates the bookmark data and adds to the area tree.
- */
-public class Bookmarks extends ExtensionObj {
- private ArrayList outlines = new ArrayList();
-
- /**
- * Create a new Bookmarks object.
- *
- * @param parent the parent fo node
- */
- public Bookmarks(FONode parent) {
- super(parent);
- }
-
- /**
- * Add the child to the top level.
- * This handles all Outline objects added and ignores others.
- *
- * @param obj the child to add
- */
- protected void addChild(FONode obj) {
- if (obj instanceof Outline) {
- outlines.add(obj);
- }
- }
-
- /**
- * When this element is finished then it can create
- * the bookmark data from the child elements and add
- * the extension to the area tree.
- */
- public void end() {
- getFOTreeControl().setBookmarks(this);
- }
-
- public void acceptVisitor(FOTreeVisitor fotv) {
- fotv.serveVisitor(this);
- }
-
- public ArrayList getOutlines() {
- return outlines;
- }
-
-}
+++ /dev/null
-/*
- * $Id: ExtensionElementMapping.java,v 1.10 2003/03/05 20:40:18 jeremias Exp $
- * ============================================================================
- * The Apache Software License, Version 1.1
- * ============================================================================
- *
- * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modifica-
- * tion, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. The end-user documentation included with the redistribution, if any, must
- * include the following acknowledgment: "This product includes software
- * developed by the Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself, if
- * and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "FOP" and "Apache Software Foundation" must not be used to
- * endorse or promote products derived from this software without prior
- * written permission. For written permission, please contact
- * apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache", nor may
- * "Apache" appear in their name, without prior written permission of the
- * Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ============================================================================
- *
- * This software consists of voluntary contributions made by many individuals
- * on behalf of the Apache Software Foundation and was originally created by
- * James Tauber <jtauber@jtauber.com>. For more information on the Apache
- * Software Foundation, please see <http://www.apache.org/>.
- */
-package org.apache.fop.extensions;
-
-import org.apache.fop.fo.FONode;
-import org.apache.fop.fo.ElementMapping;
-
-import java.util.HashMap;
-
-/**
- * Element mapping for the pdf bookmark extension.
- * This sets up the mapping for the classes that handle the
- * pdf bookmark extension.
- */
-public class ExtensionElementMapping extends ElementMapping {
-
- /**
- * Constructor.
- */
- public ExtensionElementMapping() {
- namespaceURI = "http://xml.apache.org/fop/extensions";
- }
-
- /**
- * Initialize the data structures.
- */
- protected void initialize() {
- if (foObjs == null) {
- foObjs = new HashMap();
- foObjs.put("bookmarks", new B());
- foObjs.put("outline", new O());
- foObjs.put("label", new L());
- }
- }
-
- static class B extends ElementMapping.Maker {
- public FONode make(FONode parent) {
- return new Bookmarks(parent);
- }
- }
-
- static class O extends ElementMapping.Maker {
- public FONode make(FONode parent) {
- return new Outline(parent);
- }
- }
-
- static class L extends ElementMapping.Maker {
- public FONode make(FONode parent) {
- return new Label(parent);
- }
- }
-}
+++ /dev/null
-/*
- * $Id: ExtensionObj.java,v 1.7 2003/03/05 20:40:18 jeremias Exp $
- * ============================================================================
- * The Apache Software License, Version 1.1
- * ============================================================================
- *
- * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modifica-
- * tion, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. The end-user documentation included with the redistribution, if any, must
- * include the following acknowledgment: "This product includes software
- * developed by the Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself, if
- * and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "FOP" and "Apache Software Foundation" must not be used to
- * endorse or promote products derived from this software without prior
- * written permission. For written permission, please contact
- * apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache", nor may
- * "Apache" appear in their name, without prior written permission of the
- * Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ============================================================================
- *
- * This software consists of voluntary contributions made by many individuals
- * on behalf of the Apache Software Foundation and was originally created by
- * James Tauber <jtauber@jtauber.com>. For more information on the Apache
- * Software Foundation, please see <http://www.apache.org/>.
- */
-package org.apache.fop.extensions;
-
-import org.apache.fop.fo.FONode;
-import org.apache.fop.fo.FObj;
-import org.apache.fop.fo.FOTreeVisitor;
-
-/**
- * Base class for pdf bookmark extension objects.
- */
-public abstract class ExtensionObj extends FObj {
-
- /**
- * Create a new extension object.
- *
- * @param parent the parent formatting object
- */
- public ExtensionObj(FONode parent) {
- super(parent);
- }
-
- public void acceptVisitor(FOTreeVisitor fotv) {
- fotv.serveVisitor(this);
- }
-
-}
-
+++ /dev/null
-/*
- * $Id: Label.java,v 1.7 2003/03/05 20:40:18 jeremias Exp $
- * ============================================================================
- * The Apache Software License, Version 1.1
- * ============================================================================
- *
- * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modifica-
- * tion, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. The end-user documentation included with the redistribution, if any, must
- * include the following acknowledgment: "This product includes software
- * developed by the Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself, if
- * and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "FOP" and "Apache Software Foundation" must not be used to
- * endorse or promote products derived from this software without prior
- * written permission. For written permission, please contact
- * apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache", nor may
- * "Apache" appear in their name, without prior written permission of the
- * Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ============================================================================
- *
- * This software consists of voluntary contributions made by many individuals
- * on behalf of the Apache Software Foundation and was originally created by
- * James Tauber <jtauber@jtauber.com>. For more information on the Apache
- * Software Foundation, please see <http://www.apache.org/>.
- */
-package org.apache.fop.extensions;
-
-import org.apache.fop.fo.FONode;
-import org.apache.fop.fo.FOTreeVisitor;
-
-/**
- * Labal for PDF bookmark extension.
- * This element contains the label for the bookmark object.
- */
-public class Label extends ExtensionObj {
- private String label = "";
-
- /**
- * Create a new label object.
- *
- * @param parent the fo node parent
- */
- public Label(FONode parent) {
- super(parent);
- }
-
- /**
- * Add the characters to this label.
- * The text data inside the label xml element is used for the label string.
- *
- * @param data the character data
- * @param start the start position in the data array
- * @param end the end position in the character array
- */
- protected void addCharacters(char data[], int start, int end) {
- label += new String(data, start, end - start);
- }
-
- /**
- * Get the string for this label.
- *
- * @return the label string
- */
- public String toString() {
- return label;
- }
-
- public void acceptVisitor(FOTreeVisitor fotv) {
- fotv.serveVisitor(this);
- }
-
-}
+++ /dev/null
-/*
- * $Id: Outline.java,v 1.10 2003/03/05 20:40:18 jeremias Exp $
- * ============================================================================
- * The Apache Software License, Version 1.1
- * ============================================================================
- *
- * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modifica-
- * tion, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. The end-user documentation included with the redistribution, if any, must
- * include the following acknowledgment: "This product includes software
- * developed by the Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself, if
- * and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "FOP" and "Apache Software Foundation" must not be used to
- * endorse or promote products derived from this software without prior
- * written permission. For written permission, please contact
- * apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache", nor may
- * "Apache" appear in their name, without prior written permission of the
- * Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ============================================================================
- *
- * This software consists of voluntary contributions made by many individuals
- * on behalf of the Apache Software Foundation and was originally created by
- * James Tauber <jtauber@jtauber.com>. For more information on the Apache
- * Software Foundation, please see <http://www.apache.org/>.
- */
-package org.apache.fop.extensions;
-
-import org.apache.fop.fo.FONode;
-import org.apache.fop.fo.FOTreeVisitor;
-import org.apache.fop.apps.FOPException;
-
-import java.util.ArrayList;
-
-import org.xml.sax.Attributes;
-
-/**
- * The outline object for the pdf bookmark extension.
- * The outline element contains a label and optionally more outlines.
- */
-public class Outline extends ExtensionObj {
- private Label label;
- private ArrayList outlines = new ArrayList();
-
- private String internalDestination;
- private String externalDestination;
-
- /**
- * Create a new outline object.
- *
- * @param parent the parent fo node
- */
- public Outline(FONode parent) {
- super(parent);
- }
-
- /**
- * The attribues on the outline object are the internal and external
- * destination. One of these is required.
- *
- * @param attlist the attribute list
- * @throws FOPException a fop exception if there is an error
- */
- public void handleAttrs(Attributes attlist) throws FOPException {
- internalDestination =
- attlist.getValue("internal-destination");
- externalDestination =
- attlist.getValue("external-destination");
- if (externalDestination != null && !externalDestination.equals("")) {
- getLogger().warn("fox:outline external-destination not supported currently.");
- }
-
- if (internalDestination == null || internalDestination.equals("")) {
- getLogger().warn("fox:outline requires an internal-destination.");
- }
-
- }
-
- /**
- * Add the child to this outline.
- * This checks for the type, label or outline and handles appropriately.
- *
- * @param obj the child object
- */
- protected void addChild(FONode obj) {
- if (obj instanceof Label) {
- label = (Label)obj;
- } else if (obj instanceof Outline) {
- outlines.add(obj);
- }
- }
-
- /**
- * Get the label string.
- * This gets the label string from the child label element.
- *
- * @return the label string or empty if not found
- */
- public String getLabel() {
- return label == null ? "" : label.toString();
- }
-
- public void acceptVisitor(FOTreeVisitor fotv) {
- fotv.serveVisitor(this);
- }
-
- public String getInternalDestination() {
- return internalDestination;
- }
-
- public String getExternalDestination() {
- return externalDestination;
- }
-
- public ArrayList getOutlines() {
- return outlines;
- }
-
-}
private void setupDefaultMappings() {
addElementMapping("org.apache.fop.fo.FOElementMapping");
addElementMapping("org.apache.fop.svg.SVGElementMapping");
- addElementMapping("org.apache.fop.extensions.ExtensionElementMapping");
+ addElementMapping("org.apache.fop.fo.extensions.ExtensionElementMapping");
// add mappings from available services
Iterator providers =
import java.util.Map;
// FOP
-import org.apache.fop.extensions.Bookmarks;
+import org.apache.fop.fo.extensions.Bookmarks;
import org.apache.fop.fonts.FontMetrics;
/**
import org.apache.fop.fo.pagination.ColorProfile;
import org.apache.fop.fo.pagination.ConditionalPageMasterReference;
import org.apache.fop.fo.pagination.Declarations;
-import org.apache.fop.extensions.ExtensionObj;
-import org.apache.fop.extensions.Bookmarks;
-import org.apache.fop.extensions.Label;
-import org.apache.fop.extensions.Outline;
+import org.apache.fop.fo.extensions.ExtensionObj;
+import org.apache.fop.fo.extensions.Bookmarks;
+import org.apache.fop.fo.extensions.Label;
+import org.apache.fop.fo.extensions.Outline;
import org.apache.fop.fo.flow.ExternalGraphic;
import org.apache.fop.fo.pagination.Flow;
import org.apache.fop.fo.pagination.StaticContent;
--- /dev/null
+/*
+ * $Id$
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ============================================================================
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation and was originally created by
+ * James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ * Software Foundation, please see <http://www.apache.org/>.
+ */
+package org.apache.fop.fo.extensions;
+
+import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.FOTreeVisitor;
+
+import java.util.ArrayList;
+import org.apache.fop.extensions.*;
+
+/**
+ * Bookmarks data is the top level element of the pdf bookmark extension.
+ * This handles the adding of outlines. When the element is ended it
+ * creates the bookmark data and adds to the area tree.
+ */
+public class Bookmarks extends ExtensionObj {
+ private ArrayList outlines = new ArrayList();
+
+ /**
+ * Create a new Bookmarks object.
+ *
+ * @param parent the parent fo node
+ */
+ public Bookmarks(FONode parent) {
+ super(parent);
+ }
+
+ /**
+ * Add the child to the top level.
+ * This handles all Outline objects added and ignores others.
+ *
+ * @param obj the child to add
+ */
+ protected void addChild(FONode obj) {
+ if (obj instanceof Outline) {
+ outlines.add(obj);
+ }
+ }
+
+ /**
+ * When this element is finished then it can create
+ * the bookmark data from the child elements and add
+ * the extension to the area tree.
+ */
+ public void end() {
+ getFOTreeControl().setBookmarks(this);
+ }
+
+ public void acceptVisitor(FOTreeVisitor fotv) {
+ fotv.serveVisitor(this);
+ }
+
+ public ArrayList getOutlines() {
+ return outlines;
+ }
+
+}
--- /dev/null
+/*
+ * $Id$
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ============================================================================
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation and was originally created by
+ * James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ * Software Foundation, please see <http://www.apache.org/>.
+ */
+package org.apache.fop.fo.extensions;
+
+import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.ElementMapping;
+
+import java.util.HashMap;
+
+import org.apache.fop.extensions.*;
+
+/**
+ * Element mapping for the pdf bookmark extension.
+ * This sets up the mapping for the classes that handle the
+ * pdf bookmark extension.
+ */
+public class ExtensionElementMapping extends ElementMapping {
+
+ /**
+ * Constructor.
+ */
+ public ExtensionElementMapping() {
+ namespaceURI = "http://xml.apache.org/fop/extensions";
+ }
+
+ /**
+ * Initialize the data structures.
+ */
+ protected void initialize() {
+ if (foObjs == null) {
+ foObjs = new HashMap();
+ foObjs.put("bookmarks", new B());
+ foObjs.put("outline", new O());
+ foObjs.put("label", new L());
+ }
+ }
+
+ static class B extends ElementMapping.Maker {
+ public FONode make(FONode parent) {
+ return new Bookmarks(parent);
+ }
+ }
+
+ static class O extends ElementMapping.Maker {
+ public FONode make(FONode parent) {
+ return new Outline(parent);
+ }
+ }
+
+ static class L extends ElementMapping.Maker {
+ public FONode make(FONode parent) {
+ return new Label(parent);
+ }
+ }
+}
--- /dev/null
+/*
+ * $Id$
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ============================================================================
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation and was originally created by
+ * James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ * Software Foundation, please see <http://www.apache.org/>.
+ */
+package org.apache.fop.fo.extensions;
+
+import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.FObj;
+import org.apache.fop.fo.FOTreeVisitor;
+
+/**
+ * Base class for pdf bookmark extension objects.
+ */
+public abstract class ExtensionObj extends FObj {
+
+ /**
+ * Create a new extension object.
+ *
+ * @param parent the parent formatting object
+ */
+ public ExtensionObj(FONode parent) {
+ super(parent);
+ }
+
+ public void acceptVisitor(FOTreeVisitor fotv) {
+ fotv.serveVisitor(this);
+ }
+
+}
+
--- /dev/null
+/*
+ * $Id$
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ============================================================================
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation and was originally created by
+ * James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ * Software Foundation, please see <http://www.apache.org/>.
+ */
+package org.apache.fop.fo.extensions;
+
+import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.FOTreeVisitor;
+
+
+/**
+ * Labal for PDF bookmark extension.
+ * This element contains the label for the bookmark object.
+ */
+public class Label extends ExtensionObj {
+ private String label = "";
+
+ /**
+ * Create a new label object.
+ *
+ * @param parent the fo node parent
+ */
+ public Label(FONode parent) {
+ super(parent);
+ }
+
+ /**
+ * Add the characters to this label.
+ * The text data inside the label xml element is used for the label string.
+ *
+ * @param data the character data
+ * @param start the start position in the data array
+ * @param end the end position in the character array
+ */
+ protected void addCharacters(char data[], int start, int end) {
+ label += new String(data, start, end - start);
+ }
+
+ /**
+ * Get the string for this label.
+ *
+ * @return the label string
+ */
+ public String toString() {
+ return label;
+ }
+
+ public void acceptVisitor(FOTreeVisitor fotv) {
+ fotv.serveVisitor(this);
+ }
+
+}
--- /dev/null
+/*
+ * $Id$
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ============================================================================
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation and was originally created by
+ * James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ * Software Foundation, please see <http://www.apache.org/>.
+ */
+package org.apache.fop.fo.extensions;
+
+import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.FOTreeVisitor;
+import org.apache.fop.apps.FOPException;
+
+import java.util.ArrayList;
+
+import org.xml.sax.Attributes;
+
+
+/**
+ * The outline object for the pdf bookmark extension.
+ * The outline element contains a label and optionally more outlines.
+ */
+public class Outline extends ExtensionObj {
+ private Label label;
+ private ArrayList outlines = new ArrayList();
+
+ private String internalDestination;
+ private String externalDestination;
+
+ /**
+ * Create a new outline object.
+ *
+ * @param parent the parent fo node
+ */
+ public Outline(FONode parent) {
+ super(parent);
+ }
+
+ /**
+ * The attribues on the outline object are the internal and external
+ * destination. One of these is required.
+ *
+ * @param attlist the attribute list
+ * @throws FOPException a fop exception if there is an error
+ */
+ public void handleAttrs(Attributes attlist) throws FOPException {
+ internalDestination =
+ attlist.getValue("internal-destination");
+ externalDestination =
+ attlist.getValue("external-destination");
+ if (externalDestination != null && !externalDestination.equals("")) {
+ getLogger().warn("fox:outline external-destination not supported currently.");
+ }
+
+ if (internalDestination == null || internalDestination.equals("")) {
+ getLogger().warn("fox:outline requires an internal-destination.");
+ }
+
+ }
+
+ /**
+ * Add the child to this outline.
+ * This checks for the type, label or outline and handles appropriately.
+ *
+ * @param obj the child object
+ */
+ protected void addChild(FONode obj) {
+ if (obj instanceof Label) {
+ label = (Label)obj;
+ } else if (obj instanceof Outline) {
+ outlines.add(obj);
+ }
+ }
+
+ /**
+ * Get the label string.
+ * This gets the label string from the child label element.
+ *
+ * @return the label string or empty if not found
+ */
+ public String getLabel() {
+ return label == null ? "" : label.toString();
+ }
+
+ public void acceptVisitor(FOTreeVisitor fotv) {
+ fotv.serveVisitor(this);
+ }
+
+ public String getInternalDestination() {
+ return internalDestination;
+ }
+
+ public String getExternalDestination() {
+ return externalDestination;
+ }
+
+ public ArrayList getOutlines() {
+ return outlines;
+ }
+
+}
package org.apache.fop.layoutmgr;
import org.apache.fop.area.extensions.BookmarkData;
-import org.apache.fop.extensions.Outline;
+import org.apache.fop.fo.extensions.Outline;
import org.apache.fop.apps.Document;
import org.apache.fop.apps.FOPException;
import org.apache.fop.layout.LayoutStrategy;
import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fo.FOTreeHandler;
import org.apache.fop.apps.*;
+import org.apache.fop.fo.extensions.*;
/**
* The implementation of LayoutStrategy for the "redesign" or second generation