org.apache.batik.ext.awt.image
Class GraphicsUtil

java.lang.Object
  extended by org.apache.batik.ext.awt.image.GraphicsUtil

public class GraphicsUtil
extends java.lang.Object

Set of utility methods for Graphics. These generally bypass broken methods in Java2D or provide tweaked implementations.

Version:
$Id: GraphicsUtil.java,v 1.36 2005/03/27 08:58:32 cam Exp $
Author:
Thomas DeWeese

Field Summary
static java.awt.geom.AffineTransform IDENTITY
           
static java.awt.image.ColorModel Linear_sRGB
          Standard prebuilt Linear_sRGB color model with no alpha.
static java.awt.image.ColorModel Linear_sRGB_Pre
          Standard prebuilt Linear_sRGB color model with premultiplied alpha.
static java.awt.image.ColorModel Linear_sRGB_Unpre
          Standard prebuilt Linear_sRGB color model with unpremultiplied alpha.
static java.awt.image.ColorModel sRGB
          Standard prebuilt sRGB color model with no alpha.
static java.awt.image.ColorModel sRGB_Pre
          Standard prebuilt sRGB color model with premultiplied alpha.
static java.awt.image.ColorModel sRGB_Unpre
          Standard prebuilt sRGB color model with unpremultiplied alpha.
 
Constructor Summary
GraphicsUtil()
           
 
Method Summary
static java.awt.image.ColorModel coerceColorModel(java.awt.image.ColorModel cm, boolean newAlphaPreMult)
          Create a new ColorModel with it's alpha premultiplied state matching newAlphaPreMult.
static java.awt.image.ColorModel coerceData(java.awt.image.WritableRaster wr, java.awt.image.ColorModel cm, boolean newAlphaPreMult)
          Coerces data within a bufferedImage to match newAlphaPreMult, Note that this can not change the colormodel of bi so you
static java.awt.image.WritableRaster copyRaster(java.awt.image.Raster ras)
          Creates a new raster that has a copy of the data in ras.
static java.awt.image.WritableRaster copyRaster(java.awt.image.Raster ras, int minX, int minY)
          Creates a new raster that has a copy of the data in ras.
protected static void divide_BYTE_COMP_Data(java.awt.image.WritableRaster wr)
           
protected static void divide_INT_PACK_Data(java.awt.image.WritableRaster wr)
           
static void divideAlpha(java.awt.image.WritableRaster wr)
           
static boolean is_BYTE_COMP_Data(java.awt.image.SampleModel sm)
           
static boolean is_INT_PACK_Data(java.awt.image.SampleModel sm, boolean requireAlpha)
           
static java.awt.image.ColorModel makeLinear_sRGBCM(boolean premult)
          Method that returns either Linear_sRGB_Pre or Linear_sRGB_UnPre based on premult flag.
static java.awt.image.BufferedImage makeLinearBufferedImage(int width, int height, boolean premult)
          Constructs a BufferedImage with a linear sRGB colorModel, and alpha.
static java.awt.image.WritableRaster makeRasterWritable(java.awt.image.Raster ras)
          Coerces ras to be writable.
static java.awt.image.WritableRaster makeRasterWritable(java.awt.image.Raster ras, int minX, int minY)
          Coerces ras to be writable.
protected static void mult_BYTE_COMP_Data(java.awt.image.WritableRaster wr)
           
protected static void mult_INT_PACK_Data(java.awt.image.WritableRaster wr)
           
static void multiplyAlpha(java.awt.image.WritableRaster wr)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

IDENTITY

public static java.awt.geom.AffineTransform IDENTITY

Linear_sRGB

public static final java.awt.image.ColorModel Linear_sRGB
Standard prebuilt Linear_sRGB color model with no alpha.


Linear_sRGB_Pre

public static final java.awt.image.ColorModel Linear_sRGB_Pre
Standard prebuilt Linear_sRGB color model with premultiplied alpha.


Linear_sRGB_Unpre

public static final java.awt.image.ColorModel Linear_sRGB_Unpre
Standard prebuilt Linear_sRGB color model with unpremultiplied alpha.


sRGB

public static final java.awt.image.ColorModel sRGB
Standard prebuilt sRGB color model with no alpha.


sRGB_Pre

public static final java.awt.image.ColorModel sRGB_Pre
Standard prebuilt sRGB color model with premultiplied alpha.


sRGB_Unpre

public static final java.awt.image.ColorModel sRGB_Unpre
Standard prebuilt sRGB color model with unpremultiplied alpha.

Constructor Detail

GraphicsUtil

public GraphicsUtil()
Method Detail

makeLinear_sRGBCM

public static java.awt.image.ColorModel makeLinear_sRGBCM(boolean premult)
Method that returns either Linear_sRGB_Pre or Linear_sRGB_UnPre based on premult flag.

Parameters:
premult - True if the ColorModel should have premultiplied alpha.
Returns:
a ColorMdoel with Linear sRGB colorSpace and the alpha channel set in accordance with premult

