From: William Victor Mote Date: Thu, 21 Aug 2003 18:17:49 +0000 (+0000) Subject: move extensions/BookmarkData to area/extensions/BookmarkData X-Git-Tag: Root_Temp_KnuthStylePageBreaking~1183 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c2363f421d73116d4a4aafb492a253a3cf48f579;p=xmlgraphics-fop.git move extensions/BookmarkData to area/extensions/BookmarkData git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196820 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/area/extensions/BookmarkData.java b/src/java/org/apache/fop/area/extensions/BookmarkData.java new file mode 100644 index 000000000..f8afe5515 --- /dev/null +++ b/src/java/org/apache/fop/area/extensions/BookmarkData.java @@ -0,0 +1,271 @@ +/* + * $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 . For more information on the Apache + * Software Foundation, please see . + */ +package org.apache.fop.area.extensions; + +import org.apache.fop.area.PageViewport; +import org.apache.fop.area.Resolveable; +import org.apache.fop.area.TreeExt; +import org.apache.fop.area.AreaTree; + +import java.util.ArrayList; +import java.util.List; +import java.util.HashMap; + +/** + * This class holds the PDF bookmark extension data. + * This implements Resolveable and TreeExt so that it can be + * added to the area tree as a resolveable tree extension. + */ +public class BookmarkData implements Resolveable, TreeExt { + private ArrayList subData = new ArrayList(); + private HashMap idRefs = new HashMap(); + + // area tree for the top level object to notify when resolved + private AreaTree areaTree = null; + + private String idRef; + private PageViewport pageRef = null; + private String label = null; + + /** + * Create a new bookmark data object. + * This should only be call by the top level element as the + * id reference will be null. + */ + public BookmarkData() { + idRef = null; + } + + /** + * Create a new pdf bookmark data object. + * This is used by the outlines to create a data object + * with a id reference. The id reference is to be resolved. + * + * @param id the id reference + */ + public BookmarkData(String id) { + idRef = id; + idRefs.put(idRef, this); + } + + /** + * Set the area tree. + * This should only be called for the top level element. + * The area tree is used once resolving is complete. + * + * @param at the area tree for the current document + */ + public void setAreaTree(AreaTree at) { + areaTree = at; + } + + /** + * Get the id reference for this data. + * + * @return the id reference + */ + public String getID() { + return idRef; + } + + /** + * Add the child bookmark data object. + * This adds a child bookmark in the bookmark hierarchy. + * + * @param sub the child bookmark data + */ + public void addSubData(BookmarkData sub) { + subData.add(sub); + idRefs.put(sub.getID(), sub); + String[] ids = sub.getIDs(); + for (int count = 0; count < ids.length; count++) { + idRefs.put(ids[count], sub); + } + } + + /** + * Set the label for this bookmark. + * + * @param l the string label + */ + public void setLabel(String l) { + label = l; + } + + /** + * Get the label for this bookmark object. + * + * @return the label string + */ + public String getLabel() { + return label; + } + + /** + * Get the size of child data objects. + * + * @return the number of child bookmark data + */ + public int getCount() { + return subData.size(); + } + + /** + * Get the child data object. + * + * @param count the index to get + * @return the child bookmark data + */ + public BookmarkData getSubData(int count) { + return (BookmarkData)subData.get(count); + } + + /** + * Get the page that this resolves to. + * + * @return the PageViewport that this extension resolves to + */ + public PageViewport getPage() { + return pageRef; + } + + /** + * Check if this tree extension is resolveable. + * + * @return true since this also implements Resolveable + */ + public boolean isResolveable() { + return true; + } + + /** + * Get the mime type of this area tree extension. + * + * @return this tree extension applies to pdf + */ + public String getMimeType() { + return "application/pdf"; + } + + /** + * Get the name of this area tree extension. + * + * @return the name of the PDF bookmark extension is "Bookmark" + */ + public String getName() { + return "Bookmark"; + } + + /** + * Check if this resolveable object has been resolved. + * Once the id reference is null then it has been resolved. + * + * @return true if this has been resolved + */ + public boolean isResolved() { + return idRefs == null; + } + + /** + * Get the id references held by this object. + * Also includes all id references of all children. + * + * @return the array of id references + */ + public String[] getIDs() { + return (String[])idRefs.keySet().toArray(new String[] {}); + } + + /** + * Resolve this resolveable object. + * This resolves the id reference and if possible also + * resolves id references of child elements that have the same + * id reference. + * + * @param id the id reference being resolved + * @param pages the list of pages the the id reference resolves to + */ + public void resolve(String id, List pages) { + // this method is buggy + + if (!id.equals(idRef)) { + BookmarkData bd = (BookmarkData)idRefs.get(id); + idRefs.remove(id); + if (bd != null) { + bd.resolve(id, pages); + if (bd.isResolved()) { + checkFinish(); + } + } else if (idRef == null) { + checkFinish(); + } + } else { + if (pages != null) { + pageRef = (PageViewport)pages.get(0); + } + // TODO + // get rect area of id on page + + idRefs.remove(idRef); + checkFinish(); + } + } + + private void checkFinish() { + if (idRefs.size() == 0) { + idRefs = null; + if (areaTree != null) { + areaTree.handleTreeExtension(this, TreeExt.AFTER_PAGE); + } + } + } +} + diff --git a/src/java/org/apache/fop/extensions/BookmarkData.java b/src/java/org/apache/fop/extensions/BookmarkData.java deleted file mode 100644 index 1f5f04a8a..000000000 --- a/src/java/org/apache/fop/extensions/BookmarkData.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * $Id: BookmarkData.java,v 1.5 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 . For more information on the Apache - * Software Foundation, please see . - */ -package org.apache.fop.extensions; - -import org.apache.fop.area.PageViewport; -import org.apache.fop.area.Resolveable; -import org.apache.fop.area.TreeExt; -import org.apache.fop.area.AreaTree; - -import java.util.ArrayList; -import java.util.List; -import java.util.HashMap; - -/** - * This class holds the PDF bookmark extension data. - * This implements Resolveable and TreeExt so that it can be - * added to the area tree as a resolveable tree extension. - */ -public class BookmarkData implements Resolveable, TreeExt { - private ArrayList subData = new ArrayList(); - private HashMap idRefs = new HashMap(); - - // area tree for the top level object to notify when resolved - private AreaTree areaTree = null; - - private String idRef; - private PageViewport pageRef = null; - private String label = null; - - /** - * Create a new bookmark data object. - * This should only be call by the top level element as the - * id reference will be null. - */ - public BookmarkData() { - idRef = null; - } - - /** - * Create a new pdf bookmark data object. - * This is used by the outlines to create a data object - * with a id reference. The id reference is to be resolved. - * - * @param id the id reference - */ - public BookmarkData(String id) { - idRef = id; - idRefs.put(idRef, this); - } - - /** - * Set the area tree. - * This should only be called for the top level element. - * The area tree is used once resolving is complete. - * - * @param at the area tree for the current document - */ - public void setAreaTree(AreaTree at) { - areaTree = at; - } - - /** - * Get the id reference for this data. - * - * @return the id reference - */ - public String getID() { - return idRef; - } - - /** - * Add the child bookmark data object. - * This adds a child bookmark in the bookmark hierarchy. - * - * @param sub the child bookmark data - */ - public void addSubData(BookmarkData sub) { - subData.add(sub); - idRefs.put(sub.getID(), sub); - String[] ids = sub.getIDs(); - for (int count = 0; count < ids.length; count++) { - idRefs.put(ids[count], sub); - } - } - - /** - * Set the label for this bookmark. - * - * @param l the string label - */ - public void setLabel(String l) { - label = l; - } - - /** - * Get the label for this bookmark object. - * - * @return the label string - */ - public String getLabel() { - return label; - } - - /** - * Get the size of child data objects. - * - * @return the number of child bookmark data - */ - public int getCount() { - return subData.size(); - } - - /** - * Get the child data object. - * - * @param count the index to get - * @return the child bookmark data - */ - public BookmarkData getSubData(int count) { - return (BookmarkData)subData.get(count); - } - - /** - * Get the page that this resolves to. - * - * @return the PageViewport that this extension resolves to - */ - public PageViewport getPage() { - return pageRef; - } - - /** - * Check if this tree extension is resolveable. - * - * @return true since this also implements Resolveable - */ - public boolean isResolveable() { - return true; - } - - /** - * Get the mime type of this area tree extension. - * - * @return this tree extension applies to pdf - */ - public String getMimeType() { - return "application/pdf"; - } - - /** - * Get the name of this area tree extension. - * - * @return the name of the PDF bookmark extension is "Bookmark" - */ - public String getName() { - return "Bookmark"; - } - - /** - * Check if this resolveable object has been resolved. - * Once the id reference is null then it has been resolved. - * - * @return true if this has been resolved - */ - public boolean isResolved() { - return idRefs == null; - } - - /** - * Get the id references held by this object. - * Also includes all id references of all children. - * - * @return the array of id references - */ - public String[] getIDs() { - return (String[])idRefs.keySet().toArray(new String[] {}); - } - - /** - * Resolve this resolveable object. - * This resolves the id reference and if possible also - * resolves id references of child elements that have the same - * id reference. - * - * @param id the id reference being resolved - * @param pages the list of pages the the id reference resolves to - */ - public void resolve(String id, List pages) { - // this method is buggy - - if (!id.equals(idRef)) { - BookmarkData bd = (BookmarkData)idRefs.get(id); - idRefs.remove(id); - if (bd != null) { - bd.resolve(id, pages); - if (bd.isResolved()) { - checkFinish(); - } - } else if (idRef == null) { - checkFinish(); - } - } else { - if (pages != null) { - pageRef = (PageViewport)pages.get(0); - } - // TODO - // get rect area of id on page - - idRefs.remove(idRef); - checkFinish(); - } - } - - private void checkFinish() { - if (idRefs.size() == 0) { - idRefs = null; - if (areaTree != null) { - areaTree.handleTreeExtension(this, TreeExt.AFTER_PAGE); - } - } - } -} - diff --git a/src/java/org/apache/fop/extensions/Outline.java b/src/java/org/apache/fop/extensions/Outline.java index ff3b840fb..4b4a78308 100644 --- a/src/java/org/apache/fop/extensions/Outline.java +++ b/src/java/org/apache/fop/extensions/Outline.java @@ -57,6 +57,7 @@ import org.apache.fop.apps.FOPException; import java.util.ArrayList; import org.xml.sax.Attributes; +import org.apache.fop.area.extensions.BookmarkData; /** * The outline object for the pdf bookmark extension. diff --git a/src/java/org/apache/fop/layoutmgr/LayoutManagerLS.java b/src/java/org/apache/fop/layoutmgr/LayoutManagerLS.java index 2757b798f..0f6036c1c 100644 --- a/src/java/org/apache/fop/layoutmgr/LayoutManagerLS.java +++ b/src/java/org/apache/fop/layoutmgr/LayoutManagerLS.java @@ -50,7 +50,7 @@ */ package org.apache.fop.layoutmgr; -import org.apache.fop.extensions.BookmarkData; +import org.apache.fop.area.extensions.BookmarkData; import org.apache.fop.extensions.Outline; import org.apache.fop.apps.Document; import org.apache.fop.apps.FOPException; diff --git a/src/java/org/apache/fop/render/pdf/PDFRenderer.java b/src/java/org/apache/fop/render/pdf/PDFRenderer.java index 5ae4d098c..43420e090 100644 --- a/src/java/org/apache/fop/render/pdf/PDFRenderer.java +++ b/src/java/org/apache/fop/render/pdf/PDFRenderer.java @@ -94,7 +94,7 @@ import org.apache.fop.pdf.PDFLink; import org.apache.fop.pdf.PDFOutline; import org.apache.fop.pdf.PDFAnnotList; import org.apache.fop.pdf.PDFColor; -import org.apache.fop.extensions.BookmarkData; +import org.apache.fop.area.extensions.BookmarkData; import org.apache.fop.area.Trait; import org.apache.fop.area.TreeExt;