You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ju...@apache.org on 2008/12/30 14:23:44 UTC
svn commit: r730126 - in
/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color:
ColorSpaceCMYK.java PDDeviceCMYK.java
Author: jukka
Date: Tue Dec 30 05:23:44 2008
New Revision: 730126
URL: http://svn.apache.org/viewvc?rev=730126&view=rev
Log:
PDFBOX-392: Remove or replace the ICC profiles
Patch by Andreas Lehmkuhler
Added:
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/ColorSpaceCMYK.java
Modified:
incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java
Added: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/ColorSpaceCMYK.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/ColorSpaceCMYK.java?rev=730126&view=auto
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/ColorSpaceCMYK.java (added)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/ColorSpaceCMYK.java Tue Dec 30 05:23:44 2008
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.pdmodel.graphics.color;
+
+import java.awt.color.ColorSpace;
+
+/**
+ * This class represents a CMYK color space.
+ *
+ * @author <a href="mailto:andreas@lehmi.de">Andreas Lehmkühler</a>
+ * @version $Revision: 1.0 $
+ */
+public class ColorSpaceCMYK extends ColorSpace
+{
+ /**
+ * IDfor serialization
+ */
+ private static final long serialVersionUID = -6362864473145799405L;
+
+ /**
+ * Constructor
+ */
+ public ColorSpaceCMYK()
+ {
+ super(ColorSpace.TYPE_CMYK,4);
+ }
+
+ /**
+ * Converts colorvalues from RGB-colorspace to CIEXYZ-colorspace
+ * @param rgbvalue RGB colorvalues to be converted.
+ * @return Returns converted colorvalues.
+ */
+ private float[] fromRGBtoCIEXYZ(float[] rgbvalue) {
+ ColorSpace colorspaceRGB = ColorSpace.getInstance(CS_sRGB);
+ return colorspaceRGB.toCIEXYZ(rgbvalue);
+ }
+
+ /**
+ * Converts colorvalues from CIEXYZ-colorspace to RGB-colorspace
+ * @param rgbvalue CIEXYZ colorvalues to be converted.
+ * @return Returns converted colorvalues.
+ */
+ private float[] fromCIEXYZtoRGB(float[] xyzvalue) {
+ ColorSpace colorspaceXYZ = ColorSpace.getInstance(CS_CIEXYZ);
+ return colorspaceXYZ.toRGB(xyzvalue);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public float[] fromCIEXYZ(float[] colorvalue) {
+ if (colorvalue != null && colorvalue.length == 3)
+ // We have to convert from XYV to RGB to CMYK
+ return fromRGB(fromCIEXYZtoRGB(colorvalue));
+ else
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public float[] fromRGB(float[] rgbvalue) {
+ if (rgbvalue != null && rgbvalue.length == 3) {
+ // First of all we have to convert from RGB to CMY
+ float c = 1 - rgbvalue[0];
+ float m = 1 - rgbvalue[1];
+ float y = 1 - rgbvalue[2];
+ // Now we have to convert from CMY to CMYK
+ float var_K = 1;
+ float[] cmyk = new float[4];
+ if ( c < var_K )
+ var_K = c;
+ if ( m < var_K )
+ var_K = m;
+ if ( y < var_K )
+ var_K = y;
+ if ( var_K == 1 ) {
+ cmyk[0] = cmyk[1] = cmyk[2] = 0;
+ }
+ else {
+ cmyk[0] = ( c - var_K ) / ( 1 - var_K );
+ cmyk[1] = ( m - var_K ) / ( 1 - var_K );
+ cmyk[2] = ( y - var_K ) / ( 1 - var_K );
+ }
+ cmyk[3] = var_K;
+ return cmyk;
+ }
+ else
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public float[] toCIEXYZ(float[] colorvalue) {
+ if (colorvalue != null && colorvalue.length == 4)
+ // We have to convert from CMYK to RGB to XYV
+ return fromRGBtoCIEXYZ(toRGB(colorvalue));
+ else
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public float[] toRGB(float[] colorvalue) {
+ if (colorvalue != null && colorvalue.length == 4) {
+ // First of all we have to convert from CMYK to CMY
+ float c = ( colorvalue[0] * ( 1 - colorvalue[3] ) + colorvalue[3] );
+ float m = ( colorvalue[1] * ( 1 - colorvalue[3] ) + colorvalue[3] );
+ float y = ( colorvalue[2] * ( 1 - colorvalue[3] ) + colorvalue[3] );
+ // Now we have to convert from CMY to RGB
+ float[] rgbvalues = new float[3];
+ rgbvalues[0] = 1 - c;
+ rgbvalues[1] = 1 - m;
+ rgbvalues[2] = 1 - y;
+ return rgbvalues;
+ }
+ else
+ return null;
+ }
+
+}
Modified: incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java
URL: http://svn.apache.org/viewvc/incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java?rev=730126&r1=730125&r2=730126&view=diff
==============================================================================
--- incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java (original)
+++ incubator/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java Tue Dec 30 05:23:44 2008
@@ -17,14 +17,9 @@
package org.apache.pdfbox.pdmodel.graphics.color;
import java.awt.color.ColorSpace;
-import java.awt.color.ICC_ColorSpace;
-import java.awt.color.ICC_Profile;
import java.awt.image.ColorModel;
-
-import java.io.InputStream;
import java.io.IOException;
-import org.apache.pdfbox.util.ResourceLoader;
/**
* This class represents a CMYK color space.
@@ -88,22 +83,7 @@
public ColorSpace createColorSpace() throws IOException
{
if( cSpace == null )
- {
- InputStream profile = null;
- try
- {
- profile = ResourceLoader.loadResource( "Resources/colorspace-profiles/CMYK.pf" );
- ICC_Profile iccProfile = ICC_Profile.getInstance( profile );
- cSpace = new ICC_ColorSpace( iccProfile );
- }
- finally
- {
- if( profile != null )
- {
- profile.close();
- }
- }
- }
+ cSpace = new ColorSpaceCMYK();
return cSpace;
}