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 ac...@apache.org on 2008/07/10 12:59:41 UTC

svn commit: r675507 [3/3] - in /xmlgraphics/fop/branches/Temp_AFPGOCAResources: ./ src/java/org/apache/fop/pdf/ src/java/org/apache/fop/render/ src/java/org/apache/fop/render/afp/ src/java/org/apache/fop/render/afp/modca/ src/java/org/apache/fop/render...

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java?rev=675507&r1=675506&r2=675507&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java Thu Jul 10 03:59:39 2008
@@ -30,6 +30,7 @@
 import org.apache.commons.logging.LogFactory;
 
 import org.apache.fop.render.afp.AFPFontAttributes;
+import org.apache.fop.render.afp.AFPTextDataInfo;
 import org.apache.fop.render.afp.DataObjectInfo;
 import org.apache.fop.render.afp.ObjectAreaInfo;
 import org.apache.fop.render.afp.ResourceInfo;
@@ -122,19 +123,9 @@
     private int landscapeRotation = 270;
 
     /**
-     * The x offset
-     */
-    private int xOffset = 0;
-
-    /**
-     * The y offset
-     */
-    private int yOffset = 0;
-
-    /**
      * The rotation
      */
-    private int rotation;
+    private int orientation;
 
     /**
      * The outputstream for the data stream
@@ -276,7 +267,7 @@
                 pageRotation, pageWidthRes, pageHeightRes);
         currentPage = currentPageObject;
         currentOverlay = null;
-        setOffsets(0, 0, 0);
+//        setOffsets(0, 0, 0);
     }
 
     /**
@@ -315,7 +306,7 @@
 
         currentPageObject.createIncludePageOverlay(overlayName, x, y, 0);
         currentPage = currentOverlay;
-        setOffsets(0, 0, 0);
+//        setOffsets(0, 0, 0);
     }
 
     /**
@@ -380,16 +371,25 @@
      *            the offset in the x direction
      * @param yOff
      *            the offset in the y direction
-     * @param rot
+     * @param orientation
      *            the rotation
+     * @deprecated offsets are no longer used, use setOrientation() for setting the orientation
      */
