Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SimplePageMaster.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SimplePageMaster.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SimplePageMaster.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SimplePageMaster.java Mon Apr 8 11:51:52 2013 @@ -89,7 +89,7 @@ public class SimplePageMaster extends FO } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { LayoutMasterSet layoutMasterSet = (LayoutMasterSet) parent; if (masterName == null) { @@ -103,7 +103,7 @@ public class SimplePageMaster extends FO } /** {@inheritDoc} */ - protected void endOfNode() throws FOPException { + public void endOfNode() throws FOPException { if (!hasRegionBody) { missingChildElementError( "(region-body, region-before?, region-after?, region-start?, region-end?)");
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SinglePageMasterReference.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SinglePageMasterReference.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SinglePageMasterReference.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SinglePageMasterReference.java Mon Apr 8 11:51:52 2013 @@ -71,7 +71,7 @@ public class SinglePageMasterReference e } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { PageSequenceMaster pageSequenceMaster = (PageSequenceMaster) parent; pageSequenceMaster.addSubsequenceSpecifier(this); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/StaticContent.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/StaticContent.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/StaticContent.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/StaticContent.java Mon Apr 8 11:51:52 2013 @@ -40,7 +40,7 @@ public class StaticContent extends Flow } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { if (getFlowName() == null || getFlowName().equals("")) { missingPropertyError(FLOW_NAME); } @@ -52,7 +52,7 @@ public class StaticContent extends Flow * FOEventHandler that we are at the end of the flow. * {@inheritDoc} */ - protected void endOfNode() throws FOPException { + public void endOfNode() throws FOPException { if (firstChild == null && getUserAgent().validateStrictly()) { missingChildElementError("(%block;)+"); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/Bookmark.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/Bookmark.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/Bookmark.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/Bookmark.java Mon Apr 8 11:51:52 2013 @@ -102,7 +102,7 @@ public class Bookmark extends FObj imple } /** {@inheritDoc} */ - protected void endOfNode() throws FOPException { + public void endOfNode() throws FOPException { if (bookmarkTitle == null) { missingChildElementError("(bookmark-title, bookmark*)"); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTree.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTree.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTree.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTree.java Mon Apr 8 11:51:52 2013 @@ -56,7 +56,7 @@ public class BookmarkTree extends FObj { } /** {@inheritDoc} */ - protected void endOfNode() throws FOPException { + public void endOfNode() throws FOPException { if (bookmarks == null) { missingChildElementError("(fo:bookmark+)"); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java Mon Apr 8 11:51:52 2013 @@ -37,7 +37,7 @@ public class PDFStructElem extends Struc private StructureType structureType; - private PDFStructElem parentElement; + protected PDFStructElem parentElement; /** * Elements to be added to the kids array. @@ -231,6 +231,9 @@ public class PDFStructElem extends Struc textBuffer.append(' '); } Object obj = kids.get(i); + if (obj instanceof PDFStructElem) { + ((PDFStructElem) obj).setParent(parentElement); + } formatObject(obj, out, textBuffer); } } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMapElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMapElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMapElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMapElement.java Mon Apr 8 11:51:52 2013 @@ -54,7 +54,7 @@ public class AFPIncludeFormMapElement ex } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if (parent.getNameId() != Constants.FO_DECLARATIONS) { invalidChildError(getLocator(), parent.getName(), getNamespaceURI(), getName(), Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPInvokeMediumMapElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPInvokeMediumMapElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPInvokeMediumMapElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPInvokeMediumMapElement.java Mon Apr 8 11:51:52 2013 @@ -40,7 +40,7 @@ public class AFPInvokeMediumMapElement e } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if (parent.getNameId() != Constants.FO_PAGE_SEQUENCE && parent.getNameId() != Constants.FO_SIMPLE_PAGE_MASTER) { Modified: 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=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlayElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageOverlayElement.java Mon Apr 8 11:51:52 2013 @@ -57,7 +57,7 @@ public class AFPPageOverlayElement exten } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(getLocalName())) { if (parent.getNameId() != Constants.FO_SIMPLE_PAGE_MASTER Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageSetupElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageSetupElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageSetupElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPPageSetupElement.java Mon Apr 8 11:51:52 2013 @@ -54,7 +54,7 @@ public class AFPPageSetupElement extends /** {@inheritDoc} */ @Override - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if (AFPElementMapping.TAG_LOGICAL_ELEMENT.equals(getLocalName())) { if (parent.getNameId() != Constants.FO_SIMPLE_PAGE_MASTER Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java Mon Apr 8 11:51:52 2013 @@ -86,7 +86,7 @@ public abstract class AbstractAFPExtensi } /** {@inheritDoc} */ - protected void endOfNode() throws FOPException { + public void endOfNode() throws FOPException { super.endOfNode(); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java Mon Apr 8 11:51:52 2013 @@ -163,25 +163,15 @@ public class IFParser implements IFConst private Map<String, StructureTreeElement> structureTreeElements = new HashMap<String, StructureTreeElement>(); - private final class StructureTreeHandler extends DefaultHandler { + private class StructureTreeHandler extends DefaultHandler { - private final Locale pageSequenceLanguage; - - private final StructureTreeEventHandler structureTreeEventHandler; + protected final StructureTreeEventHandler structureTreeEventHandler; - private StructureTreeHandler(StructureTreeEventHandler structureTreeEventHandler, - Locale pageSequenceLanguage) throws SAXException { - this.pageSequenceLanguage = pageSequenceLanguage; + StructureTreeHandler(StructureTreeEventHandler structureTreeEventHandler) { this.structureTreeEventHandler = structureTreeEventHandler; } void startStructureTree(String type) { - structureTreeEventHandler.startPageSequence(pageSequenceLanguage, type); - } - - public void endDocument() throws SAXException { - startIFElement(EL_PAGE_SEQUENCE, pageSequenceAttributes); - pageSequenceAttributes = null; } @Override @@ -191,18 +181,19 @@ public class IFParser implements IFConst if (localName.equals("marked-content")) { localName = "#PCDATA"; } + StructureTreeElement parent = getStructureTreeElement(attributes); String structID = attributes.getValue(InternalElementMapping.URI, InternalElementMapping.STRUCT_ID); if (structID == null) { - structureTreeEventHandler.startNode(localName, attributes); + structureTreeEventHandler.startNode(localName, attributes, parent); } else if (localName.equals("external-graphic") || localName.equals("instream-foreign-object")) { StructureTreeElement structureTreeElement - = structureTreeEventHandler.startImageNode(localName, attributes); + = structureTreeEventHandler.startImageNode(localName, attributes, parent); structureTreeElements.put(structID, structureTreeElement); } else { StructureTreeElement structureTreeElement = structureTreeEventHandler - .startReferencedNode(localName, attributes); + .startReferencedNode(localName, attributes, parent); structureTreeElements.put(structID, structureTreeElement); } } @@ -217,6 +208,28 @@ public class IFParser implements IFConst } } + private class MainStructureTreeHandler extends StructureTreeHandler { + + private final Locale pageSequenceLanguage; + + MainStructureTreeHandler(StructureTreeEventHandler structureTreeEventHandler, + Locale pageSequenceLanguage) throws SAXException { + super(structureTreeEventHandler); + this.pageSequenceLanguage = pageSequenceLanguage; + } + + @Override + void startStructureTree(String type) { + structureTreeEventHandler.startPageSequence(pageSequenceLanguage, type); + } + + public void endDocument() throws SAXException { + startIFElement(EL_PAGE_SEQUENCE, pageSequenceAttributes); + pageSequenceAttributes = null; + } + + } + public Handler(IFDocumentHandler documentHandler, FOUserAgent userAgent, ElementMappingRegistry elementMappingRegistry) { this.documentHandler = documentHandler; @@ -264,7 +277,7 @@ public class IFParser implements IFConst if (localName.equals(EL_PAGE_SEQUENCE) && userAgent.isAccessibilityEnabled()) { pageSequenceAttributes = new AttributesImpl(attributes); Locale language = getLanguage(attributes); - structureTreeHandler = new StructureTreeHandler( + structureTreeHandler = new MainStructureTreeHandler( userAgent.getStructureTreeEventHandler(), language); } else if (localName.equals(EL_STRUCTURE_TREE)) { @@ -520,6 +533,7 @@ public class IFParser implements IFConst public void startElement(Attributes attributes) throws IFException { documentHandler.startPageHeader(); + structureTreeHandler = new StructureTreeHandler(userAgent.getStructureTreeEventHandler()); } public void endElement() throws IFException { @@ -842,12 +856,19 @@ public class IFParser implements IFConst } private void establishStructureTreeElement(Attributes attributes) { - String structRef = attributes.getValue(InternalElementMapping.URI, - InternalElementMapping.STRUCT_REF); + StructureTreeElement element = getStructureTreeElement(attributes); + if (element != null) { + documentHandler.getContext().setStructureTreeElement(element); + } + } + + private StructureTreeElement getStructureTreeElement(Attributes attributes) { + String structRef = attributes.getValue(InternalElementMapping.URI, InternalElementMapping.STRUCT_REF); if (structRef != null && structRef.length() > 0) { assert structureTreeElements.containsKey(structRef); - StructureTreeElement structureTreeElement = structureTreeElements.get(structRef); - documentHandler.getContext().setStructureTreeElement(structureTreeElement); + return structureTreeElements.get(structRef); + } else { + return null; } } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java Mon Apr 8 11:51:52 2013 @@ -314,6 +314,9 @@ implements IFConstants, IFPainter, IFDoc public void startPageHeader() throws IFException { try { handler.startElement(EL_PAGE_HEADER); + if (this.getUserAgent().isAccessibilityEnabled()) { + structureTreeBuilder.replayEventsForRetrievedMarkers(handler); + } } catch (SAXException e) { throw new IFException("SAX error in startPageHeader()", e); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFStructureTreeBuilder.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFStructureTreeBuilder.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFStructureTreeBuilder.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFStructureTreeBuilder.java Mon Apr 8 11:51:52 2013 @@ -33,6 +33,7 @@ import org.apache.fop.accessibility.Stru import org.apache.fop.accessibility.StructureTreeElement; import org.apache.fop.accessibility.StructureTreeEventHandler; import org.apache.fop.fo.extensions.InternalElementMapping; +import org.apache.fop.util.XMLConstants; import org.apache.fop.util.XMLUtil; /** @@ -176,6 +177,8 @@ final class IFStructureTreeBuilder imple private final List<SAXEventRecorder> pageSequenceEventRecorders = new ArrayList<SAXEventRecorder>(); + private SAXEventRecorder retrievedMarkersEventRecorder; + private int idCounter; /** @@ -189,6 +192,16 @@ final class IFStructureTreeBuilder imple pageSequenceEventRecorders.get(pageSequenceIndex).replay(handler); } + public void replayEventsForRetrievedMarkers(ContentHandler handler) throws SAXException { + if (!retrievedMarkersEventRecorder.events.isEmpty()) { + delegate = StructureTree2SAXEventAdapter.newInstance(handler); + delegate.startPageSequence(null, null); + retrievedMarkersEventRecorder.replay(handler); + delegate.endPageSequence(); + prepareRetrievedMarkersEventRecorder(); + } + } + public void startPageSequence(Locale locale, String role) { SAXEventRecorder eventRecorder = new SAXEventRecorder(); pageSequenceEventRecorders.add(eventRecorder); @@ -198,28 +211,51 @@ final class IFStructureTreeBuilder imple public void endPageSequence() { delegate.endPageSequence(); + prepareRetrievedMarkersEventRecorder(); + } + + private void prepareRetrievedMarkersEventRecorder() { + SAXEventRecorder eventRecorder = new SAXEventRecorder(); + retrievedMarkersEventRecorder = eventRecorder; + delegate = StructureTree2SAXEventAdapter.newInstance(eventRecorder); } - public StructureTreeElement startNode(String name, Attributes attributes) { - delegate.startNode(name, attributes); + public StructureTreeElement startNode(String name, Attributes attributes, StructureTreeElement parent) { + if (parent != null) { + attributes = addParentAttribute(new AttributesImpl(attributes), parent); + } + delegate.startNode(name, attributes, null); return new IFStructureTreeElement(); } + private AttributesImpl addParentAttribute(AttributesImpl attributes, StructureTreeElement parent) { + if (parent != null) { + attributes.addAttribute(InternalElementMapping.URI, + InternalElementMapping.STRUCT_REF, + InternalElementMapping.STANDARD_PREFIX + ":" + InternalElementMapping.STRUCT_REF, + XMLConstants.CDATA, + ((IFStructureTreeElement) parent).getId()); + } + return attributes; + } + public void endNode(String name) { delegate.endNode(name); } - public StructureTreeElement startImageNode(String name, Attributes attributes) { + public StructureTreeElement startImageNode(String name, Attributes attributes, StructureTreeElement parent) { String id = getNextID(); AttributesImpl atts = addIDAttribute(attributes, id); - delegate.startImageNode(name, atts); + addParentAttribute(atts, parent); + delegate.startImageNode(name, atts, null); return new IFStructureTreeElement(id); } - public StructureTreeElement startReferencedNode(String name, Attributes attributes) { + public StructureTreeElement startReferencedNode(String name, Attributes attributes, StructureTreeElement parent) { String id = getNextID(); AttributesImpl atts = addIDAttribute(attributes, id); - delegate.startReferencedNode(name, atts); + addParentAttribute(atts, parent); + delegate.startReferencedNode(name, atts, null); return new IFStructureTreeElement(id); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java Mon Apr 8 11:51:52 2013 @@ -128,9 +128,10 @@ class PDFLogicalStructureHandler { } private MarkedContentInfo addToParentTree(PDFStructElem structureTreeElement) { - PDFStructElem parent = (structureTreeElement instanceof PDFStructElem.Placeholder) - ? structureTreeElement.getParentStructElem() - : structureTreeElement; + PDFStructElem parent = structureTreeElement; + while (parent instanceof PDFStructElem.Placeholder) { + parent = parent.getParentStructElem(); + } pageParentTreeArray.add(parent); String type = parent.getStructureType().getName().toString(); int mcid = pageParentTreeArray.length() - 1; Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java Mon Apr 8 11:51:52 2013 @@ -96,8 +96,11 @@ class PDFStructureTreeBuilder implements addBuilder("float", StandardStructureTypes.Grouping.DIV); addBuilder("footnote", StandardStructureTypes.InlineLevelStructure.NOTE); addBuilder("footnote-body", StandardStructureTypes.Grouping.SECT); + // Other Formatting Objects addBuilder("wrapper", StandardStructureTypes.InlineLevelStructure.SPAN); addBuilder("marker", StandardStructureTypes.Grouping.PRIVATE); + addBuilder("retrieve-marker", new PlaceholderBuilder()); + addBuilder("retrieve-table-marker", new PlaceholderBuilder()); addBuilder("#PCDATA", new PlaceholderBuilder()); } @@ -354,9 +357,9 @@ class PDFStructureTreeBuilder implements public void endPageSequence() { } - public StructureTreeElement startNode(String name, Attributes attributes) { - PDFStructElem parent = ancestors.getFirst(); - PDFStructElem structElem = createStructureElement(name, parent, attributes, + public StructureTreeElement startNode(String name, Attributes attributes, StructureTreeElement parent) { + PDFStructElem parentElem = parent == null ? ancestors.getFirst() : (PDFStructElem) parent; + PDFStructElem structElem = createStructureElement(name, parentElem, attributes, pdfFactory, eventBroadcaster); ancestors.addFirst(structElem); return structElem; @@ -366,12 +369,12 @@ class PDFStructureTreeBuilder implements ancestors.removeFirst(); } - public StructureTreeElement startImageNode(String name, Attributes attributes) { - return startNode(name, attributes); + public StructureTreeElement startImageNode(String name, Attributes attributes, StructureTreeElement parent) { + return startNode(name, attributes, parent); } - public StructureTreeElement startReferencedNode(String name, Attributes attributes) { - return startNode(name, attributes); + public StructureTreeElement startReferencedNode(String name, Attributes attributes, StructureTreeElement parent) { + return startNode(name, attributes, parent); } } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/extensions/PDFEmbeddedFileElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/extensions/PDFEmbeddedFileElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/extensions/PDFEmbeddedFileElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/extensions/PDFEmbeddedFileElement.java Mon Apr 8 11:51:52 2013 @@ -49,7 +49,7 @@ public class PDFEmbeddedFileElement exte } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if (parent.getNameId() != Constants.FO_DECLARATIONS) { invalidChildError(getLocator(), parent.getName(), getNamespaceURI(), getName(), Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSCommentElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSCommentElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSCommentElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSCommentElement.java Mon Apr 8 11:51:52 2013 @@ -42,7 +42,7 @@ public abstract class AbstractPSCommentE * @throws FOPException if there's a problem during processing * @see org.apache.fop.fo.FONode#startOfNode() */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { if (parent.getNameId() != Constants.FO_DECLARATIONS && parent.getNameId() != Constants.FO_SIMPLE_PAGE_MASTER) { invalidChildError(getLocator(), parent.getName(), getNamespaceURI(), getName(), Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java Mon Apr 8 11:51:52 2013 @@ -97,7 +97,7 @@ public abstract class AbstractPSExtensio * @see org.apache.fop.fo.FONode#endOfNode() * @throws FOPException if there's a problem during processing */ - protected void endOfNode() throws FOPException { + public void endOfNode() throws FOPException { super.endOfNode(); String s = ((PSExtensionAttachment)getExtensionAttachment()).getContent(); if (s == null || s.length() == 0) { Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java Mon Apr 8 11:51:52 2013 @@ -86,7 +86,7 @@ public abstract class AbstractPSExtensio } /** {@inheritDoc} */ - protected void endOfNode() throws FOPException { + public void endOfNode() throws FOPException { super.endOfNode(); String s = setupCode.getContent(); if (s == null || s.length() == 0) { Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSPageSetupCodeElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSPageSetupCodeElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSPageSetupCodeElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSPageSetupCodeElement.java Mon Apr 8 11:51:52 2013 @@ -40,7 +40,7 @@ public class PSPageSetupCodeElement exte } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if (parent.getNameId() != Constants.FO_SIMPLE_PAGE_MASTER) { invalidChildError(getLocator(), parent.getName(), getNamespaceURI(), getName(), Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetPageDeviceElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetPageDeviceElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetPageDeviceElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetPageDeviceElement.java Mon Apr 8 11:51:52 2013 @@ -49,7 +49,7 @@ public class PSSetPageDeviceElement exte * @throws FOPException if there's a problem during processing * @see org.apache.fop.fo.FONode#startOfNode() */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if ( !((parent.getNameId() == Constants.FO_DECLARATIONS) || (parent.getNameId() == Constants.FO_SIMPLE_PAGE_MASTER)) ) { Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetupCodeElement.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetupCodeElement.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetupCodeElement.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/extensions/PSSetupCodeElement.java Mon Apr 8 11:51:52 2013 @@ -40,7 +40,7 @@ public class PSSetupCodeElement extends } /** {@inheritDoc} */ - protected void startOfNode() throws FOPException { + public void startOfNode() throws FOPException { super.startOfNode(); if (parent.getNameId() != Constants.FO_DECLARATIONS) { invalidChildError(getLocator(), parent.getName(), getNamespaceURI(), getName(), Modified: xmlgraphics/fop/trunk/test/java/org/apache/fop/render/intermediate/IFStructureTreeBuilderTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/render/intermediate/IFStructureTreeBuilderTestCase.java?rev=1465599&r1=1465598&r2=1465599&view=diff ============================================================================== --- xmlgraphics/fop/trunk/test/java/org/apache/fop/render/intermediate/IFStructureTreeBuilderTestCase.java (original) +++ xmlgraphics/fop/trunk/test/java/org/apache/fop/render/intermediate/IFStructureTreeBuilderTestCase.java Mon Apr 8 11:51:52 2013 @@ -90,7 +90,7 @@ public class IFStructureTreeBuilderTestC final ContentHandler handler = mock(ContentHandler.class); sut.startPageSequence(null, null); - sut.startNode(nodeName, createSimpleAttributes(attributes)); + sut.startNode(nodeName, createSimpleAttributes(attributes), null); sut.endPageSequence(); sut.replayEventsForPageSequence(handler, 0); Added: xmlgraphics/fop/trunk/test/pdf/accessibility/markers.fo URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/pdf/accessibility/markers.fo?rev=1465599&view=auto ============================================================================== --- xmlgraphics/fop/trunk/test/pdf/accessibility/markers.fo (added) +++ xmlgraphics/fop/trunk/test/pdf/accessibility/markers.fo Mon Apr 8 11:51:52 2013 @@ -0,0 +1,169 @@ +<?xml version="1.0" standalone="no"?> +<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:fox="http://xmlgraphics.apache.org/fop/extensions" xml:lang="en-GB"> + <fo:layout-master-set> + <fo:simple-page-master master-name="page" + page-height="200pt" page-width="280pt" margin="10pt"> + <fo:region-body/> + <fo:region-after extent="100pt" display-align="after"/> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="page"> + <fo:static-content flow-name="xsl-region-after" line-height="10pt" font-size="8pt"> + <fo:block>Retrieving the marker:</fo:block> + <fo:retrieve-marker retrieve-class-name="marker"/> + <fo:block>Marker retrieved.</fo:block> + </fo:static-content> + <fo:flow flow-name="xsl-region-body"> + <fo:block><fo:marker marker-class-name="marker"> + <fo:table width="100%" table-layout="fixed"> + <fo:table-header> + <fo:table-row> + <fo:table-cell border="1pt solid black"> + <fo:block-container> + <fo:block>Inside a block-container.</fo:block> + </fo:block-container> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>A character: <fo:character character="c" color="blue"/>.</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block text-align="center"><fo:instream-foreign-object fox:alt-text="Nice + circles." width="30pt" overflow="hidden" display-align="center" + content-width="30pt"> + <svg xmlns="http://www.w3.org/2000/svg" width="319" height="286.6"> + <g style="fill-opacity:0.7; stroke:black; stroke-width:3" + transform="translate(0, 286.6) scale(1, -1) translate(100, 100)"> + <circle cx="50" cy="86.6" r="80" style="fill:red;"/> + <circle cx="0" cy="0" r="80" style="fill:green;"/> + <circle cx="100" cy="0" r="80" style="fill:blue;"/> + </g> + </svg> + </fo:instream-foreign-object></fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block text-align-last="justify">Lead<fo:leader leader-pattern="dots" + leader-length.minimum="0" leader-length.optimum="100%"/>er.</fo:block> + <fo:block>Page <fo:page-number/>.</fo:block> + <fo:block-container absolute-position="absolute" width="35pt" height="10pt" top="20pt" + right="2pt" color="purple" text-align="right"> + <fo:block>Absolute.</fo:block> + </fo:block-container> + </fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-body> + <fo:table-row> + <fo:table-cell border="1pt solid black"> + <fo:block>1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>1.2</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>1.3</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>1.4</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell border="1pt solid black"> + <fo:block>2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>2.2</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>2.3</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>2.4</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table></fo:marker>Text in the region-body.</fo:block> + </fo:flow> + </fo:page-sequence> + + <fo:page-sequence master-reference="page"> + <fo:static-content flow-name="xsl-region-after" line-height="10pt" font-size="8pt" + role="artifact"> + <fo:block>This whole page footer should neither appear in the structure tree nor be read out + loud.</fo:block> + <fo:block>Retrieving the marker:</fo:block> + <fo:retrieve-marker retrieve-class-name="marker"/> + <fo:block>Marker retrieved.</fo:block> + </fo:static-content> + <fo:flow flow-name="xsl-region-body"> + <fo:block><fo:marker marker-class-name="marker"> + <fo:table width="100%" table-layout="fixed"> + <fo:table-header> + <fo:table-row> + <fo:table-cell border="1pt solid black"> + <fo:block-container> + <fo:block>Inside a block-container.</fo:block> + </fo:block-container> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>A character: <fo:character character="c" color="blue"/>.</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block text-align="center"><fo:instream-foreign-object fox:alt-text="Nice + circles." width="30pt" overflow="hidden" display-align="center" + content-width="30pt"> + <svg xmlns="http://www.w3.org/2000/svg" width="319" height="286.6"> + <g style="fill-opacity:0.7; stroke:black; stroke-width:3" + transform="translate(0, 286.6) scale(1, -1) translate(100, 100)"> + <circle cx="50" cy="86.6" r="80" style="fill:red;"/> + <circle cx="0" cy="0" r="80" style="fill:green;"/> + <circle cx="100" cy="0" r="80" style="fill:blue;"/> + </g> + </svg> + </fo:instream-foreign-object></fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block text-align-last="justify">Lead<fo:leader leader-pattern="dots" + leader-length.minimum="0" leader-length.optimum="100%"/>er.</fo:block> + <fo:block>Page <fo:page-number/>.</fo:block> + <fo:block-container absolute-position="absolute" width="35pt" height="10pt" top="20pt" + right="2pt" color="purple" text-align="right"> + <fo:block>Absolute.</fo:block> + </fo:block-container> + </fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-body> + <fo:table-row> + <fo:table-cell border="1pt solid black"> + <fo:block>1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>1.2</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>1.3</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>1.4</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell border="1pt solid black"> + <fo:block>2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>2.2</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>2.3</fo:block> + </fo:table-cell> + <fo:table-cell border="1pt solid black"> + <fo:block>2.4</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table></fo:marker>Text in the region-body.</fo:block> + </fo:flow> + </fo:page-sequence> +</fo:root> Propchange: xmlgraphics/fop/trunk/test/pdf/accessibility/markers.fo ------------------------------------------------------------------------------ svn:eol-style = native Propchange: xmlgraphics/fop/trunk/test/pdf/accessibility/markers.fo ------------------------------------------------------------------------------ svn:keywords = Id Added: xmlgraphics/fop/trunk/test/pdf/accessibility/pdf/markers.pdf URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/pdf/accessibility/pdf/markers.pdf?rev=1465599&view=auto ============================================================================== Binary file - no diff available. Propchange: xmlgraphics/fop/trunk/test/pdf/accessibility/pdf/markers.pdf ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
