You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2003/03/27 11:44:05 UTC
cvs commit: xml-fop/src/java/org/apache/fop/pdf PDFResourceContext.java PDFRoot.java PDFPathPaint.java PDFResources.java PDFPattern.java
jeremias 2003/03/27 02:44:05
Modified: src/java/org/apache/fop/pdf PDFResourceContext.java
PDFRoot.java PDFPathPaint.java PDFResources.java
PDFPattern.java
Log:
The PDF object number doesn't get passed to the constructor anymore. Adjust for that.
Use the toPDFString() (returns String) method instead of toPDF() (returns byte[]) where appropriate. String to byte[] conversion is done in PDFObject in a well-defined location instead of scattered around the codebase.
Revision Changes Path
1.2 +9 -24 xml-fop/src/java/org/apache/fop/pdf/PDFResourceContext.java
Index: PDFResourceContext.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFResourceContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PDFResourceContext.java 11 Mar 2003 13:05:09 -0000 1.1
+++ PDFResourceContext.java 27 Mar 2003 10:44:04 -0000 1.2
@@ -60,7 +60,7 @@
*
* Modified by Mark Lillywhite, mark-fop@inomial.com. The Parent
* object was being referred to by reference, but all that we
- * ever used from the Parent was it's PDF object ID, and according
+ * ever used from the Parent was its PDF object ID, and according
* to the memory profile this was causing OOM issues. So, we store
* only the object ID of the parent, rather than the parent itself.
*/
@@ -77,22 +77,15 @@
protected PDFAnnotList annotList;
/**
- * Reference to document used when creating annotation list
- */
- protected PDFDocument document;
-
- /**
- *
- * @param number the object's number
- * @param doc the PDF document this belongs to
+ * Creates a new ResourceContext.
* @param resources the /Resources object
*/
- public PDFResourceContext(int number, PDFDocument doc, PDFResources resources) {
+ public PDFResourceContext(PDFResources resources) {
/* generic creation of object */
- super(number);
+ super();
/* set fields using parameters */
- this.document = doc;
+ //this.document = doc;
this.resources = resources;
this.annotList = null;
}
@@ -113,7 +106,7 @@
*/
public void addAnnotation(PDFObject annot) {
if (this.annotList == null) {
- this.annotList = document.makeAnnotList();
+ this.annotList = getDocument().getFactory().makeAnnotList();
}
this.annotList.addAnnot(annot);
}
@@ -133,24 +126,16 @@
* @param gstate the GState to add
*/
public void addGState(PDFGState gstate) {
- this.resources.addGState(gstate);
+ getPDFResources().addGState(gstate);
}
/**
- * Add the shading tot he current resource context.
+ * Add the shading to the current resource context.
*
* @param shading the shading to add
*/
public void addShading(PDFShading shading) {
- this.resources.addShading(shading);
+ getPDFResources().addShading(shading);
}
- /**
- * Get the PDF, unused.
- *
- * @return null value
- */
- public byte[] toPDF() {
- return null;
- }
}
1.2 +13 -13 xml-fop/src/java/org/apache/fop/pdf/PDFRoot.java
Index: PDFRoot.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFRoot.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PDFRoot.java 11 Mar 2003 13:05:09 -0000 1.1
+++ PDFRoot.java 27 Mar 2003 10:44:05 -0000 1.2
@@ -94,11 +94,12 @@
* it is about to be written (immediately before the xref
* table as part of the trsailer). (mark-fop@inomial.com)
*
- * @param number the object's number
+ * @param objnum the object's number
* @param pages the PDFPages object
*/
- public PDFRoot(int number, PDFPages pages) {
- super(number);
+ public PDFRoot(int objnum, PDFPages pages) {
+ super();
+ setObjectNumber(objnum);
setRootPages(pages);
}
@@ -148,15 +149,14 @@
}
/**
- * represent the object as PDF.
- *
- * @return the PDF string
+ * @see org.apache.fop.pdf.PDFObject#toPDFString()
*/
- public byte[] toPDF() {
- StringBuffer p = new StringBuffer(this.number + " " + this.generation
- + " obj\n<< /Type /Catalog\n/Pages "
- + this.rootPages.referencePDF()
- + "\n");
+ public String toPDFString() {
+ StringBuffer p = new StringBuffer(128);
+ p.append(getObjectID());
+ p.append("<< /Type /Catalog\n/Pages "
+ + this.rootPages.referencePDF()
+ + "\n");
if (outline != null) {
p.append(" /Outlines " + outline.referencePDF() + "\n");
p.append(" /PageMode /UseOutlines\n");
@@ -176,8 +176,8 @@
break;
}
}
- p.append(" >>\nendobj\n");
- return p.toString().getBytes();
+ p.append(">>\nendobj\n");
+ return p.toString();
}
}
1.2 +0 -16 xml-fop/src/java/org/apache/fop/pdf/PDFPathPaint.java
Index: PDFPathPaint.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFPathPaint.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PDFPathPaint.java 11 Mar 2003 13:05:09 -0000 1.1
+++ PDFPathPaint.java 27 Mar 2003 10:44:05 -0000 1.2
@@ -62,22 +62,6 @@
protected PDFColorSpace colorSpace;
/**
- * Create a path paint with a PDF object number.
- *
- * @param theNumber the PDF object number
- */
- public PDFPathPaint(int theNumber) {
- super(theNumber);
- }
-
- /**
- * Create an emty path paint.
- */
- public PDFPathPaint() {
- // do nothing
- }
-
- /**
* Get the PDF string for setting the path paint.
*
* @param fillNotStroke if true fill otherwise stroke
1.2 +25 -23 xml-fop/src/java/org/apache/fop/pdf/PDFResources.java
Index: PDFResources.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFResources.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PDFResources.java 11 Mar 2003 13:05:09 -0000 1.1
+++ PDFResources.java 27 Mar 2003 10:44:05 -0000 1.2
@@ -93,11 +93,12 @@
/**
* create a /Resources object.
*
- * @param number the object's number
+ * @param objnum the object's number
*/
- public PDFResources(int number) {
+ public PDFResources(int objnum) {
/* generic creation of object */
- super(number);
+ super();
+ setObjectNumber(objnum);
}
/**
@@ -151,32 +152,33 @@
* resource context.
*
* @return the PDF
+ * @see org.apache.fop.pdf.PDFObject#toPDFString()
*/
- public byte[] toPDF() {
- StringBuffer p = new StringBuffer(this.number + " " + this.generation
- + " obj\n<< \n");
+ public String toPDFString() {
+ StringBuffer p = new StringBuffer(128);
+ p.append(getObjectID() + "<<\n");
if (!this.fonts.isEmpty()) {
- p.append("/Font << ");
+ p.append("/Font <<\n");
/* construct PDF dictionary of font object references */
Iterator fontIterator = this.fonts.keySet().iterator();
while (fontIterator.hasNext()) {
String fontName = (String)fontIterator.next();
- p.append("/" + fontName + " "
+ p.append(" /" + fontName + " "
+ ((PDFFont)this.fonts.get(fontName)).referencePDF()
- + " ");
+ + "\n");
}
- p.append(">> \n");
+ p.append(">>\n");
}
PDFShading currentShading = null;
if (!this.shadings.isEmpty()) {
- p.append("/Shading << ");
+ p.append("/Shading <<\n");
for (Iterator iter = shadings.iterator(); iter.hasNext();) {
currentShading = (PDFShading)iter.next();
- p.append("/" + currentShading.getName() + " "
+ p.append(" /" + currentShading.getName() + " "
+ currentShading.referencePDF() + " "); // \n ??????
}
@@ -187,46 +189,46 @@
PDFPattern currentPattern = null;
if (!this.patterns.isEmpty()) {
- p.append("/Pattern << ");
+ p.append("/Pattern <<\n");
for (Iterator iter = patterns.iterator(); iter.hasNext();) {
currentPattern = (PDFPattern)iter.next();
- p.append("/" + currentPattern.getName() + " "
+ p.append(" /" + currentPattern.getName() + " "
+ currentPattern.referencePDF() + " ");
}
- p.append(">> \n");
+ p.append(">>\n");
}
// "free" the memory. Sorta.
currentPattern = null;
- p.append("/ProcSet [ /PDF /ImageC /Text ]\n");
+ p.append("/ProcSet [ /PDF /ImageB /ImageC /Text ]\n");
if (this.xObjects != null && !this.xObjects.isEmpty()) {
- p = p.append("/XObject <<");
+ p = p.append("/XObject <<\n");
for (Iterator iter = xObjects.iterator(); iter.hasNext();) {
PDFXObject xobj = (PDFXObject)iter.next();
- p = p.append("/Im" + xobj.getXNumber() + " "
+ p = p.append(" /Im" + xobj.getXNumber() + " "
+ xobj.referencePDF()
+ "\n");
}
- p = p.append(" >>\n");
+ p = p.append(">>\n");
}
if (!this.gstates.isEmpty()) {
- p = p.append("/ExtGState <<");
+ p = p.append("/ExtGState <<\n");
for (Iterator iter = gstates.iterator(); iter.hasNext();) {
PDFGState gs = (PDFGState)iter.next();
- p = p.append("/" + gs.getName() + " "
+ p = p.append(" /" + gs.getName() + " "
+ gs.referencePDF()
- + " ");
+ + "\n");
}
p = p.append(">>\n");
}
p = p.append(">>\nendobj\n");
- return p.toString().getBytes();
+ return p.toString();
}
}
1.2 +45 -38 xml-fop/src/java/org/apache/fop/pdf/PDFPattern.java
Index: PDFPattern.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFPattern.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PDFPattern.java 11 Mar 2003 13:05:09 -0000 1.1
+++ PDFPattern.java 27 Mar 2003 10:44:05 -0000 1.2
@@ -50,9 +50,8 @@
*/
package org.apache.fop.pdf;
-// Java...
+// Java
import java.util.List;
-import java.util.HashMap;
import java.io.OutputStream;
import java.io.IOException;
@@ -138,8 +137,6 @@
/**
* Create a tiling pattern (type 1).
*
- * @param theNumber The object number of this PDF Object
- * @param thePatternName The name of the pattern such as "Pa1" or "Pattern1"
* @param theResources the resources associated with this pattern
* @param thePatternType the type of pattern, which is 1 for tiling.
* @param thePaintType 1 or 2, colored or uncolored.
@@ -151,14 +148,12 @@
* @param theXUID Optional vector of Integers that uniquely identify the pattern
* @param thePatternDataStream The stream of pattern data to be tiled.
*/
- public PDFPattern(int theNumber, String thePatternName,
- PDFResources theResources, int thePatternType, // 1
- int thePaintType, int theTilingType, List theBBox, double theXStep,
- double theYStep, List theMatrix, List theXUID,
- StringBuffer thePatternDataStream) {
- super(theNumber);
- this.patternName = thePatternName;
-
+ public PDFPattern(PDFResources theResources, int thePatternType, // 1
+ int thePaintType, int theTilingType, List theBBox,
+ double theXStep, double theYStep,
+ List theMatrix, List theXUID,
+ StringBuffer thePatternDataStream) {
+ super();
this.resources = theResources;
// This next parameter is implicit to all constructors, and is
// not directly passed.
@@ -177,21 +172,16 @@
/**
* Create a type 2 pattern (smooth shading)
*
- * @param theNumber the object number of this PDF object
- * @param thePatternName the name of the pattern
* @param thePatternType the type of the pattern, which is 2, smooth shading
* @param theShading the PDF Shading object that comprises this pattern
* @param theXUID optional:the extended unique Identifier if used.
* @param theExtGState optional: the extended graphics state, if used.
* @param theMatrix Optional:List of Doubles that specify the matrix.
*/
- public PDFPattern(int theNumber, String thePatternName,
- int thePatternType, PDFShading theShading,
+ public PDFPattern(int thePatternType, PDFShading theShading,
List theXUID, StringBuffer theExtGState,
List theMatrix) {
- super(theNumber);
-
- this.patternName = thePatternName;
+ super();
this.patternType = 2; // thePatternType;
this.shading = theShading;
@@ -212,6 +202,19 @@
}
/**
+ * Sets the name of the pattern.
+ * @param name the name of the pattern. Can be anything
+ * without spaces. "Pattern1" or "Pa1" are good examples.
+ */
+ public void setName(String name) {
+ if (name.indexOf(" ") >= 0) {
+ throw new IllegalArgumentException(
+ "Pattern name must not contain any spaces");
+ }
+ this.patternName = name;
+ }
+
+ /**
* Get the PDF command for setting to this pattern.
*
* @param fillNotStroke if true fill otherwise stroke
@@ -242,9 +245,10 @@
int vectorSize = 0;
int tempInt = 0;
- StringBuffer p = new StringBuffer();
- p.append(this.number + " " + this.generation
- + " obj\n<< \n/Type /Pattern \n");
+ byte[] buffer;
+ StringBuffer p = new StringBuffer(64);
+ p.append(getObjectID());
+ p.append("<< \n/Type /Pattern \n");
if (this.resources != null) {
p.append("/Resources " + this.resources.referencePDF() + " \n");
@@ -252,7 +256,8 @@
p.append("/PatternType " + this.patternType + " \n");
- PDFStream dataStream = null;
+ PDFStream pdfStream = null;
+ StreamCache encodedStream = null;
if (this.patternType == 1) {
p.append("/PaintType " + this.paintType + " \n");
@@ -293,12 +298,15 @@
// don't forget the length of the stream.
if (this.patternDataStream != null) {
- dataStream = new PDFStream(0);
- dataStream.add(this.patternDataStream.toString());
- // TODO get the filters from the doc
- dataStream.addDefaultFilters(new HashMap(), PDFStream.CONTENT_FILTER);
- p.append(dataStream.applyFilters());
- p.append("/Length " + (dataStream.getDataLength() + 1)
+ pdfStream = new PDFStream();
+ pdfStream.setDocument(getDocumentSafely());
+ pdfStream.add(this.patternDataStream.toString());
+ pdfStream.getFilterList().addDefaultFilters(
+ getDocument().getFilterMap(),
+ PDFFilterList.CONTENT_FILTER);
+ encodedStream = pdfStream.encodeStream();
+ p.append(pdfStream.getFilterList().buildFilterDictEntries());
+ p.append("/Length " + (encodedStream.getSize() + 1)
+ " \n");
}
@@ -335,19 +343,18 @@
p.append(">> \n");
- String dict = p.toString();
- int length = dict.length();
-
- stream.write(dict.getBytes());
+ buffer = encode(p.toString());
+ int length = buffer.length;
+ stream.write(buffer);
// stream representing the function
- if (dataStream != null) {
- length += dataStream.outputStreamData(stream);
+ if (pdfStream != null) {
+ length += pdfStream.outputStreamData(encodedStream, stream);
}
- String end = "endobj\n";
- stream.write(end.getBytes());
- length += end.length();
+ buffer = encode("\nendobj\n");
+ stream.write(buffer);
+ length += buffer.length;
return length;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org