Browse Source

Merge from origin/trunk.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/fop-1_1rc1@1345839 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-1_1rc1old
Glenn Adams 12 years ago
parent
commit
4a2e8e12cb
47 changed files with 342 additions and 134 deletions
  1. 6
    0
      src/java/org/apache/fop/accessibility/Accessibility.java
  2. 25
    0
      src/java/org/apache/fop/accessibility/fo/FO2StructureTreeConverter.java
  3. 2
    2
      src/java/org/apache/fop/afp/AFPGraphics2D.java
  4. 4
    2
      src/java/org/apache/fop/afp/modca/ImageObject.java
  5. 1
    1
      src/java/org/apache/fop/afp/modca/PresentationTextData.java
  6. 2
    1
      src/java/org/apache/fop/afp/util/DefaultFOPResourceAccessor.java
  7. 3
    2
      src/java/org/apache/fop/apps/FOUserAgent.java
  8. 1
    1
      src/java/org/apache/fop/complexscripts/fonts/GlyphPositioningTable.java
  9. 1
    1
      src/java/org/apache/fop/complexscripts/scripts/IndicScriptProcessor.java
  10. 10
    4
      src/java/org/apache/fop/fo/FOEventHandler.java
  11. 16
    3
      src/java/org/apache/fop/fo/flow/Wrapper.java
  12. 10
    6
      src/java/org/apache/fop/layoutmgr/BalancingColumnBreakingAlgorithm.java
  13. 23
    11
      src/java/org/apache/fop/layoutmgr/BreakElement.java
  14. 5
    2
      src/java/org/apache/fop/layoutmgr/KnuthPenalty.java
  15. 1
    1
      src/java/org/apache/fop/pdf/PDFColor.java
  16. 4
    1
      src/java/org/apache/fop/pdf/PDFEmbeddedFile.java
  17. 0
    6
      src/java/org/apache/fop/pdf/PDFObject.java
  18. 23
    31
      src/java/org/apache/fop/pdf/PDFResources.java
  19. 2
    1
      src/java/org/apache/fop/render/ImageHandler.java
  20. 2
    1
      src/java/org/apache/fop/render/afp/AFPDocumentHandler.java
  21. 1
    1
      src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMap.java
  22. 2
    2
      src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMapElement.java
  23. 1
    1
      src/java/org/apache/fop/render/afp/extensions/AFPPageOverlay.java
  24. 2
    1
      src/java/org/apache/fop/render/bitmap/AbstractBitmapDocumentHandler.java
  25. 2
    1
      src/java/org/apache/fop/render/bitmap/PNGDocumentHandler.java
  26. 2
    1
      src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java
  27. 2
    2
      src/java/org/apache/fop/render/intermediate/IFContext.java
  28. 4
    4
      src/java/org/apache/fop/render/intermediate/IFUtil.java
  29. 1
    1
      src/java/org/apache/fop/render/java2d/CustomFontMetricsMapper.java
  30. 2
    1
      src/java/org/apache/fop/render/java2d/Java2DPainter.java
  31. 2
    1
      src/java/org/apache/fop/render/pcl/PCLDocumentHandler.java
  32. 2
    1
      src/java/org/apache/fop/render/pcl/PCLPainter.java
  33. 0
    6
      src/java/org/apache/fop/render/ps/NativeTextHandler.java
  34. 2
    1
      src/java/org/apache/fop/render/ps/PSDocumentHandler.java
  35. 1
    1
      src/java/org/apache/fop/svg/PDFAElementBridge.java
  36. 3
    2
      src/java/org/apache/fop/traits/MinOptMax.java
  37. 2
    2
      src/java/org/apache/fop/traits/TraitEnum.java
  38. 1
    1
      src/java/org/apache/fop/util/ColorExt.java
  39. 39
    21
      src/sandbox/org/apache/fop/render/mif/MIFHandler.java
  40. 2
    1
      src/sandbox/org/apache/fop/render/svg/SVGDocumentHandler.java
  41. 2
    1
      src/sandbox/org/apache/fop/render/svg/SVGPrintDocumentHandler.java
  42. 12
    0
      status.xml
  43. 13
    2
      test/java/org/apache/fop/accessibility/fo/FO2StructureTreeConverterTestCase.java
  44. 97
    0
      test/java/org/apache/fop/accessibility/fo/artifact.fo
  45. 2
    0
      test/java/org/apache/fop/accessibility/fo/fo2StructureTree.xsl
  46. BIN
      test/pdf/accessibility/pdf/role.pdf
  47. 2
    2
      test/pdf/accessibility/role.fo

+ 6
- 0
src/java/org/apache/fop/accessibility/Accessibility.java View File

@@ -28,6 +28,12 @@ public final class Accessibility {
/** Constant string for the rendering options key to enable accessibility features. */
public static final String ACCESSIBILITY = "accessibility";

/**
* The value to be set on the 'role' property for the element and its descendants to
* be considered as artifacts.
*/
public static final String ROLE_ARTIFACT = "artifact";

private Accessibility() { }

}

+ 25
- 0
src/java/org/apache/fop/accessibility/fo/FO2StructureTreeConverter.java View File

@@ -23,6 +23,7 @@ import java.util.Stack;

import org.xml.sax.SAXException;

import org.apache.fop.accessibility.Accessibility;
import org.apache.fop.accessibility.StructureTreeEventHandler;
import org.apache.fop.fo.DelegatingFOEventHandler;
import org.apache.fop.fo.FOEventHandler;
@@ -57,6 +58,8 @@ import org.apache.fop.fo.pagination.Flow;
import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fo.pagination.Root;
import org.apache.fop.fo.pagination.StaticContent;
import org.apache.fop.fo.properties.CommonAccessibility;
import org.apache.fop.fo.properties.CommonAccessibilityHolder;