-    public void setOffsets(int xOff, int yOff, int rot) {
-        this.xOffset = xOff;
-        this.yOffset = yOff;
-        this.rotation = rot;
+    public void setOffsets(int xOff, int yOff, int orientation) {
+        setOrientation(orientation);
     }
 
     /**
+     * Sets the orientation to be used for element positioning
+     * 
+     * @param orientation
+     *            the orientation used for element positioning
+     */
+    public void setOrientation(int orientation) {
+        this.orientation = orientation;
+    }
+    
+    /**
      * Creates the given page fonts in the current page
      *
      * @param pageFonts
@@ -425,25 +425,12 @@
      * Helper method to create text on the current page, this method delegates
      * to the current presentation text object in order to construct the text.
      *
-     * @param fontReference
-     *            the font reference used as the resource identifier
-     * @param x
-     *            the x coordinate of the text
-     * @param y
-     *            the y coordinate of the text
-     * @param col
-     *            the text color
-     * @param vsci
-     *            The variable space character increment.
-     * @param ica
-     *            The inter character adjustment.
-     * @param data
-     *            the text data to create
-     */
-    public void createText(int fontReference, int x, int y, Color col,
-            int vsci, int ica, byte[] data) {
-        getCurrentPage().createText(fontReference, x + xOffset, y + yOffset,
-                rotation, col, vsci, ica, data);
+     * @param textDataInfo
+     *            the afp text data
+     */
+    public void createText(AFPTextDataInfo textDataInfo) {
+        textDataInfo.setOrientation(orientation);
+        getCurrentPage().createText(textDataInfo);
     }
 
     /**
@@ -469,8 +456,8 @@
 
         //Update placement with current state
         ObjectAreaInfo areaInfo = dataObjectInfo.getObjectAreaInfo();
-        areaInfo.setX(areaInfo.getX() + this.xOffset);
-        areaInfo.setY(areaInfo.getY() + this.yOffset);
+        areaInfo.setX(areaInfo.getX());
+        areaInfo.setY(areaInfo.getY());
         areaInfo.setRotation(this.rotation);
 
         Registry registry = Registry.getInstance();
@@ -593,8 +580,7 @@
      */
     public void createLine(int x1, int y1, int x2, int y2, int thickness,
             Color col) {
-        getCurrentPage().createLine(x1 + xOffset, y1 + yOffset, x2 + xOffset,
-                y2 + yOffset, thickness, rotation, col);
+        getCurrentPage().createLine(x1, y1, x2, y2, thickness, orientation, col);
     }
 
     /**
@@ -614,8 +600,7 @@
      *            the shading color
      */
     public void createShading(int x, int y, int w, int h, Color col) {
-        currentPageObject.createShading(x + xOffset, y + xOffset, w, h,
-                col.getRed(), col.getGreen(), col.getBlue());
+        currentPageObject.createShading(x, y, w, h, col.getRed(), col.getGreen(), col.getBlue());
     }
 
     /**
@@ -626,7 +611,7 @@
      *            the name of the static overlay
      */
     public void createIncludePageOverlay(String name) {
-        currentPageObject.createIncludePageOverlay(name, 0, 0, rotation);
+        currentPageObject.createIncludePageOverlay(name, 0, 0, orientation);
         currentPageObject.getActiveEnvironmentGroup().createOverlay(name);
     }
 
@@ -653,22 +638,22 @@
     public void createIncludePageSegment(String name, int x, int y) {
         int xOrigin;
         int yOrigin;
-        switch (rotation) {
+        switch (orientation) {
         case 90:
-            xOrigin = getCurrentPage().getWidth() - y - yOffset;
-            yOrigin = x + xOffset;
+            xOrigin = getCurrentPage().getWidth() - y;
+            yOrigin = x;
             break;
         case 180:
-            xOrigin = getCurrentPage().getWidth() - x - xOffset;
-            yOrigin = getCurrentPage().getHeight() - y - yOffset;
+            xOrigin = getCurrentPage().getWidth() - x;
+            yOrigin = getCurrentPage().getHeight() - y;
             break;
         case 270:
-            xOrigin = y + yOffset;
-            yOrigin = getCurrentPage().getHeight() - x - xOffset;
+            xOrigin = y;
+            yOrigin = getCurrentPage().getHeight() - x;
             break;
         default:
-            xOrigin = x + xOffset;
-            yOrigin = y + yOffset;
+            xOrigin = x;
+            yOrigin = y;
             break;
         }
         getCurrentPage().createIncludePageSegment(name, xOrigin, yOrigin);

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java?rev=675507&r1=675506&r2=675507&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java Thu Jul 10 03:59:39 2008
@@ -24,6 +24,7 @@
 import java.io.OutputStream;
 import java.util.List;
 
+import org.apache.fop.render.afp.AFPTextDataInfo;
 import org.apache.fop.render.afp.fonts.AFPFont;
 
 /**
@@ -189,27 +190,11 @@
      * Helper method to create text on the current page, this method delegates
      * to the presentation text object in order to construct the text.
      *
-     * @param fontRef
-     *            the font number used as the resource identifier
-     * @param x
-     *            the x coordinate of the text data
-     * @param y
-     *            the y coordinate of the text data
-     * @param textRotation
-     *            the rotation of the text data
-     * @param col
-     *            the text color
-     * @param vsci
-     *            The variable space character increment.
-     * @param ica
-     *            The inter character adjustment.
-     * @param data
-     *            the text data to create
-     */
-    public void createText(int fontRef, int x, int y, int textRotation, Color col,
-            int vsci, int ica, byte[] data) {
-        getPresentationTextObject().createTextData(
-                fontRef, x, y, textRotation, col, vsci, ica, data);
+     * @param textDataInfo
+     *            the afp text data
+     */
+    public void createText(AFPTextDataInfo textDataInfo) {
+        getPresentationTextObject().createTextData(textDataInfo);
     }
 
     /**

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextData.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextData.java?rev=675507&r1=675506&r2=675507&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextData.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextData.java Thu Jul 10 03:59:39 2008
@@ -24,6 +24,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 
+import org.apache.fop.render.afp.AFPTextDataInfo;
 import org.apache.fop.render.afp.tools.BinaryUtils;
 
 /**
@@ -33,18 +34,18 @@
  * that position them - modal control sequences that adjust the positions by
  * small amounts - other functions causing text to be presented with differences
  * in appearance.
- *
+ * 
  * The graphic characters are expected to conform to a coded font representation
  * so that they can be translated from the code point in the object data to the
  * character in the coded font. The units of measure for linear displacements
  * are derived from the PresentationTextDescriptor or from the hierarchical
  * defaults.
- *
+ * 
  * In addition to graphic character code points, Presentation Text data can
  * contain embedded control sequences. These are strings of two or more bytes
  * which signal an alternate mode of processing for the content of the current
  * Presentation Text data.
- *
+ * 
  */
 public class PresentationTextData extends AbstractAFPObject {
 
@@ -104,21 +105,20 @@
      * Constructor for the PresentationTextData, the boolean flag indicate
      * whether the control sequence prefix should be set to indicate the start
      * of a new control sequence.
-     *
+     * 
      * @param controlInd
      *            The control sequence indicator.
      */
     public PresentationTextData(boolean controlInd) {
-        final byte[] data = {
-            0x5A, // Structured field identifier
-            0x00, // Record length byte 1
-            0x00, // Record length byte 2
-            (byte) 0xD3, // PresentationTextData identifier byte 1
-            (byte) 0xEE, // PresentationTextData identifier byte 2
-            (byte) 0x9B, // PresentationTextData identifier byte 3
-            0x00, // Flag
-            0x00, // Reserved
-            0x00, // Reserved
+        final byte[] data = { 0x5A, // Structured field identifier
+                0x00, // Record length byte 1
+                0x00, // Record length byte 2
+                (byte) 0xD3, // PresentationTextData identifier byte 1
+                (byte) 0xEE, // PresentationTextData identifier byte 2
+                (byte) 0x9B, // PresentationTextData identifier byte 3
+                0x00, // Flag
+                0x00, // Reserved
+                0x00, // Reserved
         };
         baos.write(data, 0, 9);
 
@@ -131,7 +131,7 @@
      * The Set Coded Font Local control sequence activates a coded font and
      * specifies the character attributes to be used. This is a modal control
      * sequence.
-     *
+     * 
      * @param font
      *            The font local identifier.
      * @param afpdata
@@ -152,13 +152,14 @@
      * Establishes the current presentation position on the baseline at a new
      * I-axis coordinate, which is a specified number of measurement units from
      * the B-axis. There is no change to the current B-axis coordinate.
-     *
+     * 
      * @param coordinate
      *            The coordinate for the inline move.
      * @param afpdata
      *            The output stream to which data should be written.
      */
-    private void absoluteMoveInline(int coordinate, ByteArrayOutputStream afpdata) {
+    private void absoluteMoveInline(int coordinate,
+            ByteArrayOutputStream afpdata) {
         byte[] b = BinaryUtils.convert(coordinate, 2);
         afpdata.write(new byte[] { 0x04, (byte) 0xC7, b[0], b[1], }, 0, 4);
         currentXCoordinate = coordinate;
@@ -168,13 +169,14 @@
      * Establishes the baseline and the current presentation position at a new
      * B-axis coordinate, which is a specified number of measurement units from
      * the I-axis. There is no change to the current I-axis coordinate.
-     *
+     * 
      * @param coordinate
      *            The coordinate for the baseline move.
      * @param afpdata
      *            The output stream to which data should be written.
      */
-    private void absoluteMoveBaseline(int coordinate, ByteArrayOutputStream afpdata) {
+    private void absoluteMoveBaseline(int coordinate,
+            ByteArrayOutputStream afpdata) {
         byte[] b = BinaryUtils.convert(coordinate, 2);
         afpdata.write(new byte[] { 0x04, (byte) 0xD3, b[0], b[1], }, 0, 4);
         currentYCoordinate = coordinate;
@@ -183,7 +185,7 @@
     /**
      * The Transparent Data control sequence contains a sequence of code points
      * that are presented without a scan for embedded control sequences.
-     *
+     * 
      * @param data
      *            The text data to add.
      * @param afpdata
@@ -195,10 +197,10 @@
         if (l > 255) {
             // Check that we are not exceeding the maximum length
             throw new IllegalArgumentException(
-                "Transparent data is longer than 253 bytes: " + data);
+                    "Transparent data is longer than 253 bytes: " + data);
         }
         afpdata.write(new byte[] { BinaryUtils.convert(l)[0], (byte) 0xDB, },
-            0, 2);
+                0, 2);
         afpdata.write(data, 0, data.length);
     }
 
@@ -206,7 +208,7 @@
      * Draws a line of specified length and specified width in the B-direction
      * from the current presentation position. The location of the current
      * presentation position is unchanged.
-     *
+     * 
      * @param length
      *            The length of the rule.
      * @param width
@@ -214,9 +216,10 @@
      * @param afpdata
      *            The output stream to which data should be written.
      */
-    private void drawBaxisRule(int length, int width, ByteArrayOutputStream afpdata) {
+    private void drawBaxisRule(int length, int width,
+            ByteArrayOutputStream afpdata) {
         afpdata.write(new byte[] { 0x07, // Length
-            (byte) 0xE7, // Type
+                (byte) 0xE7, // Type
         }, 0, 2);
         // Rule length
         byte[] data1 = BinaryUtils.shortToByteArray((short) length);
@@ -232,7 +235,7 @@
      * Draws a line of specified length and specified width in the I-direction
      * from the current presentation position. The location of the current
      * presentation position is unchanged.
-     *
+     * 
      * @param length
      *            The length of the rule.
      * @param width
@@ -240,9 +243,10 @@
      * @param afpdata
      *            The output stream to which data should be written.
      */
-    private void drawIaxisRule(int length, int width, ByteArrayOutputStream afpdata) {
+    private void drawIaxisRule(int length, int width,
+            ByteArrayOutputStream afpdata) {
         afpdata.write(new byte[] { 0x07, // Length
-            (byte) 0xE5, // Type
+                (byte) 0xE5, // Type
         }, 0, 2);
         // Rule length
         byte[] data1 = BinaryUtils.shortToByteArray((short) length);
@@ -256,73 +260,66 @@
 
     /**
      * Create the presentation text data for the byte array of data.
-     *
-     * @param fontNumber
-     *            The font resource identifier.
-     * @param x
-     *            The x coordinate for the text data.
-     * @param y
-     *            The y coordinate for the text data.
-     * @param orientation
-     *            The orientation of the text data.
-     * @param col
-     *            The text color.
-     * @param vsci
-     *            The variable space character increment.
-     * @param ica
-     *            The inter character adjustment.
-     * @param data
-     *            The text data to be created.
+     * 
+     * @param textDataInfo
+     *            the afp text data
      * @throws MaximumSizeExceededException
+     *             thrown if the maximum number of text data is exceeded
      */
-    public void createTextData(int fontNumber, int x, int y, int orientation,
-        Color col, int vsci, int ica, byte[] data) throws MaximumSizeExceededException {
+    public void createTextData(AFPTextDataInfo textDataInfo)
+            throws MaximumSizeExceededException {
 
         ByteArrayOutputStream afpdata = new ByteArrayOutputStream();
 
-        if (currentOrientation != orientation) {
-            setTextOrientation(orientation, afpdata);
-            currentOrientation = orientation;
+        if (currentOrientation != textDataInfo.getOrientation()) {
+            setTextOrientation(textDataInfo.getOrientation(), afpdata);
+            currentOrientation = textDataInfo.getOrientation();
             currentXCoordinate = -1;
             currentYCoordinate = -1;
         }
 
         // Avoid unnecessary specification of the Y co-ordinate
-        if (y != currentYCoordinate) {
-            absoluteMoveBaseline(y, afpdata);
+        if (textDataInfo.getY() != currentYCoordinate) {
+            absoluteMoveBaseline(textDataInfo.getY(), afpdata);
             currentXCoordinate = -1;
         }
 
         // Avoid unnecessary specification of the X co-ordinate
-        if (x != currentXCoordinate) {
-            absoluteMoveInline(x, afpdata);
+        if (textDataInfo.getX() != currentXCoordinate) {
+            absoluteMoveInline(textDataInfo.getX(), afpdata);
         }
 
         // Avoid unnecessary specification of the variable space increment
-        if (vsci != currentVariableSpaceCharacterIncrement) {
-            setVariableSpaceCharacterIncrement(vsci, afpdata);
-            currentVariableSpaceCharacterIncrement = vsci;
+        if (textDataInfo.getVariableSpaceCharacterIncrement()
+                != currentVariableSpaceCharacterIncrement) {
+            setVariableSpaceCharacterIncrement(textDataInfo
+                    .getVariableSpaceCharacterIncrement(), afpdata);
+            currentVariableSpaceCharacterIncrement = textDataInfo
+                    .getVariableSpaceCharacterIncrement();
         }
 
         // Avoid unnecessary specification of the inter character adjustment
-        if (ica != currentInterCharacterAdjustment) {
-            setInterCharacterAdjustment(ica, afpdata);
-            currentInterCharacterAdjustment = ica;
+        if (textDataInfo.getInterCharacterAdjustment() != currentInterCharacterAdjustment) {
+            setInterCharacterAdjustment(textDataInfo.getInterCharacterAdjustment(),
+                    afpdata);
+            currentInterCharacterAdjustment = textDataInfo
+                    .getInterCharacterAdjustment();
         }
 
         // Avoid unnecessary specification of the text color
-        if (!col.equals(currentColor)) {
-            setExtendedTextColor(col, afpdata);
-            currentColor = col;
+        if (!textDataInfo.getColor().equals(currentColor)) {
+            setExtendedTextColor(textDataInfo.getColor(), afpdata);
+            currentColor = textDataInfo.getColor();
         }
 
-        setCodedFont(BinaryUtils.convert(fontNumber)[0], afpdata);
-        addTransparentData(data, afpdata);
+        setCodedFont(BinaryUtils.convert(textDataInfo.getFontReference())[0],
+                afpdata);
+        addTransparentData(textDataInfo.getData(), afpdata);
         currentXCoordinate = -1;
 
-        int s = afpdata.size();
+        int dataSize = afpdata.size();
 
-        if (baos.size() + s > MAX_SIZE) {
+        if (baos.size() + dataSize > MAX_SIZE) {
             currentXCoordinate = -1;
             currentYCoordinate = -1;
             throw new MaximumSizeExceededException();
@@ -335,7 +332,7 @@
     /**
      * Drawing of lines using the starting and ending coordinates, thickness and
      * colour arguments.
-     *
+     * 
      * @param x1
      *            The starting X coordinate.
      * @param y1
@@ -350,9 +347,11 @@
      *            The orientation of the text data.
      * @param col
      *            The text color.
+     * @throws MaximumSizeExceededException
+     *            thrown if the maximum number of line data has been exceeded
      */
     public void createLineData(int x1, int y1, int x2, int y2, int thickness,
-        int orientation, Color col) throws MaximumSizeExceededException {
+            int orientation, Color col) throws MaximumSizeExceededException {
 
         ByteArrayOutputStream afpdata = new ByteArrayOutputStream();
 
@@ -399,105 +398,103 @@
     /**
      * The Set Text Orientation control sequence establishes the I-direction and
      * B-direction for the subsequent text. This is a modal control sequence.
-     *
+     * 
      * Semantics: This control sequence specifies the I-axis and B-axis
      * orientations with respect to the Xp-axis for the current Presentation
      * Text object. The orientations are rotational values expressed in degrees
      * and minutes.
-     *
+     * 
      * @param orientation
-     *            The text orientation (0,90, 180, 270).
+     *            The text orientation (0, 90, 180, 270).
      * @param afpdata
      *            The output stream to which data should be written.
      */
-    private void setTextOrientation(int orientation, ByteArrayOutputStream afpdata) {
-        afpdata.write(new byte[] { 0x06, (byte) 0xF7, }, 0, 2);
+    private void setTextOrientation(int orientation,
+            ByteArrayOutputStream afpdata) {
+        afpdata.write(new byte[] {0x06, (byte) 0xF7, }, 0, 2);
         switch (orientation) {
-            case 90:
-                afpdata.write(0x2D);
-                afpdata.write(0x00);
-                afpdata.write(0x5A);
-                afpdata.write(0x00);
-                break;
-            case 180:
-                afpdata.write(0x5A);
-                afpdata.write(0x00);
-                afpdata.write(0x87);
-                afpdata.write(0x00);
-                break;
-            case 270:
-                afpdata.write(0x87);
-                afpdata.write(0x00);
-                afpdata.write(0x00);
-                afpdata.write(0x00);
-                break;
-            default:
-                afpdata.write(0x00);
-                afpdata.write(0x00);
-                afpdata.write(0x2D);
-                afpdata.write(0x00);
-                break;
+        case 90:
+            afpdata.write(0x2D);
+            afpdata.write(0x00);
+            afpdata.write(0x5A);
+            afpdata.write(0x00);
+            break;
+        case 180:
+            afpdata.write(0x5A);
+            afpdata.write(0x00);
+            afpdata.write(0x87);
+            afpdata.write(0x00);
+            break;
+        case 270:
+            afpdata.write(0x87);
+            afpdata.write(0x00);
+            afpdata.write(0x00);
+            afpdata.write(0x00);
+            break;
+        default:
+            afpdata.write(0x00);
+            afpdata.write(0x00);
+            afpdata.write(0x2D);
+            afpdata.write(0x00);
+            break;
         }
     }
 
     /**
      * The Set Extended Text Color control sequence specifies a color value and
-     * defines the color space and encoding for that value.  The specified color
-     * value is applied to foreground areas of the text presentation space.
-     * This is a modal control sequence.
-     *
+     * defines the color space and encoding for that value. The specified color
+     * value is applied to foreground areas of the text presentation space. This
+     * is a modal control sequence.
+     * 
      * @param col
      *            The color to be set.
      * @param afpdata
      *            The output stream to which data should be written.
      */
-    private void setExtendedTextColor(Color col,
-        ByteArrayOutputStream afpdata) {
-
-        afpdata.write(new byte[] {
-              15                // Control sequence length
-            , (byte)0x81        // Control sequence function type
-            , 0x00              // Reserved; must be zero
-            , 0x01              // Color space - 0x01 = RGB
-            , 0x00              // Reserved; must be zero
-            , 0x00              // Reserved; must be zero
-            , 0x00              // Reserved; must be zero
-            , 0x00              // Reserved; must be zero
-            , 8                 // Number of bits in component 1
-            , 8                 // Number of bits in component 2
-            , 8                 // Number of bits in component 3
-            , 0                 // Number of bits in component 4
-            , (byte)(col.getRed())   // Red intensity
-            , (byte)(col.getGreen()) // Green intensity
-            , (byte)(col.getBlue())  // Blue intensity
-        }, 0, 15);
-
+    private void setExtendedTextColor(Color col, ByteArrayOutputStream afpdata) {
+        byte[] colorData = new byte[] {
+            15, // Control sequence length
+            (byte) 0x81, // Control sequence function type
+            0x00, // Reserved; must be zero
+            0x01, // Color space - 0x01 = RGB
+            0x00, // Reserved; must be zero
+            0x00, // Reserved; must be zero
+            0x00, // Reserved; must be zero
+            0x00, // Reserved; must be zero
+            8, // Number of bits in component 1
+            8, // Number of bits in component 2
+            8, // Number of bits in component 3
+            0, // Number of bits in component 4
+            (byte) (col.getRed()), // Red intensity
+            (byte) (col.getGreen()), // Green intensity
+            (byte) (col.getBlue()), // Blue intensity
+        };
+        
+        afpdata.write(colorData, 0, colorData.length);
     }
 
     /**
-     * //TODO
-     * This is a modal control sequence.
-     *
+     * //TODO This is a modal control sequence.
+     * 
      * @param incr
      *            The increment to be set.
      * @param afpdata
      *            The output stream to which data should be written.
      */
-    private void setVariableSpaceCharacterIncrement(int incr, ByteArrayOutputStream afpdata) {
+    private void setVariableSpaceCharacterIncrement(int incr,
+            ByteArrayOutputStream afpdata) {
         byte[] b = BinaryUtils.convert(incr, 2);
 
         afpdata.write(new byte[] {
-              4                  // Control sequence length
-            , (byte)0xC5         // Control sequence function type
-            , b[0]
-            , b[1]
-        }, 0, 4);
+                4, // Control sequence length
+                (byte) 0xC5, // Control sequence function type
+                b[0], b[1] },
+                0, 4);
     }
 
     /**
-     * //TODO
-     * This is a modal control sequence.
-     *
+     * //TODO This is a modal control sequence.
+     * 
      * @param incr
      *            The increment to be set.
      * @param afpdata
@@ -506,12 +503,10 @@
     private void setInterCharacterAdjustment(int incr, ByteArrayOutputStream afpdata) {
         byte[] b = BinaryUtils.convert(Math.abs(incr), 2);
         afpdata.write(new byte[] {
-              5                  // Control sequence length
-            , (byte)0xC3         // Control sequence function type
-            , b[0]
-            , b[1]
-            , (byte)(incr >= 0 ? 0 : 1) // Direction
-        }, 0, 5);
+                5, // Control sequence length
+                (byte) 0xC3, // Control sequence function type
+                b[0], b[1], (byte) (incr >= 0 ? 0 : 1) // Direction
+                }, 0, 5);
     }
 
     /**
@@ -531,8 +526,9 @@
      * and zero or more parameters. The control sequence can extend multiple
      * presentation text data objects, but must eventually be terminated. This
      * method terminates the control sequence.
-     *
+     * 
      * @throws MaximumSizeExceededException
+     *       thrown in the event that maximum size has been exceeded
      */
     public void endControlSequence() throws MaximumSizeExceededException {
         byte[] data = new byte[2];

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextObject.java?rev=675507&r1=675506&r2=675507&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextObject.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/modca/PresentationTextObject.java Thu Jul 10 03:59:39 2008
@@ -24,6 +24,8 @@
 import java.io.OutputStream;
 import java.util.List;
 
+import org.apache.fop.render.afp.AFPTextDataInfo;
+
 /**
  * The Presentation Text object is the data object used in document processing
  * environments for representing text which has been prepared for presentation.
@@ -76,58 +78,18 @@
     /**
      * Create the presentation text data for the byte array of data.
      *
-     * @param fontNum
-     *            The font resource identifier.
-     * @param x
-     *            The x coordinate for the text data.
-     * @param y
-     *            The y coordinate for the text data.
-     * @param col
-     *            The text color.
-     * @param vsci
-     *            The variable space character increment.
-     * @param ica
-     *            The inter character increment.
-     * @param data
-     *            The text data to be created.
-     */
-    public void createTextData(int fontNum, int x, int y, Color col,
-            int vsci, int ica, byte[] data) {
-        // Use a default orientation of zero
-        createTextData(fontNum, x, y, 0, col, vsci, ica, data);
-    }
-
-    /**
-     * Create the presentation text data for the byte array of data.
-     *
-     * @param fontRef
-     *            The font resource identifier.
-     * @param x
-     *            The x coordinate for the text data.
-     * @param y
-     *            The y coordinate for the text data.
-     * @param orientation
-     *            The orientation of the text data.
-     * @param col
-     *            The text color.
-     * @param vsci
-     *            The variable space character increment.
-     * @param ica
-     *            The inter character adjustment.
-     * @param data
-     *            The text data to be created.
+     * @param textDataInfo
+     *            The afp text data
      */
-    public void createTextData(int fontRef, int x, int y, int orientation,
-        Color col, int vsci, int ica, byte[] data) {
+    public void createTextData(AFPTextDataInfo textDataInfo) {
         if (currentPresentationTextData == null) {
             startPresentationTextData();
         }
         try {
-            currentPresentationTextData.createTextData(fontRef, x, y,
-                orientation, col, vsci, ica, data);
+            currentPresentationTextData.createTextData(textDataInfo);
         } catch (MaximumSizeExceededException msee) {
             endPresentationTextData();
-            createTextData(fontRef, x, y, orientation, col, vsci, ica, data);
+            createTextData(textDataInfo);
         }
     }
 

Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/pdf/PDFRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/pdf/PDFRenderer.java?rev=675507&r1=675506&r2=675507&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/pdf/PDFRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/pdf/PDFRenderer.java Thu Jul 10 03:59:39 2008
@@ -112,6 +112,7 @@
 import org.apache.fop.pdf.PDFXMode;
 import org.apache.fop.pdf.PDFXObject;
 import org.apache.fop.render.AbstractPathOrientedRenderer;
+import org.apache.fop.render.AbstractState;
 import org.apache.fop.render.Graphics2DAdapter;
 import org.apache.fop.render.RendererContext;
 import org.apache.fop.util.CharUtilities;
@@ -1094,7 +1095,7 @@
      */
     protected List breakOutOfStateStack() {
         List breakOutList = new java.util.ArrayList();
-        PDFState.Data data;
+        AbstractState.AbstractData data;
         while (true) {
             data = currentState.getData();
             if (currentState.pop() == null) {
@@ -1115,10 +1116,10 @@
      */
     protected void restoreStateStackAfterBreakOut(List breakOutList) {
         comment("------ restoring context after break-out...");
-        PDFState.Data data;
+        AbstractState.AbstractData data;
         Iterator i = breakOutList.iterator();
         while (i.hasNext()) {
-            data = (PDFState.Data)i.next();
+            data = (AbstractState.AbstractData)i.next();
             saveGraphicsState();
             AffineTransform at = data.getTransform();
             concatenateTransformationMatrix(at);



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org