makeLinearBufferedImage

public static java.awt.image.BufferedImage makeLinearBufferedImage(int width,
                                                                   int height,
                                                                   boolean premult)
Constructs a BufferedImage with a linear sRGB colorModel, and alpha.

Parameters:
width - The desired width of the BufferedImage
height - The desired height of the BufferedImage
premult - The desired state of alpha premultiplied
Returns:
The requested BufferedImage.

copyRaster

public static java.awt.image.WritableRaster copyRaster(java.awt.image.Raster ras)
Creates a new raster that has a copy of the data in ras. This is highly optimized for speed. There is no provision for changing any aspect of the SampleModel. This method should be used when you need to change the contents of a Raster that you do not "own" (ie the result of a getData call).

Parameters:
ras - The Raster to copy.
Returns:
A writable copy of ras

copyRaster

public static java.awt.image.WritableRaster copyRaster(java.awt.image.Raster ras,
                                                       int minX,
                                                       int minY)
Creates a new raster that has a copy of the data in ras. This is highly optimized for speed. There is no provision for changing any aspect of the SampleModel. However you can specify a new location for the returned raster. This method should be used when you need to change the contents of a Raster that you do not "own" (ie the result of a getData call).

Parameters:
ras - The Raster to copy.
minX - The x location for the upper left corner of the returned WritableRaster.
minY - The y location for the upper left corner of the returned WritableRaster.
Returns:
A writable copy of ras

makeRasterWritable

public static java.awt.image.WritableRaster makeRasterWritable(java.awt.image.Raster ras)
Coerces ras to be writable. The returned Raster continues to reference the DataBuffer from ras, so modifications to the returned WritableRaster will be seen in ras.

This method should only be used if you need a WritableRaster due to an interface (such as to construct a BufferedImage), but have no intention of modifying the contents of the returned Raster. If you have any doubt about other users of the data in ras, use copyRaster (above).

Parameters:
ras - The raster to make writable.
Returns:
A Writable version of ras (shares DataBuffer with ras).

makeRasterWritable

public static java.awt.image.WritableRaster makeRasterWritable(java.awt.image.Raster ras,
                                                               int minX,
                                                               int minY)
Coerces ras to be writable. The returned Raster continues to reference the DataBuffer from ras, so modifications to the returned WritableRaster will be seen in ras.

You can specify a new location for the returned WritableRaster, this is especially useful for constructing BufferedImages which require the Raster to be at (0,0). This method should only be used if you need a WritableRaster due to an interface (such as to construct a BufferedImage), but have no intention of modifying the contents of the returned Raster. If you have any doubt about other users of the data in ras, use copyRaster (above).

Parameters:
ras - The raster to make writable.
minX - The x location for the upper left corner of the returned WritableRaster.
minY - The y location for the upper left corner of the returned WritableRaster.
Returns:
A Writable version of ras with it's upper left hand coordinate set to minX, minY (shares it's DataBuffer with ras).

coerceColorModel

public static java.awt.image.ColorModel coerceColorModel(java.awt.image.ColorModel cm,
                                                         boolean newAlphaPreMult)
Create a new ColorModel with it's alpha premultiplied state matching newAlphaPreMult.

Parameters:
cm - The ColorModel to change the alpha premult state of.
newAlphaPreMult - The new state of alpha premult.
Returns:
A new colorModel that has isAlphaPremultiplied() equal to newAlphaPreMult.

coerceData

public static java.awt.image.ColorModel coerceData(java.awt.image.WritableRaster wr,
                                                   java.awt.image.ColorModel cm,
                                                   boolean newAlphaPreMult)
Coerces data within a bufferedImage to match newAlphaPreMult, Note that this can not change the colormodel of bi so you

Parameters:
wr - The raster to change the state of.
cm - The colormodel currently associated with data in wr.
newAlphaPreMult - The desired state of alpha Premult for raster.
Returns:
A new colormodel that matches newAlphaPreMult.

multiplyAlpha

public static void multiplyAlpha(java.awt.image.WritableRaster wr)

divideAlpha

public static void divideAlpha(java.awt.image.WritableRaster wr)

is_INT_PACK_Data

public static boolean is_INT_PACK_Data(java.awt.image.SampleModel sm,
                                       boolean requireAlpha)

is_BYTE_COMP_Data

public static boolean is_BYTE_COMP_Data(java.awt.image.SampleModel sm)

divide_INT_PACK_Data

protected static void divide_INT_PACK_Data(java.awt.image.WritableRaster wr)

mult_INT_PACK_Data

protected static void mult_INT_PACK_Data(java.awt.image.WritableRaster wr)

divide_BYTE_COMP_Data

protected static void divide_BYTE_COMP_Data(java.awt.image.WritableRaster wr)

mult_BYTE_COMP_Data

protected static void mult_BYTE_COMP_Data(java.awt.image.WritableRaster wr)