From ef7029f306148ebbb1874b91c8fda2557fa89489 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sun, 25 Oct 2009 17:04:14 +0100 Subject: [PATCH] Making more fields accessible, needed for reading layers. --- .../imageio/plugins/psd/PSDChannelInfo.java | 4 +-- .../plugins/psd/PSDLayerBlendMode.java | 34 +++++++++++-------- .../imageio/plugins/psd/PSDLayerInfo.java | 21 +++++++----- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java index 0267dffc..76beec91 100755 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java @@ -36,8 +36,8 @@ package com.twelvemonkeys.imageio.plugins.psd; * @version $Id: PSDChannelInfo.java,v 1.0 May 6, 2008 2:46:23 PM haraldk Exp$ */ class PSDChannelInfo { - private short mChannelId; - long mLength; + final short mChannelId; + final long mLength; // typedef struct _CLI // { diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java index 926be1c9..2d1ed544 100755 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java @@ -70,38 +70,42 @@ class PSDLayerBlendMode { builder.append(", clipping: ").append(mClipping); builder.append(", flags: ").append(byteToBinary(mFlags)); - // TODO: Maybe the flag bits have oposite order? + /* + bit 0 = transparency protected; bit 1 = visible; bit 2 = obsolete; + bit 3 = 1 for Photoshop 5.0 and later, tells if bit 4 has useful information; + bit 4 = pixel data irrelevant to appearance of document + */ builder.append(" ("); if ((mFlags & 0x01) != 0) { - builder.append("Transp. protected "); - } - else { - builder.append("Transp. open"); + builder.append("Transp. protected, "); } if ((mFlags & 0x02) != 0) { - builder.append(", Visible"); - } - else { - builder.append(", Hidden"); + builder.append("Hidden, "); } if ((mFlags & 0x04) != 0) { - builder.append(", Obsolete bit"); + builder.append("Obsolete bit, "); } if ((mFlags & 0x08) != 0) { - builder.append(", Photoshop 5 data"); + builder.append("Photoshop 5.0 data, "); // "tells if next bit has useful information"... } if ((mFlags & 0x10) != 0) { - builder.append(", Pixel data irrelevant"); + builder.append("Pixel data irrelevant, "); } if ((mFlags & 0x20) != 0) { - builder.append(", Unknown bit 5"); + builder.append("Unknown bit 5, "); } if ((mFlags & 0x40) != 0) { - builder.append(", Unknown bit 6"); + builder.append("Unknown bit 6, "); } if ((mFlags & 0x80) != 0) { - builder.append(", Unknown bit 7"); + builder.append("Unknown bit 7, "); } + + // Stupidity... + if (mFlags != 0) { + builder.delete(builder.length() - 2, builder.length()); + } + builder.append(")"); builder.append("]"); diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java index 3f306158..da10552c 100755 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java @@ -41,16 +41,16 @@ import java.util.Arrays; * @version $Id: PSDLayerInfo.java,v 1.0 Apr 29, 2008 6:01:12 PM haraldk Exp$ */ class PSDLayerInfo { - private int mTop; - private int mLeft; - private int mBottom; - private int mRight; + final int mTop; + final int mLeft; + final int mBottom; + final int mRight; - PSDChannelInfo[] mChannelInfo; - private PSDLayerBlendMode mBlendMode; - private PSDLayerMaskData mLayerMaskData; - private PSDChannelSourceDestinationRange[] mRanges; - private String mLayerName; + final PSDChannelInfo[] mChannelInfo; + final PSDLayerBlendMode mBlendMode; + final PSDLayerMaskData mLayerMaskData; + final PSDChannelSourceDestinationRange[] mRanges; + final String mLayerName; PSDLayerInfo(ImageInputStream pInput) throws IOException { mTop = pInput.readInt(); @@ -80,6 +80,9 @@ class PSDLayerInfo { if (layerMaskDataSize != 0) { mLayerMaskData = new PSDLayerMaskData(pInput, layerMaskDataSize); } + else { + mLayerMaskData = null; + } int layerBlendingDataSize = pInput.readInt(); if (layerBlendingDataSize % 8 != 0) {