/**
* Allows to create the structure tree of an FO document, by converting FO
@@ -355,6 +358,7 @@ public class FO2StructureTreeConverter extends DelegatingFOEventHandler {

@Override
public void startStatic(StaticContent staticContent) {
handleStartArtifact(staticContent);
converter.startStatic(staticContent);
super.startStatic(staticContent);
}
@@ -362,6 +366,7 @@ public class FO2StructureTreeConverter extends DelegatingFOEventHandler {
@Override
public void endStatic(StaticContent statisContent) {
converter.endStatic(statisContent);
handleEndArtifact(statisContent);
super.endStatic(statisContent);
}

@@ -454,6 +459,7 @@ public class FO2StructureTreeConverter extends DelegatingFOEventHandler {

@Override
public void startWrapper(Wrapper wrapper) {
handleStartArtifact(wrapper);
converter.startWrapper(wrapper);
super.startWrapper(wrapper);
}
@@ -461,6 +467,7 @@ public class FO2StructureTreeConverter extends DelegatingFOEventHandler {
@Override
public void endWrapper(Wrapper wrapper) {
converter.endWrapper(wrapper);
handleEndArtifact(wrapper);
super.endWrapper(wrapper);
}

@@ -488,4 +495,22 @@ public class FO2StructureTreeConverter extends DelegatingFOEventHandler {
super.endExternalDocument(document);
}

private void handleStartArtifact(CommonAccessibilityHolder fobj) {
if (isArtifact(fobj)) {
converters.push(converter);
converter = eventSwallower;
}
}

private void handleEndArtifact(CommonAccessibilityHolder fobj) {
if (isArtifact(fobj)) {
converter = converters.pop();
}
}

private boolean isArtifact(CommonAccessibilityHolder fobj) {
CommonAccessibility accessibility = fobj.getCommonAccessibility();
return Accessibility.ROLE_ARTIFACT.equalsIgnoreCase(accessibility.getRole());
}

}

+ 2
- 2
src/java/org/apache/fop/afp/AFPGraphics2D.java View File

@@ -67,7 +67,7 @@ import org.apache.fop.svg.NativeImageHandler;

/**
* This is a concrete implementation of {@link AbstractGraphics2D} (and
* therefore of {@link Graphics2D}) which is able to generate GOCA byte
* therefore of {@link java.awt.Graphics2D}) which is able to generate GOCA byte
* codes.
*
* @see org.apache.xmlgraphics.java2d.AbstractGraphics2D
@@ -165,7 +165,7 @@ public class AFPGraphics2D extends AbstractGraphics2D implements NativeImageHand
}

/**
* Returns the AFP resource manager associated with this {@link Graphics2D} instance.
* Returns the AFP resource manager associated with this {@link java.awt.Graphics2D} instance.
* @return the resource manager
*/
public AFPResourceManager getResourceManager() {

+ 4
- 2
src/java/org/apache/fop/afp/modca/ImageObject.java View File

@@ -119,7 +119,8 @@ public class ImageObject extends AbstractDataObject {
* Sets the image IDE color model.
*
* @param colorModel the IDE color model.
* @deprecated Use {@link IDEStructureParameter#setColorModel(byte)} instead.
* @deprecated Use {@link org.apache.fop.afp.ioca.IDEStructureParameter#setColorModel(byte)}
* instead.
*/
public void setIDEColorModel(byte colorModel) {
getImageSegment().setIDEColorModel(colorModel);
@@ -128,7 +129,8 @@ public class ImageObject extends AbstractDataObject {
/**
* Set either additive or subtractive mode (used for ASFLAG).
* @param subtractive true for subtractive mode, false for additive mode
* @deprecated Use {@link IDEStructureParameter#setSubtractive(boolean)} instead.
* @deprecated Use {@link org.apache.fop.afp.ioca.IDEStructureParameter#setSubtractive(boolean)}
* instead.
*/
public void setSubtractive(boolean subtractive) {
getImageSegment().setSubtractive(subtractive);

+ 1
- 1
src/java/org/apache/fop/afp/modca/PresentationTextData.java View File

@@ -46,7 +46,7 @@ import org.apache.fop.afp.util.BinaryUtils;
* which signal an alternate mode of processing for the content of the current
* Presentation Text data.
* <p>
* The content for this object can be created using {@link PtocaBuilder}.
* The content for this object can be created using {@link org.apache.fop.afp.ptoca.PtocaBuilder}.
*/
public class PresentationTextData extends AbstractAFPObject implements PtocaConstants {


+ 2
- 1
src/java/org/apache/fop/afp/util/DefaultFOPResourceAccessor.java View File

@@ -44,7 +44,8 @@ public class DefaultFOPResourceAccessor extends SimpleResourceAccessor {
* Constructor for resource to be accessed via the {@link FOUserAgent}. This contructor
* can take two base URIs: the category base URI is the one to use when differentiating between
* normal resources (ex. images) and font resources. So, if fonts need to be accessed, you can
* set the {@link FontManager}'s base URI instead of the one on the {@link FopFactory}.
* set the {@link org.apache.fop.fonts.FontManager}'s base URI instead of the one on the
* {@link org.apache.fop.apps.FopFactory}.
* @param userAgent the FO user agent
* @param categoryBaseURI the category base URI (may be null)
* @param baseURI the custom base URI to resolve relative URIs against (may be null)

+ 3
- 2
src/java/org/apache/fop/apps/FOUserAgent.java View File

@@ -355,7 +355,7 @@ public class FOUserAgent {
/**
* Sets font base URL.
* @param fontBaseUrl font base URL
* @deprecated Use {@link FontManager#setFontBaseURL(String)} instead.
* @deprecated Use {@link org.apache.fop.fonts.FontManager#setFontBaseURL(String)} instead.
*/
public void setFontBaseURL(String fontBaseUrl) {
try {
@@ -500,7 +500,8 @@ public class FOUserAgent {
/**
* Returns the font base URL.
* @return the font base URL
* @deprecated Use {@link FontManager#getFontBaseURL()} instead. This method is not used by FOP.
* @deprecated Use {@link org.apache.fop.fonts.FontManager#getFontBaseURL()} instead.
* This method is not used by FOP.
*/
public String getFontBaseURL() {
String fontBase = getFactory().getFontManager().getFontBaseURL();

+ 1
- 1
src/java/org/apache/fop/complexscripts/fonts/GlyphPositioningTable.java View File

@@ -1783,9 +1783,9 @@ public class GlyphPositioningTable extends GlyphTable {
* Find device adjustment.
* @param fontSize the font size to search for
* @return an adjustment if font size matches an entry
* @asf.todo at present, assumes that 1 device unit equals one point
*/
public int findAdjustment ( int fontSize ) {
// [TODO] at present, assumes that 1 device unit equals one point
int fs = fontSize / 1000;
if ( fs < startSize ) {
return 0;

+ 1
- 1
src/java/org/apache/fop/complexscripts/scripts/IndicScriptProcessor.java View File

@@ -360,7 +360,7 @@ public class IndicScriptProcessor extends DefaultScriptProcessor {
}

/** Abstract syllabizer. */
protected abstract static class Syllabizer {
protected abstract static class Syllabizer implements Comparable {
private String script;
private String language;
Syllabizer ( String script, String language ) {

+ 10
- 4
src/java/org/apache/fop/fo/FOEventHandler.java View File

@@ -123,11 +123,17 @@ public abstract class FOEventHandler {
public void endDocument() throws SAXException {
}

/** {@inheritDoc} */
/**
* Called upon start of root element.
* @param root element
*/
public void startRoot(Root root) {
}

/** {@inheritDoc} */
/**
* Called upon end of root element.
* @param root element
*/
public void endRoot(Root root) {
}

@@ -413,9 +419,9 @@ public abstract class FOEventHandler {

/**
* Process end of a Static.
* @param statisContent StaticContent that is ending
* @param staticContent StaticContent that is ending
*/
public void endStatic(StaticContent statisContent) {
public void endStatic(StaticContent staticContent) {
}



+ 16
- 3
src/java/org/apache/fop/fo/flow/Wrapper.java View File

@@ -26,7 +26,10 @@ import org.apache.fop.fo.Constants;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FOText;
import org.apache.fop.fo.FObjMixed;
import org.apache.fop.fo.PropertyList;
import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.properties.CommonAccessibility;
import org.apache.fop.fo.properties.CommonAccessibilityHolder;

/**
* Class modelling the <a href=http://www.w3.org/TR/xsl/#fo_wrapper">
@@ -34,13 +37,13 @@ import org.apache.fop.fo.ValidationException;
* The <code>fo:wrapper</code> object serves as a property holder for
* its child node objects.
*/
public class Wrapper extends FObjMixed {
// The value of properties relevant for fo:wrapper.
// End of property values
public class Wrapper extends FObjMixed implements CommonAccessibilityHolder {

// used for FO validation
private boolean blockOrInlineItemFound = false;

private CommonAccessibility commonAccessibility;

/**
* Create a Wrapper instance that is a child of the
* given {@link FONode}
@@ -51,6 +54,12 @@ public class Wrapper extends FObjMixed {
super(parent);
}

@Override
public void bind(PropertyList pList) throws FOPException {
super.bind(pList);
commonAccessibility = CommonAccessibility.getInstance(pList);
}

@Override
protected void startOfNode() throws FOPException {
super.startOfNode();
@@ -136,6 +145,10 @@ public class Wrapper extends FObjMixed {
return FO_WRAPPER;
}

public CommonAccessibility getCommonAccessibility() {
return commonAccessibility;
}

@Override
public boolean isDelimitedTextRangeBoundary ( int boundary ) {
return false;

+ 10
- 6
src/java/org/apache/fop/layoutmgr/BalancingColumnBreakingAlgorithm.java View File

@@ -41,12 +41,16 @@ public class BalancingColumnBreakingAlgorithm extends PageBreakingAlgorithm {
* @param topLevelLM the top level layout manager
* @param pageProvider the page provider
* @param layoutListener the layout listener
* @param alignment alignment of the paragraph/page. One of {@link Constants#EN_START},
* {@link Constants#EN_JUSTIFY}, {@link Constants#EN_CENTER},
* {@link Constants#EN_END}.
* For pages, {@link Constants#EN_BEFORE} and {@link Constants#EN_AFTER}
* are mapped to the corresponding inline properties,
* {@link Constants#EN_START} and {@link Constants#EN_END}.
* @param alignment alignment of the paragraph/page. One of
* {@link org.apache.fop.fo.Constants#EN_START},
* {@link org.apache.fop.fo.Constants#EN_JUSTIFY},
* {@link org.apache.fop.fo.Constants#EN_CENTER},
* {@link org.apache.fop.fo.Constants#EN_END}.
* For pages, {@link org.apache.fop.fo.Constants#EN_BEFORE} and
* {@link org.apache.fop.fo.Constants#EN_AFTER}
* are mapped to the corresponding inline properties,
* {@link org.apache.fop.fo.Constants#EN_START} and
* {@link org.apache.fop.fo.Constants#EN_END}.
* @param alignmentLast alignment of the paragraph's last line
* @param footnoteSeparatorLength length of footnote separator
* @param partOverflowRecovery {@code true} if too long elements should be moved to

+ 23
- 11
src/java/org/apache/fop/layoutmgr/BreakElement.java View File

@@ -46,8 +46,11 @@ public class BreakElement extends UnresolvedListElement {
* Create a new BreakElement for the given {@code position}, {@code penaltyValue}
* and {@code breakClass}. (Used principally to generate break-possibilities in
* ranges of content that must be kept together within the context corresponding
* to the {@code breakClass}; expected to be one of {@link Constants#EN_AUTO},
* {@link Constants#EN_LINE}, {@link Constants#EN_COLUMN} or {@link Constants#EN_PAGE})
* to the {@code breakClass}; expected to be one of
* {@link org.apache.fop.fo.Constants#EN_AUTO},
* {@link org.apache.fop.fo.Constants#EN_LINE},
* {@link org.apache.fop.fo.Constants#EN_COLUMN} or
* {@link org.apache.fop.fo.Constants#EN_PAGE})
* @param position the corresponding {@link Position}
* @param penaltyValue the penalty value
* @param breakClass the break class
@@ -64,9 +67,12 @@ public class BreakElement extends UnresolvedListElement {
* @param position the Position instance needed by the addAreas stage of the LMs.
* @param penaltyWidth the penalty width
* @param penaltyValue the penalty value for the penalty element to be constructed
* @param breakClass the break class of this penalty (one of {@link Constants#EN_AUTO},
* {@link Constants#EN_COLUMN}, {@link Constants#EN_PAGE},
* {@link Constants#EN_EVEN_PAGE}, {@link Constants#EN_ODD_PAGE})
* @param breakClass the break class of this penalty (one of
* {@link org.apache.fop.fo.Constants#EN_AUTO},
* {@link org.apache.fop.fo.Constants#EN_COLUMN},
* {@link org.apache.fop.fo.Constants#EN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_EVEN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_ODD_PAGE})
* @param context the layout context which contains the pending conditional elements
*/
public BreakElement(Position position, int penaltyWidth, int penaltyValue,
@@ -120,9 +126,12 @@ public class BreakElement extends UnresolvedListElement {
/**
* Returns the break class of this penalty.
*
* @return one of {@link Constants#EN_AUTO}, {@link Constants#EN_COLUMN},
* {@link Constants#EN_PAGE}, {@link Constants#EN_EVEN_PAGE},
* {@link Constants#EN_ODD_PAGE}
* @return one of
* {@link org.apache.fop.fo.Constants#EN_AUTO},
* {@link org.apache.fop.fo.Constants#EN_COLUMN},
* {@link org.apache.fop.fo.Constants#EN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_EVEN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_ODD_PAGE}.
*/
public int getBreakClass() {
return breakClass;
@@ -131,9 +140,12 @@ public class BreakElement extends UnresolvedListElement {
/**
* Sets the break class.
*
* @param breakClass one of {@link Constants#EN_AUTO}, {@link Constants#EN_COLUMN},
* {@link Constants#EN_PAGE}, {@link Constants#EN_EVEN_PAGE},
* {@link Constants#EN_ODD_PAGE}
* @param breakClass one of
* {@link org.apache.fop.fo.Constants#EN_AUTO},
* {@link org.apache.fop.fo.Constants#EN_COLUMN},
* {@link org.apache.fop.fo.Constants#EN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_EVEN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_ODD_PAGE}.
*/
public void setBreakClass(int breakClass) {
this.breakClass = breakClass;

+ 5
- 2
src/java/org/apache/fop/layoutmgr/KnuthPenalty.java View File

@@ -72,8 +72,11 @@ public class KnuthPenalty extends KnuthElement {
* @param penalty the penalty value of this penalty
* @param penaltyFlagged is this penalty flagged?
* @param breakClass the break class of this penalty (one of
* {@link Constants#EN_AUTO}, {@link Constants#EN_COLUMN}, {@link Constants#EN_PAGE},
* {@link Constants#EN_EVEN_PAGE}, {@link Constants#EN_ODD_PAGE})
* {@link org.apache.fop.fo.Constants#EN_AUTO},
* {@link org.apache.fop.fo.Constants#EN_COLUMN},
* {@link org.apache.fop.fo.Constants#EN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_EVEN_PAGE},
* {@link org.apache.fop.fo.Constants#EN_ODD_PAGE}).
* @param pos the Position stored in this penalty
* @param isAuxiliary is this penalty auxiliary?
*/

+ 1
- 1
src/java/org/apache/fop/pdf/PDFColor.java View File

@@ -30,7 +30,7 @@ import org.apache.xmlgraphics.java2d.color.DeviceCMYKColorSpace;
* image. And in this context, only RGB and Gray values are used.
* <p>
* Use of this class is discouraged. {@link PDFColorHandler} is now used for in-content color
* selection. For masked bitmaps, it may be wiser to switch to {@link Color} in the long run.
* selection. For masked bitmaps, it may be wiser to switch to {@link java.awt.Color} in the long run.
*/
public class PDFColor extends PDFPathPaint {
// could be 3.0 as well.

+ 4
- 1
src/java/org/apache/fop/pdf/PDFEmbeddedFile.java View File

@@ -38,7 +38,10 @@ public class PDFEmbeddedFile extends PDFStream {
put("Params", params);
}

/** {@inheritDoc} */
/**
* Determine if should encode on the fly.
* @return true if should encode on the fly
*/
protected boolean isEncodingOnTheFly() {
//Acrobat doesn't like an indirect /Length object in this case,
//but only when the embedded file is a PDF file.

+ 0
- 6
src/java/org/apache/fop/pdf/PDFObject.java View File

@@ -22,7 +22,6 @@ package org.apache.fop.pdf;
// Java
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -210,11 +209,6 @@ public abstract class PDFObject implements PDFWritable {
return pdf.length;
}

/** {@inheritDoc} */
public void outputInline(OutputStream out, Writer writer) throws IOException {
throw new UnsupportedOperationException("Don't use anymore: " + getClass().getName());
}

/** {@inheritDoc} */
public void outputInline(OutputStream out, StringBuilder textBuffer) throws IOException {
if (hasObjectNumber()) {

+ 23
- 31
src/java/org/apache/fop/pdf/PDFResources.java View File

@@ -21,9 +21,8 @@ package org.apache.fop.pdf;

import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;

@@ -46,33 +45,33 @@ public class PDFResources extends PDFDictionary {
/**
* /Font objects keyed by their internal name
*/
protected Map fonts = new HashMap();
protected Map<String, PDFFont> fonts = new LinkedHashMap<String, PDFFont>();

/**
* Set of XObjects
*/
protected Set xObjects = new HashSet();
protected Set<PDFXObject> xObjects = new LinkedHashSet<PDFXObject>();

/**
* Set of patterns
*/
protected Set patterns = new HashSet();
protected Set<PDFPattern> patterns = new LinkedHashSet<PDFPattern>();

/**
* Set of shadings
*/
protected Set shadings = new HashSet();
protected Set<PDFShading> shadings = new LinkedHashSet<PDFShading>();

/**
* Set of ExtGStates
*/
protected Set gstates = new HashSet();
protected Set<PDFGState> gstates = new LinkedHashSet<PDFGState>();

/** Map of color spaces (key: color space name) */
protected Map colorSpaces = new HashMap();
protected Map<PDFName, PDFColorSpace> colorSpaces = new LinkedHashMap<PDFName, PDFColorSpace>();

/** Map of ICC color spaces (key: ICC profile description) */
protected Map iccColorSpaces = new HashMap();
protected Map<String, PDFICCBasedColorSpace> iccColorSpaces = new LinkedHashMap<String, PDFICCBasedColorSpace>();

/**
* create a /Resources object.
@@ -168,7 +167,7 @@ public class PDFResources extends PDFDictionary {
PDFICCBasedColorSpace icc = (PDFICCBasedColorSpace)colorSpace;
String desc = ColorProfileUtil.getICCProfileDescription(
icc.getICCStream().getICCProfile());
this.iccColorSpaces.put(desc, colorSpace);
this.iccColorSpaces.put(desc, icc);
}
}

@@ -178,7 +177,7 @@ public class PDFResources extends PDFDictionary {
* @return the requested color space or null if it wasn't found
*/
public PDFICCBasedColorSpace getICCColorSpaceByProfileName(String desc) {
PDFICCBasedColorSpace cs = (PDFICCBasedColorSpace)this.iccColorSpaces.get(desc);
PDFICCBasedColorSpace cs = this.iccColorSpaces.get(desc);
return cs;
}

@@ -188,7 +187,7 @@ public class PDFResources extends PDFDictionary {
* @return the requested color space or null if it wasn't found
*/
public PDFColorSpace getColorSpace(PDFName name) {
PDFColorSpace cs = (PDFColorSpace)this.colorSpaces.get(name);
PDFColorSpace cs = this.colorSpaces.get(name);
return cs;
}

@@ -202,28 +201,24 @@ public class PDFResources extends PDFDictionary {
if (!this.fonts.isEmpty()) {
PDFDictionary dict = new PDFDictionary(this);
/* construct PDF dictionary of font object references */
Iterator fontIterator = this.fonts.keySet().iterator();
while (fontIterator.hasNext()) {
String fontName = (String)fontIterator.next();
dict.put(fontName, (PDFFont)this.fonts.get(fontName));
for (Map.Entry<String, PDFFont> entry : fonts.entrySet()) {
dict.put(entry.getKey(), entry.getValue());
}
put("Font", dict);
}

if (!this.shadings.isEmpty()) {
PDFDictionary dict = new PDFDictionary(this);
for (Iterator iter = shadings.iterator(); iter.hasNext();) {
PDFShading currentShading = (PDFShading)iter.next();
dict.put(currentShading.getName(), currentShading);
for (PDFShading shading : shadings) {
dict.put(shading.getName(), shading);
}
put("Shading", dict);
}

if (!this.patterns.isEmpty()) {
PDFDictionary dict = new PDFDictionary(this);
for (Iterator iter = patterns.iterator(); iter.hasNext();) {
PDFPattern currentPattern = (PDFPattern)iter.next();
dict.put(currentPattern.getName(), currentPattern);
for (PDFPattern pattern : patterns) {
dict.put(pattern.getName(), pattern);
}
put("Pattern", dict);
}
@@ -237,26 +232,23 @@ public class PDFResources extends PDFDictionary {

if (this.xObjects != null && !this.xObjects.isEmpty()) {
PDFDictionary dict = new PDFDictionary(this);
for (Iterator iter = xObjects.iterator(); iter.hasNext();) {
PDFXObject xobj = (PDFXObject)iter.next();
dict.put(xobj.getName().toString(), xobj);
for (PDFXObject xObject : xObjects) {
dict.put(xObject.getName().toString(), xObject);
}
put("XObject", dict);
}

if (!this.gstates.isEmpty()) {
PDFDictionary dict = new PDFDictionary(this);
for (Iterator iter = gstates.iterator(); iter.hasNext();) {
PDFGState gs = (PDFGState)iter.next();
dict.put(gs.getName(), gs);
for (PDFGState gstate : gstates) {
dict.put(gstate.getName(), gstate);
}
put("ExtGState", dict);
}

if (!this.colorSpaces.isEmpty()) {
PDFDictionary dict = new PDFDictionary(this);
for (Iterator iter = colorSpaces.values().iterator(); iter.hasNext();) {
PDFColorSpace colorSpace = (PDFColorSpace)iter.next();
for (PDFColorSpace colorSpace : colorSpaces.values()) {
dict.put(colorSpace.getName(), colorSpace);
}
put("ColorSpace", dict);

+ 2
- 1
src/java/org/apache/fop/render/ImageHandler.java View File

@@ -33,7 +33,8 @@ public interface ImageHandler extends ImageHandlerBase {
* Indicates whether the image handler is compatible with the indicated target represented
* by the rendering context object and with the image to be processed. The image is also
* passed as a parameter because a handler might not support every subtype of image that is
* presented. For example: in the case of {@link ImageXMLDOM}, the image might carry an SVG
* presented. For example: in the case of
* {@link org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM}, the image might carry an SVG
* or some other XML format. One handler might only handle SVG but no other XML format.
* @param targetContext the target rendering context
* @param image the image to be processed (or null if only to check based on the rendering

+ 2
- 1
src/java/org/apache/fop/render/afp/AFPDocumentHandler.java View File

@@ -58,7 +58,8 @@ import org.apache.fop.render.intermediate.IFException;
import org.apache.fop.render.intermediate.IFPainter;

/**
* {@link IFDocumentHandler} implementation that produces AFP (MO:DCA).
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation that
* produces AFP (MO:DCA).
*/
public class AFPDocumentHandler extends AbstractBinaryWritingIFDocumentHandler
implements AFPCustomizable {

+ 1
- 1
src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMap.java View File

@@ -27,7 +27,7 @@ import org.xml.sax.helpers.AttributesImpl;

/**
* This extension allows to include an AFP form map resource. It is implemented as an extension
* attachment ({@link ExtensionAttachment}).
* attachment ({@link org.apache.fop.fo.extensions.ExtensionAttachment}).
*/
public class AFPIncludeFormMap extends AFPExtensionAttachment {


+ 2
- 2
src/java/org/apache/fop/render/afp/extensions/AFPIncludeFormMapElement.java View File

@@ -32,8 +32,8 @@ import org.apache.fop.fo.PropertyList;
import org.apache.fop.fo.extensions.ExtensionAttachment;

/**
* This class extends the {@link ExtensionObj} class. It represents the "include-form-map"
* extension in the FO tree.
* This class extends the {@link org.apache.fop.fo.extensions.ExtensionObj} class.
* It represents the "include-form-map" extension in the FO tree.
*/
public class AFPIncludeFormMapElement extends AbstractAFPExtensionObject {


+ 1
- 1
src/java/org/apache/fop/render/afp/extensions/AFPPageOverlay.java View File

@@ -25,7 +25,7 @@ import org.xml.sax.helpers.AttributesImpl;

/**
* This extension allows to include an AFP Page Overlay resource. It is implemented as an extension
* attachment ({@link ExtensionAttachment}).
* attachment ({@link org.apache.fop.fo.extensions.ExtensionAttachment}).
*/
public class AFPPageOverlay extends AFPExtensionAttachment {


+ 2
- 1
src/java/org/apache/fop/render/bitmap/AbstractBitmapDocumentHandler.java View File

@@ -47,7 +47,8 @@ import org.apache.fop.render.java2d.Java2DPainter;
import org.apache.fop.render.java2d.Java2DUtil;

/**
* Abstract {@link IFDocumentHandler} implementation for producing bitmap images.
* Abstract {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation
* for producing bitmap images.
*/
public abstract class AbstractBitmapDocumentHandler extends AbstractBinaryWritingIFDocumentHandler {


+ 2
- 1
src/java/org/apache/fop/render/bitmap/PNGDocumentHandler.java View File

@@ -23,7 +23,8 @@ import org.apache.fop.apps.MimeConstants;
import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;

/**
* {@link IFDocumentHandler} implementation that produces PNG files.
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation
* that produces PNG files.
*/
public class PNGDocumentHandler extends AbstractBitmapDocumentHandler {


+ 2
- 1
src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java View File

@@ -23,7 +23,8 @@ import org.apache.fop.apps.MimeConstants;
import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;

/**
* {@link IFDocumentHandler} implementation that produces TIFF files.
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation
* that produces TIFF files.
*/
public class TIFFDocumentHandler extends AbstractBitmapDocumentHandler {


+ 2
- 2
src/java/org/apache/fop/render/intermediate/IFContext.java View File

@@ -145,7 +145,7 @@ public class IFContext {

/**
* Resets the current structure tree element.
* @see #setStructureTreeElement(String)
* @see #setStructureTreeElement(StructureTreeElement)
*/
public void resetStructureTreeElement() {
setStructureTreeElement(null);
@@ -154,7 +154,7 @@ public class IFContext {
/**
* Returns the current structure tree element.
* @return the structure tree element (or null if no element is active)
* @see #setStructureTreeElement(String)
* @see #setStructureTreeElement(StructureTreeElement)
*/
public StructureTreeElement getStructureTreeElement() {
return this.structureTreeElement;

+ 4
- 4
src/java/org/apache/fop/render/intermediate/IFUtil.java View File

@@ -147,8 +147,8 @@ public final class IFUtil {

/**
* Sets up the fonts on a document handler. If the document handler provides a configurator
* object the configuration from the {@link FopFactory} will be used. Otherwise,
* a default font configuration will be set up.
* object the configuration from the {@link org.apache.fop.apps.FopFactory} will be used.
* Otherwise, a default font configuration will be set up.
* @param documentHandler the document handler
* @param fontInfo the font info object (may be null)
* @throws FOPException if an error occurs while setting up the fonts
@@ -175,8 +175,8 @@ public final class IFUtil {

/**
* Sets up the fonts on a document handler. If the document handler provides a configurator
* object the configuration from the {@link FopFactory} will be used. Otherwise,
* a default font configuration will be set up.
* object the configuration from the {@link org.apache.fop.apps.FopFactory} will be used.
* Otherwise, a default font configuration will be set up.
* @param documentHandler the document handler
* @throws FOPException if an error occurs while setting up the fonts
*/

+ 1
- 1
src/java/org/apache/fop/render/java2d/CustomFontMetricsMapper.java View File

@@ -36,7 +36,7 @@ import org.apache.fop.fonts.Typeface;

/**
* FontMetricsMapper that delegates most methods to an underlying
* {@link FontMetrics} instance. This class was designed to allow
* {@link org.apache.fop.fonts.FontMetrics} instance. This class was designed to allow
* the underlying {@link Font} to be loaded from a
* user-configured file not registered in the current graphics environment.
*/

+ 2
- 1
src/java/org/apache/fop/render/java2d/Java2DPainter.java View File

@@ -47,7 +47,8 @@ import org.apache.fop.traits.RuleStyle;
import org.apache.fop.util.CharUtilities;

/**
* {@link IFPainter} implementation that paints on a Graphics2D instance.
* {@link org.apache.fop.render.intermediate.IFPainter} implementation
* that paints on a Graphics2D instance.
*/
public class Java2DPainter extends AbstractIFPainter {


+ 2
- 1
src/java/org/apache/fop/render/pcl/PCLDocumentHandler.java View File

@@ -45,7 +45,8 @@ import org.apache.fop.render.java2d.Java2DUtil;
import org.apache.fop.render.pcl.extensions.PCLElementMapping;

/**
* {@link IFDocumentHandler} implementation that produces PCL 5.
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation
* that produces PCL 5.
*/
public class PCLDocumentHandler extends AbstractBinaryWritingIFDocumentHandler
implements PCLConstants {

+ 2
- 1
src/java/org/apache/fop/render/pcl/PCLPainter.java View File

@@ -58,7 +58,8 @@ import org.apache.fop.traits.RuleStyle;
import org.apache.fop.util.CharUtilities;

/**
* {@link IFPainter} implementation that produces PCL 5.
* {@link org.apache.fop.render.intermediate.IFPainter} implementation
* that produces PCL 5.
*/
public class PCLPainter extends AbstractIFPainter implements PCLConstants {


+ 0
- 6
src/java/org/apache/fop/render/ps/NativeTextHandler.java View File

@@ -100,12 +100,6 @@ public class NativeTextHandler implements PSTextHandler {
//nop
}

/** {@inheritDoc} */
public void drawString(String text, float x, float y) throws IOException {
// TODO Remove me after removing the deprecated method in TextHandler.
throw new UnsupportedOperationException("Deprecated method!");
}

/**
* Draw a string to the PostScript document. The text is painted using
* text operations.

+ 2
- 1
src/java/org/apache/fop/render/ps/PSDocumentHandler.java View File

@@ -63,7 +63,8 @@ import org.apache.fop.render.ps.extensions.PSSetPageDevice;
import org.apache.fop.render.ps.extensions.PSSetupCode;

/**
* {@link IFDocumentHandler} implementation that produces PostScript.
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation
* that produces PostScript.
*/
public class PSDocumentHandler extends AbstractBinaryWritingIFDocumentHandler {


+ 1
- 1
src/java/org/apache/fop/svg/PDFAElementBridge.java View File

@@ -64,7 +64,7 @@ public class PDFAElementBridge extends AbstractGraphicsNodeBridge {
}

/**
* Creates a {@link CompositeGraphicsNode}.
* Creates a {@link org.apache.batik.gvt.CompositeGraphicsNode}.
* @return a new PDFANode
*/
protected GraphicsNode instantiateGraphicsNode() {

+ 3
- 2
src/java/org/apache/fop/traits/MinOptMax.java View File

@@ -22,8 +22,9 @@ package org.apache.fop.traits;
import java.io.Serializable;

/**
* This class holds the resolved (as mpoints) form of a {@link LengthRangeProperty LengthRange} or
* {@link SpaceProperty Space} type property value.
* This class holds the resolved (as mpoints) form of a
* {@link org.apache.fop.fo.properties.LengthRangeProperty} or
* {@link org.apache.fop.fo.properties.SpaceProperty} type property value.
* <p/>
* Instances of this class are immutable. All arithmetic methods like {@link #plus(MinOptMax) plus},
* {@link #minus(MinOptMax) minus} or {@link #mult(int) mult} return a different instance. So it is

+ 2
- 2
src/java/org/apache/fop/traits/TraitEnum.java View File

@@ -30,7 +30,7 @@ public abstract class TraitEnum implements Serializable {
/**
* Constructor to add a new named item.
* @param name Name of the item.
* @param enumValue the {@link Constants}.EN_* value
* @param enumValue the {@link org.apache.fop.fo.Constants}.EN_* value
*/
protected TraitEnum(String name, int enumValue) {
this.name = name;
@@ -46,7 +46,7 @@ public abstract class TraitEnum implements Serializable {
}

/**
* Returns the enumeration value (one of {@link Constants}.EN_*).
* Returns the enumeration value (one of {@link org.apache.fop.fo.Constants}.EN_*).
* @return the enumeration value
*/
public int getEnumValue() {

+ 1
- 1
src/java/org/apache/fop/util/ColorExt.java View File

@@ -28,7 +28,7 @@ import java.util.Arrays;
* <p>
* This class extends java.awt.Color class keeping track of the original color
* property values specified by the fo user in a rgb-icc call.
* @deprecated Replaced by {@link ColorWithAlternatives}
* @deprecated Replaced by {@link org.apache.xmlgraphics.java2d.color.ColorWithAlternatives}
*/
@Deprecated
public final class ColorExt extends Color {

+ 39
- 21
src/sandbox/org/apache/fop/render/mif/MIFHandler.java View File

@@ -29,8 +29,10 @@ import org.apache.commons.logging.LogFactory;

import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fo.FOEventHandler;
import org.apache.fop.fo.FOText;
import org.apache.fop.fo.flow.BasicLink;
import org.apache.fop.fo.flow.Block;
import org.apache.fop.fo.flow.Character;
import org.apache.fop.fo.flow.ExternalGraphic;
import org.apache.fop.fo.flow.Footnote;
import org.apache.fop.fo.flow.FootnoteBody;
@@ -39,6 +41,8 @@ import org.apache.fop.fo.flow.InstreamForeignObject;
import org.apache.fop.fo.flow.Leader;
import org.apache.fop.fo.flow.ListBlock;
import org.apache.fop.fo.flow.ListItem;
import org.apache.fop.fo.flow.ListItemBody;
import org.apache.fop.fo.flow.ListItemLabel;
import org.apache.fop.fo.flow.PageNumber;
import org.apache.fop.fo.flow.table.Table;
import org.apache.fop.fo.flow.table.TableBody;
@@ -51,6 +55,7 @@ import org.apache.fop.fo.pagination.Flow;
import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fo.pagination.PageSequenceMaster;
import org.apache.fop.fo.pagination.SimplePageMaster;
import org.apache.fop.fo.pagination.StaticContent;
import org.apache.fop.fonts.FontSetup;
import org.apache.fop.render.DefaultFontResolver;

@@ -267,27 +272,27 @@ public class MIFHandler extends FOEventHandler {
}

/** {@inheritDoc} */
public void startListLabel() {
public void startListLabel(ListItemLabel listItemLabel) {
}

/** {@inheritDoc} */
public void endListLabel() {
public void endListLabel(ListItemLabel listItemLabel) {
}

/** {@inheritDoc} */
public void startListBody() {
public void startListBody(ListItemBody listItemBody) {
}

/** {@inheritDoc} */
public void endListBody() {
public void endListBody(ListItemBody listItemBody) {
}

/** {@inheritDoc} */
public void startStatic() {
public void startStatic(StaticContent staticContent) {
}

/** {@inheritDoc} */
public void endStatic() {
public void endStatic(StaticContent staticContent) {
}

/** {@inheritDoc} */
@@ -303,7 +308,7 @@ public class MIFHandler extends FOEventHandler {
}

/** {@inheritDoc} */
public void endLink() {
public void endLink(BasicLink basicLink) {
}

/** {@inheritDoc} */
@@ -315,7 +320,11 @@ public class MIFHandler extends FOEventHandler {
}

/** {@inheritDoc} */
public void foreignObject(InstreamForeignObject ifo) {
public void startInstreamForeignObject(InstreamForeignObject ifo) {
}

/** {@inheritDoc} */
public void endInstreamForeignObject(InstreamForeignObject ifo) {
}

/** {@inheritDoc} */
@@ -335,19 +344,37 @@ public class MIFHandler extends FOEventHandler {
}

/** {@inheritDoc} */
public void leader(Leader l) {
public void startLeader(Leader l) {
}

/** {@inheritDoc} */
public void endLeader(Leader l) {
}

public void character(Character c) {
appendCharacters ( new String ( new char[] {c.getCharacter()} ) );
}

/** {@inheritDoc} */
public void characters(FOText foText) {
appendCharacters ( foText.getCharSequence().toString() );
}

/** {@inheritDoc} */
public void startPageNumber(PageNumber pagenum) {
}

/** {@inheritDoc} */
public void characters(char[] data, int start, int length) {
public void endPageNumber(PageNumber pagenum) {
}

private void appendCharacters ( String str ) {
if (para != null) {
String str = new String(data, start, length);
str = str.trim();
// break into nice length chunks
if (str.length() == 0) {
return;
}

MIFElement line = new MIFElement("ParaLine");
MIFElement prop = new MIFElement("TextRectID");
prop.setValue("2");
@@ -355,17 +382,8 @@ public class MIFHandler extends FOEventHandler {
prop = new MIFElement("String");
prop.setValue("\"" + str + "\"");
line.addElement(prop);

para.addElement(line);
}
}

/** {@inheritDoc} */
public void startPageNumber(PageNumber pagenum) {
}

/** {@inheritDoc} */
public void endPageNumber(PageNumber pagenum) {
}
}


+ 2
- 1
src/sandbox/org/apache/fop/render/svg/SVGDocumentHandler.java View File

@@ -54,7 +54,8 @@ import org.apache.fop.util.GenerationHelperContentHandler;
import org.apache.fop.util.XMLUtil;

/**
* {@link IFDocumentHandler} implementation that writes SVG 1.1.
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation
* that writes SVG 1.1.
*/
public class SVGDocumentHandler extends AbstractSVGDocumentHandler {


+ 2
- 1
src/sandbox/org/apache/fop/render/svg/SVGPrintDocumentHandler.java View File

@@ -32,7 +32,8 @@ import org.apache.fop.render.intermediate.IFPainter;
import org.apache.fop.util.XMLUtil;

/**
* {@link IFDocumentHandler} implementation that writes SVG Print.
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation
* that writes SVG Print.
*/
public class SVGPrintDocumentHandler extends AbstractSVGDocumentHandler {


+ 12
- 0
status.xml View File

@@ -62,6 +62,18 @@
documents. Example: the fix of marks layering will be such a case when it's done.
-->
<release version="1.1rc1" date="3 June 2012">
<action context="Code" dev="GA" type="fix">
Eliminate javadocs warnings.
</action>
<action context="Code" dev="GA" type="update" fixes-bug="53055">
Update xmlgraphics common jar to reflect recent fixes in XGC.
</action>
<action context="Code" dev="GA" type="update" fixes-bug="43940" due-to="Julien Aymé">
Fix handling of NaN, {+,-}Infinity, and other edge cases. Submitted by Julien Aymé.
</action>
<action context="Renderers" dev="GA" type="fix" fixes-bug="53304,53306">
Add version attribute to AT and IF intermediate formats. Also eliminate redundant use of reversed attribute in AT format.
</action>
<action context="Renderers" dev="GA" type="fix" fixes-bug="53304,53306">
Add version attribute to AT and IF intermediate formats. Also eliminate redundant use of reversed attribute in AT format.
</action>

+ 13
- 2
test/java/org/apache/fop/accessibility/fo/FO2StructureTreeConverterTestCase.java View File

@@ -19,8 +19,6 @@

package org.apache.fop.accessibility.fo;

import static org.junit.Assert.assertTrue;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -45,6 +43,8 @@ import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;

import static org.junit.Assert.assertTrue;

import org.apache.fop.accessibility.StructureTree2SAXEventAdapter;
import org.apache.fop.accessibility.StructureTreeEventHandler;
import org.apache.fop.apps.FOPException;
@@ -102,6 +102,17 @@ public class FO2StructureTreeConverterTestCase {
testConverter();
}

@Test
public void testArtifact() throws Exception {
foLoader = new FOLoader() {

public InputStream getFoInputStream() {
return getResource("artifact.fo");
}
};
testConverter();
}

private Transformer createTransformer(Source xslt) throws TransformerFactoryConfigurationError,
TransformerConfigurationException {
TransformerFactory transformerFactory = TransformerFactory.newInstance();

+ 97
- 0
test/java/org/apache/fop/accessibility/fo/artifact.fo View File

@@ -0,0 +1,97 @@
<?xml version="1.0" standalone="no"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="page"
page-height="500pt" page-width="300pt" margin="20pt">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="page">
<fo:flow flow-name="xsl-region-body" text-align="justify">

<fo:block>This piece of text is normal content that should be read out loud by a screen
reader.</fo:block>

<fo:block space-before="10pt">The following content will be treated as artifact:</fo:block>

<fo:wrapper role="artifact">
<fo:block-container border="1pt solid black" padding="5pt" background-color="#F0F0F0"
space-before="10pt" start-indent="6pt" end-indent="6pt" color="#606060">
<fo:block start-indent="0" end-indent="0">
<fo:block>A block as artifact.</fo:block>
<fo:table space-before="5pt" width="100%" table-layout="fixed">
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-header>
<fo:table-cell border="1pt solid #606060"><fo:block>Header 1.1</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid #606060"><fo:block>Header 1.2</fo:block></fo:table-cell>
</fo:table-header>
<fo:table-footer>
<fo:table-cell border="1pt solid #606060"><fo:block>Footer 1.1</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid #606060"><fo:block>Footer 1.2</fo:block></fo:table-cell>
</fo:table-footer>
<fo:table-body>
<fo:table-row>
<fo:table-cell border="1pt solid #606060"><fo:block>Cell 1.1</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid #606060"><fo:block>Cell 1.2</fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border="1pt solid #606060"><fo:block>Cell 2.1</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid #606060"><fo:block>Cell 2.2</fo:block></fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:list-block space-before="7pt" provisional-distance-between-starts="8pt"
provisional-label-separation="5pt">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>•</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>Item 1.</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>•</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>Item 2.</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>•</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>Item 3.</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
<fo:wrapper>
<fo:block>A block in a nested wrapper.</fo:block>
</fo:wrapper>
<fo:wrapper role="artifact">
<fo:block>A block in a nested artifact wrapper.</fo:block>
</fo:wrapper>
<fo:wrapper>
<fo:block>Inside a nested wrapper.
<fo:wrapper role="artifact">An artifact wrapper inside the nested wrapper.
<fo:inline><fo:wrapper>Inside a wrapper inside the artifact wrapper that is inside
the nested wrapper.</fo:wrapper> Outside the wrapper inside the artifact
wrapper that is inside the nested wrapper.</fo:inline>
</fo:wrapper> Outside the artifact wrapper.</fo:block>
</fo:wrapper>
</fo:block>
</fo:block-container>
</fo:wrapper>

<fo:block space-before="10pt">Now we are back to normal content that is part of the logical
structure, should appear in the structure tree and should be read out loud by the screen
reader.</fo:block>

</fo:flow>
</fo:page-sequence>

</fo:root>

+ 2
- 0
test/java/org/apache/fop/accessibility/fo/fo2StructureTree.xsl View File

@@ -105,6 +105,8 @@
<xsl:call-template name="copy"/>
</xsl:template>

<xsl:template match="fo:wrapper[translate(normalize-space(@role), 'ARTIFCT', 'artifct') = 'artifact']"/>


<!-- Discard descendants of fo:leader -->
<xsl:template match="fo:leader"/>

BIN
test/pdf/accessibility/pdf/role.pdf View File


+ 2
- 2
test/pdf/accessibility/role.fo View File

@@ -24,8 +24,8 @@
<fo:region-after extent="10pt"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="page" role="Art">
<fo:static-content flow-name="xsl-region-after" role="NonStruct" font-size="8pt">
<fo:page-sequence master-reference="page" language="en" country="GB" role="Art">
<fo:static-content flow-name="xsl-region-after" role="artifact" font-size="8pt">
<fo:block text-align="center"><fo:page-number/></fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body" role="NonStruct" hyphenate="true"

Loading…
Cancel
Save