git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_Accessibility@824808 13f79535-47bb-0310-9956-ffa450edef68tags/fop-1_0
@@ -155,13 +155,4 @@ public class IFContext { | |||
return this.structurePointer; | |||
} | |||
/** | |||
* Indicates whether a structure pointer is available. | |||
* @return true if there's a structure pointer | |||
* @see #setStructurePointer(String) | |||
*/ | |||
public boolean hasStructurePointer() { | |||
return (this.structurePointer != null) && (structurePointer.length() > 0); | |||
} | |||
} |
@@ -229,16 +229,6 @@ public class PDFContentGenerator { | |||
textutil.beginTextObject(); | |||
} | |||
/** | |||
* used for accessibility | |||
* separates a text element from fo:leader text element | |||
*/ | |||
public void separateTextElementFromLeader() { | |||
if (!inArtifactMode) { | |||
separateTextElements(null, 0); | |||
} | |||
} | |||
/** Indicates the beginning of a text object. */ | |||
protected void beginTextObject() { | |||
if (!textutil.isInTextObject()) { |
@@ -34,6 +34,7 @@ import org.apache.fop.pdf.PDFXObject; | |||
import org.apache.fop.render.ImageHandler; | |||
import org.apache.fop.render.RendererContext; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo; | |||
/** | |||
* Image handler implementation which handles raw JPEG images for PDF output. | |||
@@ -83,13 +84,8 @@ public class PDFImageHandlerRawJPEG implements PDFImageHandler, ImageHandler { | |||
float w = (float)pos.getWidth() / 1000f; | |||
float h = (float)pos.getHeight() / 1000f; | |||
if (context.getUserAgent().isAccessibilityEnabled()) { | |||
String structElemType = pdfContext.getStructElemType(); | |||
if (structElemType != null && structElemType.length() > 0) { | |||
int sequenceNum = pdfContext.getSequenceNum(); | |||
generator.placeImage(x, y, w, h, xobj, structElemType, sequenceNum); | |||
} else { | |||
generator.placeImage(x, y, w, h, xobj); | |||
} | |||
MarkedContentInfo mci = pdfContext.getMarkedContentInfo(); | |||
generator.placeImage(x, y, w, h, xobj, mci.tag, mci.mcid); | |||
} else { | |||
generator.placeImage(x, y, w, h, xobj); | |||
} |
@@ -34,6 +34,7 @@ import org.apache.fop.pdf.PDFXObject; | |||
import org.apache.fop.render.ImageHandler; | |||
import org.apache.fop.render.RendererContext; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo; | |||
/** | |||
* Image handler implementation which handles RenderedImage instances for PDF output. | |||
@@ -84,9 +85,8 @@ public class PDFImageHandlerRenderedImage implements PDFImageHandler, ImageHandl | |||
float w = (float)pos.getWidth() / 1000f; | |||
float h = (float)pos.getHeight() / 1000f; | |||
if (context.getUserAgent().isAccessibilityEnabled()) { | |||
String structElemType = pdfContext.getStructElemType(); | |||
int sequenceNum = pdfContext.getSequenceNum(); | |||
generator.placeImage(x, y, w, h, xobj, structElemType, sequenceNum); | |||
MarkedContentInfo mci = pdfContext.getMarkedContentInfo(); | |||
generator.placeImage(x, y, w, h, xobj, mci.tag, mci.mcid); | |||
} else { | |||
generator.placeImage(x, y, w, h, xobj); | |||
} |
@@ -40,6 +40,7 @@ import org.apache.fop.apps.FOUserAgent; | |||
import org.apache.fop.image.loader.batik.BatikImageFlavors; | |||
import org.apache.fop.render.ImageHandler; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo; | |||
import org.apache.fop.svg.PDFAElementBridge; | |||
import org.apache.fop.svg.PDFBridgeContext; | |||
import org.apache.fop.svg.PDFGraphics2D; | |||
@@ -122,9 +123,8 @@ public class PDFImageHandlerSVG implements ImageHandler { | |||
generator.comment("SVG setup"); | |||
generator.saveGraphicsState(); | |||
if (context.getUserAgent().isAccessibilityEnabled()) { | |||
String structElemType = pdfContext.getStructElemType(); | |||
int sequenceNum = pdfContext.getSequenceNum(); | |||
generator.beginMarkedContentSequence(structElemType, sequenceNum); | |||
MarkedContentInfo mci = pdfContext.getMarkedContentInfo(); | |||
generator.beginMarkedContentSequence(mci.tag, mci.mcid); | |||
} | |||
generator.setColor(Color.black, false); | |||
generator.setColor(Color.black, true); |
@@ -131,7 +131,7 @@ public class PDFPainter extends AbstractIFPainter { | |||
throws IFException { | |||
PDFXObject xobject = getPDFDoc().getXObject(uri); | |||
if (xobject != null) { | |||
if (accessEnabled && getContext().hasStructurePointer()) { | |||
if (accessEnabled) { | |||
String ptr = getContext().getStructurePointer(); | |||
prepareImageMCID(ptr); | |||
placeImageAccess(rect, xobject); | |||
@@ -139,7 +139,7 @@ public class PDFPainter extends AbstractIFPainter { | |||
placeImage(rect, xobject); | |||
} | |||
} else { | |||
if (accessEnabled && getContext().hasStructurePointer()) { | |||
if (accessEnabled) { | |||
String ptr = getContext().getStructurePointer(); | |||
prepareImageMCID(ptr); | |||
} | |||
@@ -156,8 +156,7 @@ public class PDFPainter extends AbstractIFPainter { | |||
protected RenderingContext createRenderingContext() { | |||
PDFRenderingContext pdfContext = new PDFRenderingContext( | |||
getUserAgent(), generator, this.documentHandler.currentPage, getFontInfo()); | |||
pdfContext.setMCID(imageMCI.mcid); | |||
pdfContext.setStructElemType(imageMCI.tag); | |||
pdfContext.setMarkedContentInfo(imageMCI); | |||
return pdfContext; | |||
} | |||
@@ -198,7 +197,7 @@ public class PDFPainter extends AbstractIFPainter { | |||
/** {@inheritDoc} */ | |||
public void drawImage(Document doc, Rectangle rect) throws IFException { | |||
if (accessEnabled && getContext().hasStructurePointer()) { | |||
if (accessEnabled) { | |||
String ptr = getContext().getStructurePointer(); | |||
prepareImageMCID(ptr); | |||
} | |||
@@ -298,22 +297,12 @@ public class PDFPainter extends AbstractIFPainter { | |||
throws IFException { | |||
if (accessEnabled) { | |||
String ptr = getContext().getStructurePointer(); | |||
if (ptr != null && ptr.length() > 0) { | |||
MarkedContentInfo mci = logicalStructureHandler.addTextContentItem(ptr); | |||
if (generator.getTextUtil().isInTextObject()) { | |||
generator.separateTextElements(mci.tag, mci.mcid); | |||
} | |||
generator.updateColor(state.getTextColor(), true, null); | |||
generator.beginTextObjectAccess(mci.tag, mci.mcid); | |||
} else { | |||
// <fo:leader leader-pattern="use-content"> | |||
// Leader content is marked as "/Artifact" | |||
if (generator.getTextUtil().isInTextObject()) { | |||
generator.separateTextElementFromLeader(); | |||
} | |||
generator.updateColor(state.getTextColor(), true, null); | |||
generator.beginLeaderTextObject(); | |||
MarkedContentInfo mci = logicalStructureHandler.addTextContentItem(ptr); | |||
if (generator.getTextUtil().isInTextObject()) { | |||
generator.separateTextElements(mci.tag, mci.mcid); | |||
} | |||
generator.updateColor(state.getTextColor(), true, null); | |||
generator.beginTextObjectAccess(mci.tag, mci.mcid); | |||
} else { | |||
generator.updateColor(state.getTextColor(), true, null); | |||
generator.beginTextObject(); |
@@ -25,6 +25,7 @@ import org.apache.fop.apps.FOUserAgent; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.pdf.PDFPage; | |||
import org.apache.fop.render.AbstractRenderingContext; | |||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo; | |||
/** | |||
* Rendering context for PDF production. | |||
@@ -34,11 +35,7 @@ public class PDFRenderingContext extends AbstractRenderingContext { | |||
private PDFContentGenerator generator; | |||
private FontInfo fontInfo; | |||
private PDFPage page; | |||
/** Temp. val. for accessibility, used in PDFImageHandlerRenderedImage */ | |||
private String structElemType = ""; | |||
/** Temp. val. for accessibility, used in PDFImageHandlerRenderedImage */ | |||
private int mcid = -1; | |||
private MarkedContentInfo mci; | |||
/** | |||
* Main constructor. | |||
@@ -84,35 +81,11 @@ public class PDFRenderingContext extends AbstractRenderingContext { | |||
return this.fontInfo; | |||
} | |||
/** | |||
* Used for accessibility, used in PDFPainter.drawImage | |||
* @param value to be stored | |||
*/ | |||
public void setMCID(int value) { | |||
mcid = value; | |||
} | |||
/** | |||
* Used for accessibility | |||
* @return mcid | |||
*/ | |||
public int getSequenceNum() { | |||
return mcid; | |||
void setMarkedContentInfo(MarkedContentInfo mci) { | |||
this.mci = mci; | |||
} | |||
/** | |||
* Used for accessibility | |||
* @param s the type of the structure element | |||
*/ | |||
public void setStructElemType(String s) { | |||
structElemType = s; | |||
} | |||
/** | |||
* Used for accessibility | |||
* @return the type of the structure element | |||
*/ | |||
public String getStructElemType() { | |||
return structElemType; | |||
MarkedContentInfo getMarkedContentInfo() { | |||
return mci; | |||
} | |||
} |