jeremias 2003/03/15 08:49:16
Modified: src/java/org/apache/fop/image JpegImage.java
Log:
Fix CMYK JPEG images.
Added some comments.
Revision Changes Path
1.2 +11 -6 xml-fop/src/java/org/apache/fop/image/JpegImage.java
Index: JpegImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/image/JpegImage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JpegImage.java 11 Mar 2003 13:05:25 -0000 1.1
+++ JpegImage.java 15 Mar 2003 16:49:16 -0000 1.2
@@ -57,6 +57,7 @@
// FOP
import org.apache.fop.fo.FOUserAgent;
+import org.apache.fop.util.CMYKColorSpace;
/**
* FopImage object for JPEG images, Using Java native classes.
@@ -111,20 +112,21 @@
this.bitsPerPixel = 8;
this.isTransparent = false;
+ //Check for SOI (Start of image) marker (FFD8)
if (this.bitmaps.length > (index + 2)
- && uByte(this.bitmaps[index]) == 255
- && uByte(this.bitmaps[index + 1]) == 216) {
+ && uByte(this.bitmaps[index]) == 255 /*0xFF*/
+ && uByte(this.bitmaps[index + 1]) == 216 /*0xD8*/) {
index += 2;
while (index < this.bitmaps.length && cont) {
//check to be sure this is the begining of a header
if (this.bitmaps.length > (index + 2)
- && uByte(this.bitmaps[index]) == 255) {
+ && uByte(this.bitmaps[index]) == 255 /*0xFF*/) {
//192 or 194 are the header bytes that contain
// the jpeg width height and color depth.
- if (uByte(this.bitmaps[index + 1]) == 192
- || uByte(this.bitmaps[index + 1]) == 194) {
+ if (uByte(this.bitmaps[index + 1]) == 192 /*0xC0*/
+ || uByte(this.bitmaps[index + 1]) == 194 /*0xC2*/) {
this.height = calcBytes(this.bitmaps[index + 5],
this.bitmaps[index + 6]);
@@ -139,8 +141,11 @@
ColorSpace.CS_LINEAR_RGB);
} else if (this.bitmaps[index + 9] == 4) {
// howto create CMYK color space
+ /*
this.colorSpace = ColorSpace.getInstance(
ColorSpace.CS_CIEXYZ);
+ */
+ this.colorSpace = CMYKColorSpace.getInstance();
} else {
ua.getLogger().error("Unknown ColorSpace for image: "
+ "");
@@ -155,7 +160,7 @@
index += calcBytes(this.bitmaps[index + 2],
this.bitmaps[index + 3]) + 2;
- } else if (uByte(this.bitmaps[index + 1]) == 226
+ } else if (uByte(this.bitmaps[index + 1]) == 226 /*0xE2*/
&& this.bitmaps.length > (index + 60)) {
// Check if ICC profile
byte[] iccString = new byte[11];
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]