You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by tk...@apache.org on 2002/02/07 14:10:17 UTC
cvs commit: xml-batik/sources/org/apache/batik/transcoder/image PNGTranscoder.java
tkormann 02/02/07 05:10:17
Modified: sources/org/apache/batik/transcoder/image PNGTranscoder.java
Log:
transcoding hint added to support custom gamma correction for PNG image
Revision Changes Path
1.10 +69 -18 xml-batik/sources/org/apache/batik/transcoder/image/PNGTranscoder.java
Index: PNGTranscoder.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/transcoder/image/PNGTranscoder.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- PNGTranscoder.java 29 Oct 2001 17:38:27 -0000 1.9
+++ PNGTranscoder.java 7 Feb 2002 13:10:17 -0000 1.10
@@ -14,6 +14,7 @@
import java.io.IOException;
import java.io.OutputStream;
import org.apache.batik.transcoder.keys.BooleanKey;
+import org.apache.batik.transcoder.keys.FloatKey;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.TranscodingHints;
@@ -25,14 +26,15 @@
* This class is an <tt>ImageTranscoder</tt> that produces a PNG image.
*
* @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
- * @version $Id: PNGTranscoder.java,v 1.9 2001/10/29 17:38:27 tkormann Exp $
+ * @version $Id: PNGTranscoder.java,v 1.10 2002/02/07 13:10:17 tkormann Exp $
*/
public class PNGTranscoder extends ImageTranscoder {
+
/**
* Constructs a new transcoder that produces png images.
*/
- public PNGTranscoder() {
- hints.put(KEY_FORCE_TRANSPARENT_WHITE, new Boolean(false));
+ public PNGTranscoder() {
+ hints.put(KEY_FORCE_TRANSPARENT_WHITE, Boolean.FALSE);
}
/**
@@ -60,9 +62,13 @@
}
PNGEncodeParam.RGB params =
(PNGEncodeParam.RGB)PNGEncodeParam.getDefaultEncodeParam(img);
- params.setBackgroundRGB(new int [] { 255, 255, 255 });
- // We are using sRGB (gamma 2.2).
- params.setSRGBIntent(PNGEncodeParam.INTENT_PERCEPTUAL);
+ params.setBackgroundRGB(new int [] { 255, 255, 255 });
+ if (hints.containsKey(KEY_GAMMA)) {
+ params.setGamma(((Float)hints.get(KEY_GAMMA)).floatValue());
+ } else {
+ // We are using sRGB (gamma 2.2).
+ params.setSRGBIntent(PNGEncodeParam.INTENT_PERCEPTUAL);
+ }
//
// This is a trick so that viewers which do not support the alpha
@@ -71,16 +77,16 @@
boolean forceTransparentWhite = false;
if (hints.containsKey(KEY_FORCE_TRANSPARENT_WHITE)) {
- forceTransparentWhite =
- ((Boolean)hints.get
- (KEY_FORCE_TRANSPARENT_WHITE)).booleanValue();
+ forceTransparentWhite =
+ ((Boolean)hints.get
+ (KEY_FORCE_TRANSPARENT_WHITE)).booleanValue();
}
if (forceTransparentWhite) {
int w = img.getWidth(), h = img.getHeight();
DataBufferInt biDB = (DataBufferInt)img.getRaster().getDataBuffer();
int scanStride = ((SinglePixelPackedSampleModel)
- img.getSampleModel()).getScanlineStride();
+ img.getSampleModel()).getScanlineStride();
int dbOffset = biDB.getOffset();
int pixels[] = biDB.getBankData()[0];
int p = dbOffset;
@@ -120,14 +126,59 @@
// --------------------------------------------------------------------
/**
- * The 'forceTransparentWhite' key. It controls whether the encoder should
- * force the image's fully transparent pixels to be fully transparent white
- * instead of fully transparent black. This is usefull when the encoded PNG
- * is displayed in a browser which does not support PNG transparency and
- * lets the image display with a white background instead of a black
- * background. <br /> However, note that the modified image will display
- * differently over a white background in a viewer that supports
- * transparency. */
+ * The forceTransparentWhite key.
+ *
+ * <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Key: </TH>
+ * <TD VALIGN="TOP">KEY_FORCE_TRANSPARENT_WHITE</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Value: </TH>
+ * <TD VALIGN="TOP">Boolean</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Default: </TH>
+ * <TD VALIGN="TOP">false</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Required: </TH>
+ * <TD VALIGN="TOP">No</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Description: </TH>
+ * <TD VALIGN="TOP">It controls whether the encoder should
+ * force the image's fully transparent pixels to be fully transparent
+ * white instead of fully transparent black. This is usefull when the
+ * encoded PNG is displayed in a browser which does not support PNG
+ * transparency and lets the image display with a white background instead
+ * of a black background. <br /> However, note that the modified image
+ * will display differently over a white background in a viewer that
+ * supports transparency.</TD></TR>
+ * </TABLE>
+ */
public static final TranscodingHints.Key KEY_FORCE_TRANSPARENT_WHITE
= new BooleanKey();
+
+ /**
+ * The gamma correction key.
+ *
+ * <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Key: </TH>
+ * <TD VALIGN="TOP">KEY_GAMMA</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Value: </TH>
+ * <TD VALIGN="TOP">Float</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Default: </TH>
+ * <TD VALIGN="TOP">PNGEncodeParam.INTENT_PERCEPTUAL</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Required: </TH>
+ * <TD VALIGN="TOP">No</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Description: </TH>
+ * <TD VALIGN="TOP">Controls the gamma correction of the png image.</TD>
+ * </TR>
+ * </TABLE>
+ */
+ public static final TranscodingHints.Key KEY_GAMMA
+ = new FloatKey();
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org