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 vh...@apache.org on 2012/04/05 18:20:17 UTC
svn commit: r1309921 [8/42] - in
/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript: ./ examples/embedding/
examples/embedding/java/embedding/ examples/embedding/java/embedding/atxml/
examples/embedding/java/embedding/tools/ examples/plan/src/org/apac...
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsData.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsData.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsData.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsData.java Thu Apr 5 16:19:19 2012
@@ -32,11 +32,14 @@ import org.apache.fop.afp.util.StringUti
public final class GraphicsData extends AbstractGraphicsDrawingOrderContainer {
/** the maximum graphics data length */
- public static final int MAX_DATA_LEN = 8192;
+ public static final int MAX_DATA_LEN = GraphicsChainedSegment.MAX_DATA_LEN + 16;
+ //+16 to avoid unnecessary, practically empty GraphicsData instances.
/** the graphics segment */
private GraphicsChainedSegment currentSegment = null;
+ private boolean segmentedData;
+
/**
* Main constructor
*/
@@ -44,11 +47,21 @@ public final class GraphicsData extends
}
/** {@inheritDoc} */
+ @Override
public int getDataLength() {
return 8 + super.getDataLength();
}
/**
+ * Sets the indicator that this instance is a part of a series of segmented data chunks.
+ * This indirectly sets the SegFlag on the SFI header.
+ * @param segmented true if this data object is not the last of the series
+ */
+ public void setSegmentedData(boolean segmented) {
+ this.segmentedData = segmented;
+ }
+
+ /**
* Returns a new segment name
*
* @return a new segment name
@@ -60,28 +73,40 @@ public final class GraphicsData extends
}
/**
- * Creates a new graphics segment
+ * Creates a new graphics segment.
*
* @return a newly created graphics segment
*/
public GraphicsChainedSegment newSegment() {
+ return newSegment(false, false);
+ }
+
+ /**
+ * Creates a new graphics segment.
+ * @param appended true if this segment is appended to the previous one
+ * @param prologPresent true if started with a prolog
+ * @return a newly created graphics segment
+ */
+ public GraphicsChainedSegment newSegment(boolean appended, boolean prologPresent) {
String segmentName = createSegmentName();
if (currentSegment == null) {
currentSegment = new GraphicsChainedSegment(segmentName);
} else {
currentSegment.setComplete(true);
- currentSegment = new GraphicsChainedSegment(segmentName, currentSegment.getNameBytes());
+ currentSegment = new GraphicsChainedSegment(segmentName,
+ currentSegment.getNameBytes(), appended, prologPresent);
}
super.addObject(currentSegment);
return currentSegment;
}
/** {@inheritDoc} */
+ @Override
public void addObject(StructuredData object) {
if (currentSegment == null
|| (currentSegment.getDataLength() + object.getDataLength())
>= GraphicsChainedSegment.MAX_DATA_LEN) {
- newSegment();
+ newSegment(true, false);
}
currentSegment.addObject(object);
}
@@ -97,6 +122,7 @@ public final class GraphicsData extends
}
/** {@inheritDoc} */
+ @Override
public void writeToStream(OutputStream os) throws IOException {
byte[] data = new byte[9];
copySF(data, SF_CLASS, Type.DATA, Category.GRAPHICS);
@@ -104,14 +130,18 @@ public final class GraphicsData extends
byte[] len = BinaryUtils.convert(dataLength, 2);
data[1] = len[0]; // Length byte 1
data[2] = len[1]; // Length byte 2
+ if (this.segmentedData) {
+ data[6] |= 32; //Data is segmented
+ }
os.write(data);
writeObjects(objects, os);
}
/** {@inheritDoc} */
+ @Override
public String toString() {
- return "GraphicsData";
+ return "GraphicsData(len: " + getDataLength() + ")";
}
/**
@@ -123,4 +153,4 @@ public final class GraphicsData extends
currentSegment = segment;
super.addObject(currentSegment);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFillet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFillet.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFillet.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFillet.java Thu Apr 5 16:19:19 2012
@@ -44,4 +44,4 @@ public final class GraphicsFillet extend
}
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFullArc.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFullArc.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFullArc.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsFullArc.java Thu Apr 5 16:19:19 2012
@@ -82,4 +82,4 @@ public class GraphicsFullArc extends Abs
+ "}";
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsLine.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsLine.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsLine.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsLine.java Thu Apr 5 16:19:19 2012
@@ -53,4 +53,4 @@ public class GraphicsLine extends Abstra
byte[] data = getData();
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetArcParameters.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetArcParameters.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetArcParameters.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetArcParameters.java Thu Apr 5 16:19:19 2012
@@ -48,4 +48,4 @@ public class GraphicsSetArcParameters ex
+ ",xmin=" + coords[2]
+ ",ymaj=" + coords[3] + "}";
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCharacterSet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCharacterSet.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCharacterSet.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCharacterSet.java Thu Apr 5 16:19:19 2012
@@ -63,4 +63,4 @@ public class GraphicsSetCharacterSet ext
return 0x38;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCurrentPosition.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCurrentPosition.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCurrentPosition.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetCurrentPosition.java Thu Apr 5 16:19:19 2012
@@ -37,4 +37,4 @@ public class GraphicsSetCurrentPosition
protected byte getOrderCode() {
return (byte)0x21;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineType.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineType.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineType.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineType.java Thu Apr 5 16:19:19 2012
@@ -94,4 +94,4 @@ public class GraphicsSetLineType extends
byte getOrderCode() {
return 0x18;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineWidth.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineWidth.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineWidth.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetLineWidth.java Thu Apr 5 16:19:19 2012
@@ -62,4 +62,4 @@ public class GraphicsSetLineWidth extend
byte getOrderCode() {
return 0x19;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetPatternSymbol.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetPatternSymbol.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetPatternSymbol.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetPatternSymbol.java Thu Apr 5 16:19:19 2012
@@ -114,4 +114,4 @@ public class GraphicsSetPatternSymbol ex
byte getOrderCode() {
return 0x28;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetProcessColor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetProcessColor.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetProcessColor.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/goca/GraphicsSetProcessColor.java Thu Apr 5 16:19:19 2012
@@ -21,9 +21,16 @@ package org.apache.fop.afp.goca;
import java.awt.Color;
import java.awt.color.ColorSpace;
+import java.io.DataOutput;
import java.io.IOException;
import java.io.OutputStream;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+
+import org.apache.xmlgraphics.java2d.color.CIELabColorSpace;
+import org.apache.xmlgraphics.java2d.color.ColorUtil;
+import org.apache.xmlgraphics.java2d.color.ColorWithAlternatives;
+
/**
* Sets the current processing color for the following GOCA structured fields
*/
@@ -37,56 +44,98 @@ public class GraphicsSetProcessColor ext
* X'08' CIELAB
* X'40' Standard OCA color space
*/
- private static final byte RGB = 0x01, CMYK = 0x04;
+ private static final byte RGB = 0x01;
+ private static final byte CMYK = 0x04;
+ private static final byte CIELAB = 0x08;
private final Color color;
-
- private final float[] colorComponents;
+ private final int componentsSize;
/**
* Main constructor
*
- * @param color
- * the color to set
+ * @param color the color to set
*/
public GraphicsSetProcessColor(Color color) {
- this.color = color;
- this.colorComponents = color.getColorComponents(null);
+ if (color instanceof ColorWithAlternatives) {
+ ColorWithAlternatives cwa = (ColorWithAlternatives)color;
+ Color alt = cwa.getFirstAlternativeOfType(ColorSpace.TYPE_CMYK);
+ if (alt != null) {
+ this.color = alt;
+ this.componentsSize = 4;
+ return;
+ }
+ }
+ ColorSpace cs = color.getColorSpace();
+ int colSpaceType = cs.getType();
+ if (colSpaceType == ColorSpace.TYPE_CMYK) {
+ this.color = color;
+ } else if (cs instanceof CIELabColorSpace) {
+ //TODO Convert between illuminants if not D50 according to rendering intents
+ //Right now, we're assuming D50 as the GOCA spec requires.
+ this.color = color;
+ //16bit components didn't work, and 8-bit sadly has reduced accuracy.
+ } else {
+ if (!color.getColorSpace().isCS_sRGB()) {
+ this.color = ColorUtil.toSRGBColor(color);
+ } else {
+ this.color = color;
+ }
+ }
+ this.componentsSize = this.color.getColorSpace().getNumComponents();
}
/** {@inheritDoc} */
public int getDataLength() {
- return 12 + colorComponents.length;
+ return 12 + this.componentsSize;
}
/** {@inheritDoc} */
+ @Override
byte getOrderCode() {
return (byte) 0xB2;
}
/** {@inheritDoc} */
public void writeToStream(OutputStream os) throws IOException {
+ float[] colorComponents = color.getColorComponents(null);
// COLSPCE
byte colspace;
- int colSpaceType = color.getColorSpace().getType();
+ ColorSpace cs = color.getColorSpace();
+ int colSpaceType = cs.getType();
+ ByteArrayOutputStream baout = new ByteArrayOutputStream();
+ byte[] colsizes;
if (colSpaceType == ColorSpace.TYPE_CMYK) {
colspace = CMYK;
+ colsizes = new byte[] {0x08, 0x08, 0x08, 0x08};
+ for (int i = 0; i < colorComponents.length; i++) {
+ baout.write(Math.round(colorComponents[i] * 255));
+ }
} else if (colSpaceType == ColorSpace.TYPE_RGB) {
colspace = RGB;
+ colsizes = new byte[] {0x08, 0x08, 0x08, 0x00};
+ for (int i = 0; i < colorComponents.length; i++) {
+ baout.write(Math.round(colorComponents[i] * 255));
+ }
+ } else if (cs instanceof CIELabColorSpace) {
+ colspace = CIELAB;
+ colsizes = new byte[] {0x08, 0x08, 0x08, 0x00};
+ DataOutput dout = new java.io.DataOutputStream(baout);
+ //According to GOCA, I'd expect the multiplicator below to be 255f, not 100f
+ //But only IBM AFP Workbench seems to support Lab colors and it requires "c * 100f"
+ int l = Math.round(colorComponents[0] * 100f);
+ int a = Math.round(colorComponents[1] * 255f) - 128;
+ int b = Math.round(colorComponents[2] * 255f) - 128;
+ dout.writeByte(l);
+ dout.writeByte(a);
+ dout.writeByte(b);
} else {
- LOG.error("unsupported colorspace " + colSpaceType);
- colspace = RGB;
- }
-
- // COLSIZE(S)
- byte[] colsizes = new byte[] {0x00, 0x00, 0x00, 0x00};
- for (int i = 0; i < colorComponents.length; i++) {
- colsizes[i] = (byte) 8;
+ throw new IllegalStateException();
}
int len = getDataLength();
- byte[] data = new byte[len];
+ byte[] data = new byte[12];
data[0] = getOrderCode(); // GSPCOL order code
data[1] = (byte) (len - 2); // LEN
data[2] = 0x00; // reserved; must be zero
@@ -100,16 +149,13 @@ public class GraphicsSetProcessColor ext
data[10] = colsizes[2];
data[11] = colsizes[3];
- // COLVALUE(S)
- for (int i = 0; i < colorComponents.length; i++) {
- data[i + 12] = (byte) (colorComponents[i] * 255);
- }
-
os.write(data);
+ baout.writeTo(os);
}
/** {@inheritDoc} */
+ @Override
public String toString() {
return "GraphicsSetProcessColor(col=" + color + ")";
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/IDEStructureParameter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/IDEStructureParameter.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/IDEStructureParameter.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/IDEStructureParameter.java Thu Apr 5 16:19:19 2012
@@ -46,7 +46,7 @@ public class IDEStructureParameter imple
private boolean grayCoding = false;
/** the image color model */
- private byte colorModel = COLOR_MODEL_YCRCB;
+ private byte colorModel = COLOR_MODEL_RGB;
/** the array with the number of bits/IDE for each component */
private byte[] bitsPerIDE = new byte[] {(byte)1}; //1-bit by default
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageCellPosition.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageCellPosition.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageCellPosition.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageCellPosition.java Thu Apr 5 16:19:19 2012
@@ -160,4 +160,4 @@ public class ImageCellPosition extends A
this.yFillSize[0] = x[0];
this.yFillSize[1] = x[1];
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageContent.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageContent.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageContent.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageContent.java Thu Apr 5 16:19:19 2012
@@ -53,6 +53,9 @@ public class ImageContent extends Abstra
*/
public static final byte COMPID_G3_MMR = (byte)0x82;
+ /** JPEG algorithms (usually baseline DCT). */
+ public static final byte COMPID_JPEG = (byte)0x83;
+
/** the image size parameter */
private ImageSizeParameter imageSizeParameter = null;
@@ -66,7 +69,7 @@ public class ImageContent extends Abstra
private byte ideSize = 1;
/** the image compression */
- private byte compression = (byte)0xC0;
+ private byte compression = (byte)0xC0; //Baseline DCT in case of JPEG compression
/** the image data */
private byte[] data;
@@ -147,6 +150,7 @@ public class ImageContent extends Abstra
* @param color the IDE color model.
* @deprecated use {@link #setIDEStructureParameter(IDEStructureParameter)} instead
*/
+ @Deprecated
public void setImageIDEColorModel(byte color) {
needIDEStructureParameter().setColorModel(color);
}
@@ -156,6 +160,7 @@ public class ImageContent extends Abstra
* @param subtractive true for subtractive mode, false for additive mode
* @deprecated use {@link #setIDEStructureParameter(IDEStructureParameter)} instead
*/
+ @Deprecated
public void setSubtractive(boolean subtractive) {
needIDEStructureParameter().setSubtractive(subtractive);
}
@@ -172,6 +177,7 @@ public class ImageContent extends Abstra
private static final int MAX_DATA_LEN = 65535;
/** {@inheritDoc} */
+ @Override
protected void writeContent(OutputStream os) throws IOException {
if (imageSizeParameter != null) {
imageSizeParameter.writeToStream(os);
@@ -206,6 +212,7 @@ public class ImageContent extends Abstra
}
/** {@inheritDoc} */
+ @Override
protected void writeStart(OutputStream os) throws IOException {
final byte[] startData = new byte[] {
(byte)0x91, // ID
@@ -216,6 +223,7 @@ public class ImageContent extends Abstra
}
/** {@inheritDoc} */
+ @Override
protected void writeEnd(OutputStream os) throws IOException {
final byte[] endData = new byte[] {
(byte)0x93, // ID
@@ -234,7 +242,7 @@ public class ImageContent extends Abstra
(byte)0x95, // ID
0x02, // Length
encoding,
- 0x01, // RECID
+ (byte)(encoding == COMPID_JPEG ? 0xFE : 0x01), // RECID
};
return encodingData;
}
@@ -245,17 +253,17 @@ public class ImageContent extends Abstra
* @return byte[] The data stream.
*/
private byte[] getExternalAlgorithmParameter() {
- if (encoding == (byte)0x83 && compression != 0) {
+ if (encoding == COMPID_JPEG && compression != 0) {
final byte[] extAlgData = new byte[] {
- (byte)0x95, // ID
+ (byte)0x9F, // ID
0x00, // Length
0x10, // ALGTYPE = Compression Algorithm
0x00, // Reserved
- (byte)0x83, // COMPRID = JPEG
+ COMPID_JPEG, // COMPRID = JPEG
0x00, // Reserved
0x00, // Reserved
0x00, // Reserved
- compression, // MARKER
+ compression, // MARKER
0x00, // Reserved
0x00, // Reserved
0x00, // Reserved
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageInputDescriptor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageInputDescriptor.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageInputDescriptor.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageInputDescriptor.java Thu Apr 5 16:19:19 2012
@@ -132,4 +132,4 @@ public class ImageInputDescriptor extend
this.resolution = resolution;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageOutputControl.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageOutputControl.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageOutputControl.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageOutputControl.java Thu Apr 5 16:19:19 2012
@@ -193,4 +193,4 @@ public class ImageOutputControl extends
public void setSinglepoint(boolean singlepoint) {
singlePoint = singlepoint;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageRasterData.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageRasterData.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageRasterData.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/ioca/ImageRasterData.java Thu Apr 5 16:19:19 2012
@@ -71,4 +71,4 @@ public class ImageRasterData extends Abs
os.write(rasterData);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractAFPObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractAFPObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractAFPObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractAFPObject.java Thu Apr 5 16:19:19 2012
@@ -20,7 +20,6 @@
package org.apache.fop.afp.modca;
import java.io.IOException;
-import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
import java.util.Iterator;
@@ -39,13 +38,12 @@ import org.apache.fop.afp.util.BinaryUti
public abstract class AbstractAFPObject implements Streamable {
/** Static logging instance */
- protected static final Log LOG = LogFactory.getLog("org.apache.xmlgraphics.afp.modca");
+ protected static final Log LOG = LogFactory.getLog(AbstractAFPObject.class);
/** the structured field class id */
protected static final byte SF_CLASS = (byte)0xD3;
- /** the structure field header */
- static final byte[] SF_HEADER = new byte[] {
+ private static final byte[] SF_HEADER = new byte[] {
0x5A, // Structured field identifier
0x00, // Length byte 1
0x10, // Length byte 2
@@ -57,6 +55,9 @@ public abstract class AbstractAFPObject
0x00, // Reserved
};
+ /** Length of bytes of a Structured Field Header */
+ protected static final int SF_HEADER_LENGTH = SF_HEADER.length;
+
/**
* Copies the template structured field data array to the given byte array
*
@@ -77,7 +78,7 @@ public abstract class AbstractAFPObject
* @param category the category code
*/
protected static void copySF(byte[] data, byte clazz, byte type, byte category) {
- System.arraycopy(SF_HEADER, 0, data, 0, SF_HEADER.length);
+ System.arraycopy(SF_HEADER, 0, data, 0, SF_HEADER_LENGTH);
data[3] = clazz;
data[4] = type;
data[5] = category;
@@ -87,54 +88,23 @@ public abstract class AbstractAFPObject
* Writes a collection of Streamable to the AFP Datastream.
*
* @param objects a list of AFPObjects
+ * @param <S> Streamable view of an AFPObject
* @param os The stream to write to
* @throws java.io.IOException an I/O exception of some sort has occurred.
*/
- protected void writeObjects(Collection/*<Streamable>*/ objects, OutputStream os)
- throws IOException {
- if (objects != null && objects.size() > 0) {
- Iterator it = objects.iterator();
+ protected <S extends Streamable> void writeObjects(Collection<S> objects, OutputStream os)
+ throws IOException {
+ if (objects != null) {
+ Iterator<S> it = objects.iterator();
while (it.hasNext()) {
- Object object = it.next();
- if (object instanceof Streamable) {
- ((Streamable)object).writeToStream(os);
- it.remove(); // once written, immediately remove the object
- }
+ Streamable s = it.next();
+ s.writeToStream(os);
+ it.remove(); // once written, immediately remove the object
}
}
}
/**
- * Reads data chunks from an InputStream
- * and then formats them with a structured header to a given OutputStream
- *
- * @param dataHeader the header data
- * @param lengthOffset offset of length field in data chunk
- * @param maxChunkLength the maximum chunk length
- * @param inputStream the InputStream to read from
- * @param outputStream the OutputStream to write to
- * @throws IOException thrown if an I/O exception of some sort has occurred.
- */
- protected static void copyChunks(byte[] dataHeader, int lengthOffset,
- int maxChunkLength, InputStream inputStream, OutputStream outputStream)
- throws IOException {
- int headerLen = dataHeader.length - lengthOffset;
- // length field is just before data so do not include in data length
- if (headerLen == 2) {
- headerLen = 0;
- }
- byte[] data = new byte[maxChunkLength];
- int numBytesRead = 0;
- while ((numBytesRead = inputStream.read(data, 0, maxChunkLength)) > 0) {
- byte[] len = BinaryUtils.convert(headerLen + numBytesRead, 2);
- dataHeader[lengthOffset] = len[0]; // Length byte 1
- dataHeader[lengthOffset + 1] = len[1]; // Length byte 2
- outputStream.write(dataHeader);
- outputStream.write(data, 0, numBytesRead);
- }
- }
-
- /**
* Writes data chunks to a given outputstream
*
* @param data the data byte array
@@ -186,7 +156,7 @@ public abstract class AbstractAFPObject
* @param maxLength the maximum length allowed for the string
* @return a possibly truncated string
*/
- protected String truncate(String str, int maxLength) {
+ protected static String truncate(String str, int maxLength) {
if (str.length() > maxLength) {
str = str.substring(0, maxLength);
LOG.warn("truncated character string '"
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractDataObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractDataObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractDataObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractDataObject.java Thu Apr 5 16:19:19 2012
@@ -74,8 +74,8 @@ public abstract class AbstractDataObject
int height = objectAreaInfo.getHeight();
int widthRes = objectAreaInfo.getWidthRes();
int heightRes = objectAreaInfo.getHeightRes();
- ObjectAreaDescriptor objectAreaDescriptor
- = factory.createObjectAreaDescriptor(width, height, widthRes, heightRes);
+ ObjectAreaDescriptor objectAreaDescriptor = factory.createObjectAreaDescriptor(width,
+ height, widthRes, heightRes);
getObjectEnvironmentGroup().setObjectAreaDescriptor(objectAreaDescriptor);
// object area position
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractNamedAFPObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractNamedAFPObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractNamedAFPObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractNamedAFPObject.java Thu Apr 5 16:19:19 2012
@@ -90,7 +90,7 @@ public abstract class AbstractNamedAFPOb
return nameBytes;
}
- /** {@inheritDoc} */
+ @Override
protected void copySF(byte[] data, byte type, byte category) {
super.copySF(data, type, category);
byte[] nameData = getNameBytes();
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractPageObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractPageObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractPageObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractPageObject.java Thu Apr 5 16:19:19 2012
@@ -27,8 +27,8 @@ import java.util.List;
import org.apache.fop.afp.AFPLineDataInfo;
import org.apache.fop.afp.Completable;
import org.apache.fop.afp.Factory;
-import org.apache.fop.afp.ptoca.PtocaProducer;
import org.apache.fop.afp.fonts.AFPFont;
+import org.apache.fop.afp.ptoca.PtocaProducer;
/**
* Pages contain the data objects that comprise a presentation document. Each
@@ -57,11 +57,8 @@ public abstract class AbstractPageObject
/** The current presentation text object */
private PresentationTextObject currentPresentationTextObject = null;
- /** The list of tag logical elements */
- protected List/*<TagLogicalElement>*/ tagLogicalElements = null;
-
/** The list of objects within this resource container */
- protected List/*<AbstractStructuredAFPObject>*/ objects = new java.util.ArrayList();
+ protected List/*<AbstractStructuredObject>*/ objects = new java.util.ArrayList();
/** The page width */
private int width;
@@ -217,10 +214,10 @@ public abstract class AbstractPageObject
* @return the TLEs
*/
protected List getTagLogicalElements() {
- if (tagLogicalElements == null) {
- this.tagLogicalElements = new java.util.ArrayList/*<TagLogicalElement>*/();
+ if (objects == null) {
+ this.objects = new java.util.ArrayList/*<AbstractStructuredObject>*/();
}
- return this.tagLogicalElements;
+ return this.objects;
}
/**
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractResourceGroupContainer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractResourceGroupContainer.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractResourceGroupContainer.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractResourceGroupContainer.java Thu Apr 5 16:19:19 2012
@@ -126,6 +126,7 @@ implements Streamable {
// }
/** {@inheritDoc} */
+ @Override
public void writeToStream(OutputStream os) throws IOException {
if (!started) {
writeStart(os);
@@ -140,6 +141,7 @@ implements Streamable {
}
/** {@inheritDoc} */
+ @Override
protected void writeObjects(Collection/*<AbstractAFPObject>*/ objects, OutputStream os)
throws IOException {
writeObjects(objects, os, false);
@@ -176,10 +178,9 @@ implements Streamable {
* @return true if this object can be written
*/
protected boolean canWrite(AbstractAFPObject obj) {
- if (obj instanceof AbstractPageObject) {
+ if (obj instanceof Completable) {
return ((Completable)obj).isComplete();
- }
- else {
+ } else {
return this.isComplete();
}
}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractTripletStructuredObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractTripletStructuredObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractTripletStructuredObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/AbstractTripletStructuredObject.java Thu Apr 5 16:19:19 2012
@@ -22,7 +22,6 @@ package org.apache.fop.afp.modca;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collection;
-import java.util.Iterator;
import java.util.List;
import org.apache.fop.afp.modca.Registry.ObjectType;
@@ -35,10 +34,10 @@ import org.apache.fop.afp.modca.triplets
/**
* A MODCA structured object base class providing support for Triplets
*/
-public class AbstractTripletStructuredObject extends AbstractStructuredObject {
+public abstract class AbstractTripletStructuredObject extends AbstractStructuredObject {
/** list of object triplets */
- protected List/*<Triplet>*/ triplets = new java.util.ArrayList/*<Triplet>*/();
+ protected List<AbstractTriplet> triplets = new java.util.ArrayList<AbstractTriplet>();
/**
* Returns the triplet data length
@@ -47,12 +46,8 @@ public class AbstractTripletStructuredOb
*/
protected int getTripletDataLength() {
int dataLength = 0;
- if (hasTriplets()) {
- Iterator it = triplets.iterator();
- while (it.hasNext()) {
- AbstractTriplet triplet = (AbstractTriplet)it.next();
- dataLength += triplet.getDataLength();
- }
+ for (Triplet triplet : triplets) {
+ dataLength += triplet.getDataLength();
}
return dataLength;
}
@@ -85,11 +80,9 @@ public class AbstractTripletStructuredOb
* @param tripletId the triplet identifier
*/
private AbstractTriplet getTriplet(byte tripletId) {
- Iterator it = getTriplets().iterator();
- while (it.hasNext()) {
- AbstractTriplet triplet = (AbstractTriplet)it.next();
- if (triplet.getId() == tripletId) {
- return triplet;
+ for (AbstractTriplet trip : triplets) {
+ if (trip.getId() == tripletId) {
+ return trip;
}
}
return null;
@@ -110,7 +103,7 @@ public class AbstractTripletStructuredOb
*
* @param triplet the triplet to add
*/
- protected void addTriplet(Triplet triplet) {
+ protected void addTriplet(AbstractTriplet triplet) {
triplets.add(triplet);
}
@@ -119,14 +112,14 @@ public class AbstractTripletStructuredOb
*
* @param tripletCollection a collection of triplets
*/
- public void addTriplets(Collection/*<Triplet>*/ tripletCollection) {
+ public void addTriplets(Collection<AbstractTriplet> tripletCollection) {
if (tripletCollection != null) {
triplets.addAll(tripletCollection);
}
}
/** @return the triplet list pertaining to this resource */
- protected List/*<Triplet>*/ getTriplets() {
+ protected List<AbstractTriplet> getTriplets() {
return triplets;
}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ActiveEnvironmentGroup.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ActiveEnvironmentGroup.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ActiveEnvironmentGroup.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ActiveEnvironmentGroup.java Thu Apr 5 16:19:19 2012
@@ -234,4 +234,4 @@ public final class ActiveEnvironmentGrou
return seg;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Document.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Document.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Document.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Document.java Thu Apr 5 16:19:19 2012
@@ -93,4 +93,4 @@ public final class Document extends Abst
return this.name;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java Thu Apr 5 16:19:19 2012
@@ -26,18 +26,21 @@ import java.util.Iterator;
import java.util.List;
import org.apache.xmlgraphics.java2d.color.ColorConverter;
+import org.apache.xmlgraphics.java2d.color.ColorUtil;
import org.apache.fop.afp.AFPDataObjectInfo;
import org.apache.fop.afp.AFPObjectAreaInfo;
import org.apache.fop.afp.Completable;
import org.apache.fop.afp.Factory;
import org.apache.fop.afp.StructuredData;
+import org.apache.fop.afp.fonts.CharacterSet;
import org.apache.fop.afp.goca.GraphicsAreaBegin;
import org.apache.fop.afp.goca.GraphicsAreaEnd;
import org.apache.fop.afp.goca.GraphicsBox;
import org.apache.fop.afp.goca.GraphicsChainedSegment;
import org.apache.fop.afp.goca.GraphicsCharacterString;
import org.apache.fop.afp.goca.GraphicsData;
+import org.apache.fop.afp.goca.GraphicsEndProlog;
import org.apache.fop.afp.goca.GraphicsFillet;
import org.apache.fop.afp.goca.GraphicsFullArc;
import org.apache.fop.afp.goca.GraphicsImage;
@@ -61,8 +64,8 @@ public class GraphicsObject extends Abst
private GraphicsData currentData = null;
/** list of objects contained within this container */
- protected List/*<GraphicsData>*/ objects
- = new java.util.ArrayList/*<GraphicsData>*/();
+ protected List<GraphicsData> objects
+ = new java.util.ArrayList<GraphicsData>();
/** the graphics state */
private final GraphicsState graphicsState = new GraphicsState();
@@ -82,6 +85,7 @@ public class GraphicsObject extends Abst
}
/** {@inheritDoc} */
+ @Override
public void setViewport(AFPDataObjectInfo dataObjectInfo) {
super.setViewport(dataObjectInfo);
@@ -93,7 +97,7 @@ public class GraphicsObject extends Abst
final int leftEdge = 0;
final int topEdge = 0;
GraphicsDataDescriptor graphicsDataDescriptor = factory.createGraphicsDataDescriptor(
- leftEdge, width, topEdge, height, widthRes, heightRes);
+ leftEdge, width, topEdge, height, widthRes, heightRes);
getObjectEnvironmentGroup().setDataDescriptor(graphicsDataDescriptor);
}
@@ -145,7 +149,7 @@ public class GraphicsObject extends Abst
* @param color the active color to use
*/
public void setColor(Color color) {
- if (!color.equals(graphicsState.color)) {
+ if (!ColorUtil.isSameColor(color, graphicsState.color)) {
addObject(new GraphicsSetProcessColor(colorConverter.convert(color)));
graphicsState.color = color;
}
@@ -226,9 +230,9 @@ public class GraphicsObject extends Abst
*/
public void setCharacterSet(int characterSet) {
if (characterSet != graphicsState.characterSet) {
- addObject(new GraphicsSetCharacterSet(characterSet));
graphicsState.characterSet = characterSet;
}
+ addObject(new GraphicsSetCharacterSet(characterSet));
}
/**
@@ -321,9 +325,10 @@ public class GraphicsObject extends Abst
* @param str the string
* @param x the x coordinate
* @param y the y coordinate
+ * @param charSet the character set associated with the string
*/
- public void addString(String str, int x, int y) {
- addObject(new GraphicsCharacterString(str, x, y));
+ public void addString(String str, int x, int y, CharacterSet charSet) {
+ addObject(new GraphicsCharacterString(str, x, y, charSet));
}
/**
@@ -340,7 +345,15 @@ public class GraphicsObject extends Abst
addObject(new GraphicsAreaEnd());
}
+ /**
+ * Ends the prolog.
+ */
+ public void endProlog() {
+ addObject(new GraphicsEndProlog());
+ }
+
/** {@inheritDoc} */
+ @Override
public String toString() {
return "GraphicsObject: " + getName();
}
@@ -354,16 +367,18 @@ public class GraphicsObject extends Abst
}
/** {@inheritDoc} */
+ @Override
public void setComplete(boolean complete) {
- Iterator it = objects.iterator();
+ Iterator<GraphicsData> it = objects.iterator();
while (it.hasNext()) {
- Completable completedObject = (Completable)it.next();
+ Completable completedObject = it.next();
completedObject.setComplete(true);
}
super.setComplete(complete);
}
/** {@inheritDoc} */
+ @Override
protected void writeStart(OutputStream os) throws IOException {
super.writeStart(os);
byte[] data = new byte[17];
@@ -372,12 +387,14 @@ public class GraphicsObject extends Abst
}
/** {@inheritDoc} */
+ @Override
protected void writeContent(OutputStream os) throws IOException {
super.writeContent(os);
writeObjects(objects, os);
}
/** {@inheritDoc} */
+ @Override
protected void writeEnd(OutputStream os) throws IOException {
byte[] data = new byte[17];
copySF(data, Type.END, Category.GRAPHICS);
@@ -405,4 +422,4 @@ public class GraphicsObject extends Abst
/** the current character set */
private int characterSet;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ImageObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ImageObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ImageObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ImageObject.java Thu Apr 5 16:19:19 2012
@@ -29,7 +29,6 @@ import org.apache.xmlgraphics.util.MimeC
import org.apache.fop.afp.AFPDataObjectInfo;
import org.apache.fop.afp.AFPImageObjectInfo;
import org.apache.fop.afp.Factory;
-import org.apache.fop.afp.ioca.IDEStructureParameter;
import org.apache.fop.afp.ioca.ImageSegment;
/**
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludeObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludeObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludeObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludeObject.java Thu Apr 5 16:19:19 2012
@@ -57,7 +57,6 @@ public class IncludeObject extends Abstr
/** the object referenced is of type image */
public static final byte TYPE_IMAGE = (byte)0xFB;
-
/** the object type referenced (default is other) */
private byte objectType = TYPE_OTHER;
@@ -68,7 +67,7 @@ public class IncludeObject extends Abstr
private int yoaOset = 0;
/** the orientation of the referenced object */
- private int oaOrent = 0;
+ private ObjectAreaRotation oaOrent = ObjectAreaRotation.RIGHT_HANDED_0;
/** the X-axis origin defined in the object */
private int xocaOset = -1;
@@ -94,13 +93,7 @@ public class IncludeObject extends Abstr
* The orientation (0,90, 180, 270)
*/
public void setObjectAreaOrientation(int orientation) {
- if (orientation == 0 || orientation == 90 || orientation == 180
- || orientation == 270) {
- this.oaOrent = orientation;
- } else {
- throw new IllegalArgumentException(
- "The orientation must be one of the values 0, 90, 180, 270");
- }
+ this.oaOrent = ObjectAreaRotation.objectAreaRotationFor(orientation);
}
/**
@@ -151,87 +144,16 @@ public class IncludeObject extends Abstr
data[17] = 0x00; // reserved
data[18] = objectType;
- //XoaOset (object area)
- if (xoaOset > -1) {
- byte[] x = BinaryUtils.convert(xoaOset, 3);
- data[19] = x[0];
- data[20] = x[1];
- data[21] = x[2];
- } else {
- data[19] = (byte)0xFF;
- data[20] = (byte)0xFF;
- data[21] = (byte)0xFF;
- }
+ writeOsetTo(data, 19, xoaOset);
- // YoaOset (object area)
- if (yoaOset > -1) {
- byte[] y = BinaryUtils.convert(yoaOset, 3);
- data[22] = y[0];
- data[23] = y[1];
- data[24] = y[2];
- } else {
- data[22] = (byte)0xFF;
- data[23] = (byte)0xFF;
- data[24] = (byte)0xFF;
- }
-
- // XoaOrent/YoaOrent
- switch (oaOrent) {
- case -1: // use x/y axis orientation defined in object
- data[25] = (byte)0xFF; // x axis rotation
- data[26] = (byte)0xFF; //
- data[27] = (byte)0xFF; // y axis rotation
- data[28] = (byte)0xFF;
- break;
- case 90:
- data[25] = 0x2D;
- data[26] = 0x00;
- data[27] = 0x5A;
- data[28] = 0x00;
- break;
- case 180:
- data[25] = 0x5A;
- data[25] = 0x00;
- data[27] = (byte)0x87;
- data[28] = 0x00;
- break;
- case 270:
- data[25] = (byte)0x87;
- data[26] = 0x00;
- data[27] = 0x00;
- data[28] = 0x00;
- break;
- default: // 0 degrees
- data[25] = 0x00;
- data[26] = 0x00;
- data[27] = 0x2D;
- data[28] = 0x00;
- break;
- }
-
- // XocaOset (object content)
- if (xocaOset > -1) {
- byte[] x = BinaryUtils.convert(xocaOset, 3);
- data[29] = x[0];
- data[30] = x[1];
- data[31] = x[2];
- } else {
- data[29] = (byte)0xFF;
- data[30] = (byte)0xFF;
- data[31] = (byte)0xFF;
- }
+ writeOsetTo(data, 22, yoaOset);
+
+ oaOrent.writeTo(data, 25);
+
+ writeOsetTo(data, 29, xocaOset);
+
+ writeOsetTo(data, 32, yocaOset);
- // YocaOset (object content)
- if (yocaOset > -1) {
- byte[] y = BinaryUtils.convert(yocaOset, 3);
- data[32] = y[0];
- data[33] = y[1];
- data[34] = y[2];
- } else {
- data[32] = (byte)0xFF;
- data[33] = (byte)0xFF;
- data[34] = (byte)0xFF;
- }
// RefCSys (Reference coordinate system)
data[35] = 0x01; // Page or overlay coordinate system
@@ -242,6 +164,19 @@ public class IncludeObject extends Abstr
writeTriplets(os);
}
+ private static void writeOsetTo(byte[] out, int offset, int oset) {
+ if (oset > -1) {
+ byte[] y = BinaryUtils.convert(oset, 3);
+ out[offset] = y[0];
+ out[offset + 1] = y[1];
+ out[offset + 2] = y[2];
+ } else {
+ out[offset] = (byte)0xFF;
+ out[offset + 1] = (byte)0xFF;
+ out[offset + 2] = (byte)0xFF;
+ }
+ }
+
private String getObjectTypeName() {
String objectTypeName = null;
if (objectType == TYPE_PAGE_SEGMENT) {
@@ -299,4 +234,69 @@ public class IncludeObject extends Abstr
addTriplet(new MeasurementUnitsTriplet(xRes, xRes));
}
-}
\ No newline at end of file
+ /**
+ * Represents the 4 bytes that specify the area rotation reference coordinate system
+ *
+ */
+ private enum ObjectAreaRotation {
+
+ RIGHT_HANDED_0(Rotation.ROTATION_0, Rotation.ROTATION_90),
+ RIGHT_HANDED_90(Rotation.ROTATION_90, Rotation.ROTATION_180),
+ RIGHT_HANDED_180(Rotation.ROTATION_180, Rotation.ROTATION_270),
+ RIGHT_HANDED_270(Rotation.ROTATION_270, Rotation.ROTATION_0);
+
+ /**
+ * The object area's X-axis rotation from the X axis of the reference coordinate system
+ */
+ private final Rotation xoaOrent;
+ /**
+ * The object area's Y-axis rotation from the Y axis of the reference coordinate system
+ */
+ private final Rotation yoaOrent;
+
+ public void writeTo(byte[] out, int offset) {
+ xoaOrent.writeTo(out, offset);
+ yoaOrent.writeTo(out, offset + 2);
+ }
+
+ ObjectAreaRotation(Rotation xoaOrent, Rotation yoaOrent) {
+ this.xoaOrent = xoaOrent;
+ this.yoaOrent = yoaOrent;
+ }
+
+ private static ObjectAreaRotation objectAreaRotationFor(int orientation) {
+ switch (orientation) {
+ case 0: return RIGHT_HANDED_0;
+ case 90: return RIGHT_HANDED_90;
+ case 180: return RIGHT_HANDED_180;
+ case 270: return RIGHT_HANDED_270;
+ default: throw new IllegalArgumentException(
+ "The orientation must be one of the values 0, 90, 180, 270");
+ }
+ }
+ }
+
+ /**
+ * Represents a rotation value
+ *
+ */
+ private enum Rotation {
+
+ ROTATION_0(0),
+ ROTATION_90(0x2D),
+ ROTATION_180(0x5A),
+ ROTATION_270(0x87);
+
+ private final byte firstByte;
+
+ public void writeTo(byte[] out, int offset) {
+ out[offset] = firstByte;
+ out[offset + 1] = (byte)0;
+ }
+
+ Rotation(int firstByte) {
+ this.firstByte = (byte) firstByte;
+ }
+ }
+
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludePageOverlay.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludePageOverlay.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludePageOverlay.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/IncludePageOverlay.java Thu Apr 5 16:19:19 2012
@@ -126,4 +126,4 @@ public class IncludePageOverlay extends
}
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/InvokeMediumMap.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/InvokeMediumMap.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/InvokeMediumMap.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/InvokeMediumMap.java Thu Apr 5 16:19:19 2012
@@ -54,4 +54,4 @@ public class InvokeMediumMap extends Abs
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapImageObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapImageObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapImageObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapImageObject.java Thu Apr 5 16:19:19 2012
@@ -55,4 +55,4 @@ public class MapImageObject extends Abst
os.write(data);
writeTriplets(os);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageOverlay.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageOverlay.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageOverlay.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageOverlay.java Thu Apr 5 16:19:19 2012
@@ -138,4 +138,4 @@ public class MapPageOverlay extends Abst
}
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageSegment.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageSegment.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageSegment.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/MapPageSegment.java Thu Apr 5 16:19:19 2012
@@ -131,4 +131,4 @@ public class MapPageSegment extends Abst
}
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/NoOperation.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/NoOperation.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/NoOperation.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/NoOperation.java Thu Apr 5 16:19:19 2012
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.io.OutputStream;
import org.apache.fop.afp.AFPConstants;
+import org.apache.fop.afp.Completable;
import org.apache.fop.afp.util.BinaryUtils;
/**
@@ -35,7 +36,7 @@ import org.apache.fop.afp.util.BinaryUti
* No Operation structured fields, no semantics should be attached to
* the data carried by the No Operation structured field in interchange
*/
-public class NoOperation extends AbstractAFPObject {
+public class NoOperation extends AbstractAFPObject implements Completable {
/** Up to 32759 bytes of data with no architectural definition */
private static final int MAX_DATA_LEN = 32759;
@@ -81,7 +82,7 @@ public class NoOperation extends Abstrac
data[1] = rl1[0];
data[2] = rl1[1];
- // Structured field ID for a TLE
+ // Structured field ID for a NOP
data[3] = (byte) 0xD3;
data[4] = (byte) 0xEE;
data[5] = (byte) 0xEE;
@@ -97,4 +98,20 @@ public class NoOperation extends Abstrac
os.write(data);
}
-}
\ No newline at end of file
+ /** {@inheritDoc} */
+ public boolean isComplete() {
+ return true; //always complete
+ }
+
+ /** {@inheritDoc} */
+ public void setComplete(boolean complete) {
+ //ignore
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public String toString() {
+ return "NOP: " + content.substring(0, Math.min(64, content.length()));
+ }
+
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectAreaPosition.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectAreaPosition.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectAreaPosition.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectAreaPosition.java Thu Apr 5 16:19:19 2012
@@ -139,4 +139,4 @@ public class ObjectAreaPosition extends
+ ", xOffset=" + xOffset
+ ", yOffset=" + yOffset;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectContainer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectContainer.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectContainer.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/ObjectContainer.java Thu Apr 5 16:19:19 2012
@@ -107,7 +107,7 @@ public class ObjectContainer extends Abs
ContainerDataDescriptor containerDataDescriptor
= factory.createContainerDataDescriptor(
- dataWidth, dataHeight, widthRes, heightRes);
+ dataWidth, dataHeight, widthRes, heightRes);
getObjectEnvironmentGroup().setDataDescriptor(containerDataDescriptor);
}
}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Overlay.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Overlay.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Overlay.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Overlay.java Thu Apr 5 16:19:19 2012
@@ -72,7 +72,6 @@ public class Overlay extends PageObject
getActiveEnvironmentGroup().writeToStream(os);
- writeObjects(tagLogicalElements, os);
writeObjects(objects, os);
}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageDescriptor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageDescriptor.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageDescriptor.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageDescriptor.java Thu Apr 5 16:19:19 2012
@@ -85,4 +85,4 @@ public class PageDescriptor extends Abst
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageGroup.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageGroup.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageGroup.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageGroup.java Thu Apr 5 16:19:19 2012
@@ -76,12 +76,6 @@ public class PageGroup extends AbstractR
}
/** {@inheritDoc} */
- protected void writeContent(OutputStream os) throws IOException {
- writeObjects(tagLogicalElements, os, true);
- super.writeContent(os);
- }
-
- /** {@inheritDoc} */
protected void writeStart(OutputStream os) throws IOException {
byte[] data = new byte[17];
copySF(data, Type.BEGIN, Category.PAGE_GROUP);
@@ -104,4 +98,4 @@ public class PageGroup extends AbstractR
public int getTleSequence() {
return tleSequence;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageObject.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PageObject.java Thu Apr 5 16:19:19 2012
@@ -185,7 +185,6 @@ public class PageObject extends Abstract
getActiveEnvironmentGroup().writeToStream(os);
- writeObjects(tagLogicalElements, os);
writeObjects(objects, os);
}
@@ -215,4 +214,4 @@ public class PageObject extends Abstract
protected boolean canWrite(AbstractAFPObject ao) {
return true;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextData.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextData.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextData.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextData.java Thu Apr 5 16:19:19 2012
@@ -24,7 +24,6 @@ import java.io.OutputStream;
import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.fop.afp.ptoca.PtocaBuilder;
import org.apache.fop.afp.ptoca.PtocaConstants;
import org.apache.fop.afp.util.BinaryUtils;
@@ -120,4 +119,4 @@ public class PresentationTextData extend
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextDescriptor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextDescriptor.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextDescriptor.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/PresentationTextDescriptor.java Thu Apr 5 16:19:19 2012
@@ -98,4 +98,4 @@ public class PresentationTextDescriptor
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Registry.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Registry.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Registry.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/Registry.java Thu Apr 5 16:19:19 2012
@@ -20,6 +20,7 @@
package org.apache.fop.afp.modca;
import java.util.Collections;
+import java.util.HashMap;
import org.apache.xmlgraphics.util.MimeConstants;
@@ -43,9 +44,8 @@ public final class Registry {
private static final byte COMPID_TRUETYPE_OPENTYPE_FONT_COLLECTION_RESOURCE_OBJECT = 53;
/** mime type entry mapping */
- private final java.util.Map/*<String, ObjectType>*/ mimeObjectTypeMap
- = Collections.synchronizedMap(
- new java.util.HashMap/*<String, ObjectType>*/());
+ private final java.util.Map<String, ObjectType> mimeObjectTypeMap
+ = Collections.synchronizedMap(new HashMap<String, ObjectType>());
/** singleton instance */
private static Registry instance = null;
@@ -203,7 +203,7 @@ public final class Registry {
* @return the MOD:CA object type
*/
public ObjectType getObjectType(String mimeType) {
- return (ObjectType)mimeObjectTypeMap.get(mimeType);
+ return mimeObjectTypeMap.get(mimeType);
}
/**
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/StreamedResourceGroup.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/StreamedResourceGroup.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/StreamedResourceGroup.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/StreamedResourceGroup.java Thu Apr 5 16:19:19 2012
@@ -93,4 +93,4 @@ public class StreamedResourceGroup exten
return this.complete;
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/TagLogicalElement.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/TagLogicalElement.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/TagLogicalElement.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/TagLogicalElement.java Thu Apr 5 16:19:19 2012
@@ -104,7 +104,7 @@ public class TagLogicalElement extends A
setAttributeValue(value);
setAttributeQualifier(tleID, 1);
- byte[] data = new byte[SF_HEADER.length];
+ byte[] data = new byte[SF_HEADER_LENGTH];
copySF(data, Type.ATTRIBUTE, Category.PROCESS_ELEMENT);
int tripletDataLength = getTripletDataLength();
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/FullyQualifiedNameTriplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/FullyQualifiedNameTriplet.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/FullyQualifiedNameTriplet.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/FullyQualifiedNameTriplet.java Thu Apr 5 16:19:19 2012
@@ -205,4 +205,4 @@ public class FullyQualifiedNameTriplet e
os.write(data);
}
-}
\ No newline at end of file
+}
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/ObjectClassificationTriplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/ObjectClassificationTriplet.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/ObjectClassificationTriplet.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/triplets/ObjectClassificationTriplet.java Thu Apr 5 16:19:19 2012
@@ -212,4 +212,4 @@ public class ObjectClassificationTriplet
os.write(data);
}
-}
\ No newline at end of file
+}
Propchange: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/parser/
------------------------------------------------------------------------------
Merged /xmlgraphics/fop/branches/Temp_PDF_ObjectStreams/src/java/org/apache/fop/afp/parser:r1303414-1305418
Merged /xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/parser:r1040963-1307575
Merged /xmlgraphics/fop/branches/Temp_Color/src/java/org/apache/fop/afp/parser:r956535-1069429
Merged /xmlgraphics/fop/branches/Temp_ImproveAccessibility/src/java/org/apache/fop/afp/parser:r1187234-1242827
Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/parser/MODCAParser.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/parser/MODCAParser.java?rev=1309921&r1=1309920&r2=1309921&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/parser/MODCAParser.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/parser/MODCAParser.java Thu Apr 5 16:19:19 2012
@@ -20,15 +20,23 @@
package org.apache.fop.afp.parser;
import java.io.DataInputStream;
-import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.fop.afp.parser.UnparsedStructuredField.Introducer;
+
/**
* An simple MO:DCA/AFP parser.
*/
public class MODCAParser {
+ private static final Log LOG = LogFactory.getLog(MODCAParser.class);
+
+ private static final int INTRODUCER_LENGTH = 8;
+
/** The carriage control character (0x5A) used to indicate the start of a structured field. */
public static final byte CARRIAGE_CONTROL_CHAR = (byte)(0x5A & 0xFF);
@@ -39,19 +47,9 @@ public class MODCAParser {
* @param in the {@link InputStream} to read the AFP file from.
*/
public MODCAParser(InputStream in) {
- if (!in.markSupported()) {
- in = new java.io.BufferedInputStream(in);
- }
this.din = new DataInputStream(in);
}
- /**
- * Returns the {@link DataInputStream} used for parsing structured fields.
- * @return the data input stream
- */
- public DataInputStream getDataInputStream() {
- return this.din;
- }
/**
* Reads the next structured field from the input stream.
@@ -61,20 +59,46 @@ public class MODCAParser {
* @throws IOException if an I/O error occurs
*/
public UnparsedStructuredField readNextStructuredField() throws IOException {
- try {
- while (true) {
- byte b = din.readByte(); //Skip 0x5A character if necessary (ex. AFP)
- if (b == 0x0D || b == 0x0A) {
- //CR and LF may be used as field delimiters
- continue;
- } else if (b == CARRIAGE_CONTROL_CHAR) {
- break; //Signals the start of a new structured field
- }
+
+ //Find the SF delimiter
+ do {
+ //Exhausted streams and so no next SF
+ // - null return represents this case
+ // TODO should this happen?
+ if (din.available() == 0) {
+ return null;
+ }
+ } while (din.readByte() != CARRIAGE_CONTROL_CHAR);
+
+ //Read introducer as byte array to preserve any data not parsed below
+ byte[] introducerData = new byte[INTRODUCER_LENGTH]; //Length of introducer
+ din.readFully(introducerData);
+
+ Introducer introducer = new Introducer(introducerData);
+
+ int dataLength = introducer.getLength() - INTRODUCER_LENGTH;
+
+ //Handle optional extension
+ byte[] extData = null;
+ if (introducer.isExtensionPresent()) {
+ short extLength = 0;
+ extLength = (short)((din.readByte()) & 0xFF);
+ if (extLength > 0) {
+ extData = new byte[extLength - 1];
+ din.readFully(extData);
+ dataLength -= extLength;
}
- } catch (EOFException eof) {
- return null;
}
- return UnparsedStructuredField.readStructuredField(getDataInputStream());
- }
+ //Read payload
+ byte[] data = new byte[dataLength];
+ din.readFully(data);
+ UnparsedStructuredField sf = new UnparsedStructuredField(introducer, data, extData);
+
+ if (LOG.isTraceEnabled()) {
+ LOG.trace(sf);
+ }
+
+ return sf;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org