Author: vhennebert
Date: Tue Apr 28 15:40:04 2009
New Revision: 769437

URL: http://svn.apache.org/viewvc?rev=769437&view=rev
Log:
Added support for CMYK colors in PTOCA

Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/ptoca/PtocaBuilder.java

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/ptoca/PtocaBuilder.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/ptoca/PtocaBuilder.java?rev=769437&r1=769436&r2=769437&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/ptoca/PtocaBuilder.java 
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/ptoca/PtocaBuilder.java 
Tue Apr 28 15:40:04 2009
@@ -20,6 +20,7 @@
 package org.apache.fop.afp.ptoca;
 
 import java.awt.Color;
+import java.awt.color.ColorSpace;
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -314,19 +315,38 @@
             return;
         }
         newControlSequence();
-        writeByte(0x00); // Reserved; must be zero
-        writeByte(0x01); // Color space - 0x01 = RGB
-        writeByte(0x00); // Reserved; must be zero
-        writeByte(0x00); // Reserved; must be zero
-        writeByte(0x00); // Reserved; must be zero
-        writeByte(0x00); // Reserved; must be zero
-        writeByte(8); // Number of bits in component 1
-        writeByte(8); // Number of bits in component 2
-        writeByte(8); // Number of bits in component 3
-        writeByte(0); // Number of bits in component 4
-        writeByte(col.getRed()); // Red intensity
-        writeByte(col.getGreen()); // Green intensity
-        writeByte(col.getBlue()); // Blue intensity
+        if (col.getColorSpace().getType() == ColorSpace.TYPE_CMYK) {
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x04); // Color space - 0x04 = CMYK
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(8); // Number of bits in component 1
+            writeByte(8); // Number of bits in component 2
+            writeByte(8); // Number of bits in component 3
+            writeByte(8); // Number of bits in component 4
+            float[] comps = col.getColorComponents(null);
+            assert comps.length == 4;
+            for (int i = 0; i < 4; i++) {
+                int component = Math.round(comps[i] * 256);
+                writeByte(component);
+            }
+        } else {
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x01); // Color space - 0x01 = RGB
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(0x00); // Reserved; must be zero
+            writeByte(8); // Number of bits in component 1
+            writeByte(8); // Number of bits in component 2
+            writeByte(8); // Number of bits in component 3
+            writeByte(0); // Number of bits in component 4
+            writeByte(col.getRed()); // Red intensity
+            writeByte(col.getGreen()); // Green intensity
+            writeByte(col.getBlue()); // Blue intensity
+        }
         commit(chained(SEC));
         this.currentColor = col;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to