org.apache.batik.ext.awt.image

Class GraphicsUtil

public class GraphicsUtil extends Object

Set of utility methods for Graphics. These generally bypass broken methods in Java2D or provide tweaked implementations.
Field Summary
static AffineTransformIDENTITY
static ColorModelLinear_sRGB
Standard prebuilt Linear_sRGB color model with no alpha
static ColorModelLinear_sRGB_Pre
Standard prebuilt Linear_sRGB color model with premultiplied alpha.
static ColorModelLinear_sRGB_Unpre
Standard prebuilt Linear_sRGB color model with unpremultiplied alpha.
static ColorModelsRGB
Standard prebuilt sRGB color model with no alpha.
static ColorModelsRGB_Pre
Standard prebuilt sRGB color model with premultiplied alpha.
static ColorModelsRGB_Unpre
Standard prebuilt sRGB color model with unpremultiplied alpha.
static booleanWARN_DESTINATION
Method Summary
static ColorModelcoerceColorModel(ColorModel cm, boolean newAlphaPreMult)
Create a new ColorModel with it's alpha premultiplied state matching newAlphaPreMult.
static ColorModelcoerceData(WritableRaster wr, 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 CachableRedconvertToLsRGB(CachableRed src)
This method will return a CacheableRed that has it's data in the linear sRGB colorspace.
static CachableRedconvertTosRGB(CachableRed src)
This method will return a CacheableRed that has it's data in the sRGB colorspace.
static voidcopyBand(Raster src, int srcBand, WritableRaster dst, int dstBand)
static voidcopyBand(Raster src, Rectangle sR, int sBand, WritableRaster dst, Rectangle dR, int dBand)
static voidcopyData(Raster src, WritableRaster dst)
Copies data from one raster to another.
static voidcopyData(BufferedImage src, BufferedImage dst)
Copies data from one bufferedImage to another paying attention to the state of AlphaPreMultiplied.
static voidcopyData(BufferedImage src, Rectangle srcRect, BufferedImage dst, Point destP)
Copies data from one bufferedImage to another paying attention to the state of AlphaPreMultiplied.
static voidcopyData_FALLBACK(Raster src, WritableRaster dst)
static voidcopyData_INT_PACK(Raster src, WritableRaster dst)
An internal optimized version of copyData designed to work on Integer packed data with a SinglePixelPackedSampleModel.
static WritableRastercopyRaster(Raster ras)
Creates a new raster that has a copy of the data in ras.
static WritableRastercopyRaster(Raster ras, int minX, int minY)
Creates a new raster that has a copy of the data in ras.
static Graphics2DcreateGraphics(BufferedImage bi, RenderingHints hints)
This is a wrapper around the system's BufferedImage.createGraphics that arranges for bi to be stored in a Rendering hint in the returned Graphics2D.
static Graphics2DcreateGraphics(BufferedImage bi)
static voiddivideAlpha(WritableRaster wr)
protected static voiddivide_BYTE_COMP_Data(WritableRaster wr)
protected static voiddivide_INT_PACK_Data(WritableRaster wr)
static voiddrawImage(Graphics2D g2d, RenderedImage ri)
Draws ri into g2d.
static voiddrawImage(Graphics2D g2d, CachableRed cr)
Draws cr into g2d.
static voiddrawImage(Graphics2D g2d, RenderableImage filter, RenderContext rc)
Draws a Filter (RenderableImage) into a Graphics 2D after taking into account a particular RenderContext.

This method also attempts to unwind the rendering chain a bit.

static voiddrawImage(Graphics2D g2d, RenderableImage filter)
Draws a Filter (RenderableImage) into a Graphics 2D.

This method also attempts to unwind the rendering chain a bit.

static BufferedImagegetDestination(Graphics2D g2d)
static RectanglegetDestinationBounds(Graphics2D g2d)
static ColorModelgetDestinationColorModel(Graphics2D g2d)
static ColorSpacegetDestinationColorSpace(Graphics2D g2d)
static booleanis_BYTE_COMP_Data(SampleModel sm)
static booleanis_INT_PACK_Data(SampleModel sm, boolean requireAlpha)
static BufferedImagemakeLinearBufferedImage(int width, int height, boolean premult)
Constructs a BufferedImage with a linear sRGB colorModel, and alpha.
static ColorModelmakeLinear_sRGBCM(boolean premult)
Method that returns either Linear_sRGB_Pre or Linear_sRGB_UnPre based on premult flag.
static WritableRastermakeRasterWritable(Raster ras)
Coerces ras to be writable.
static WritableRastermakeRasterWritable(Raster ras, int minX, int minY)
Coerces ras to be writable.
static voidmultiplyAlpha(WritableRaster wr)
protected static voidmult_BYTE_COMP_Data(WritableRaster wr)
protected static voidmult_INT_PACK_Data(WritableRaster wr)
static CachableRedwrap(RenderedImage ri)
Convertes any RenderedImage to a CacheableRed.

Field Detail

IDENTITY

public static AffineTransform IDENTITY

Linear_sRGB

public static final ColorModel Linear_sRGB
Standard prebuilt Linear_sRGB color model with no alpha

Linear_sRGB_Pre

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

Linear_sRGB_Unpre

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

sRGB

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

sRGB_Pre

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

sRGB_Unpre

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

WARN_DESTINATION

public static final boolean WARN_DESTINATION

Method Detail

coerceColorModel

public static ColorModel coerceColorModel(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 ColorModel coerceData(WritableRaster wr, 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.

convertToLsRGB

public static CachableRed convertToLsRGB(CachableRed src)
This method will return a CacheableRed that has it's data in the linear sRGB colorspace. If src is already in linear sRGB then this method does nothing and returns src. Otherwise it creates a transform that will convert src's output to linear sRGB and returns that CacheableRed.

Parameters: src The image to convert to linear sRGB.

Returns: An equivilant image to src who's data is in linear sRGB.

convertTosRGB

public static CachableRed convertTosRGB(CachableRed src)
This method will return a CacheableRed that has it's data in the sRGB colorspace. If src is already in sRGB then this method does nothing and returns src. Otherwise it creates a transform that will convert src's output to sRGB and returns that CacheableRed.

Parameters: src The image to convert to sRGB.

Returns: An equivilant image to src who's data is in sRGB.

copyBand

public static void copyBand(Raster src, int srcBand, WritableRaster dst, int dstBand)

copyBand

public static void copyBand(Raster src, Rectangle sR, int sBand, WritableRaster dst, Rectangle dR, int dBand)

copyData

public static void copyData(Raster src, WritableRaster dst)
Copies data from one raster to another. Only the region of overlap between src and dst is copied. Src and Dst must have compatible SampleModels.

Parameters: src The source of the data dst The destination for the data.

copyData

public static void copyData(BufferedImage src, BufferedImage dst)
Copies data from one bufferedImage to another paying attention to the state of AlphaPreMultiplied.

Parameters: src The source dst The destination

copyData

public static void copyData(BufferedImage src, Rectangle srcRect, BufferedImage dst, Point destP)
Copies data from one bufferedImage to another paying attention to the state of AlphaPreMultiplied.

Parameters: src The source srcRect The Rectangle of source data to be copied dst The destination destP The Place for the upper left corner of srcRect in dst.

copyData_FALLBACK

public static void copyData_FALLBACK(Raster src, WritableRaster dst)

copyData_INT_PACK

public static void copyData_INT_PACK(Raster src, WritableRaster dst)
An internal optimized version of copyData designed to work on Integer packed data with a SinglePixelPackedSampleModel. Only the region of overlap between src and dst is copied. Calls to this should be preflighted with is_INT_PACK_Data on both src and dest (requireAlpha can be false).

Parameters: src The source of the data dst The destination for the data.

copyRaster

public static WritableRaster copyRaster(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 WritableRaster copyRaster(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

createGraphics

public static Graphics2D createGraphics(BufferedImage bi, RenderingHints hints)
This is a wrapper around the system's BufferedImage.createGraphics that arranges for bi to be stored in a Rendering hint in the returned Graphics2D. This allows for accurate determination of the 'devices' size, and colorspace.

Parameters: bi The BufferedImage that the returned Graphics should draw into.

Returns: A Graphics2D that draws into BufferedImage with bi stored in a rendering hint.

createGraphics

public static Graphics2D createGraphics(BufferedImage bi)

divideAlpha

public static void divideAlpha(WritableRaster wr)

divide_BYTE_COMP_Data

protected static void divide_BYTE_COMP_Data(WritableRaster wr)

divide_INT_PACK_Data

protected static void divide_INT_PACK_Data(WritableRaster wr)

drawImage

public static void drawImage(Graphics2D g2d, RenderedImage ri)
Draws ri into g2d. It does this be requesting tiles from ri and drawing them individually in g2d it also takes care of some colorspace and alpha issues.

Parameters: g2d The Graphics2D to draw into. ri The image to be drawn.

drawImage

public static void drawImage(Graphics2D g2d, CachableRed cr)
Draws cr into g2d. It does this be requesting tiles from ri and drawing them individually in g2d it also takes care of some colorspace and alpha issues.

Parameters: g2d The Graphics2D to draw into. cr The image to be drawn.

drawImage

public static void drawImage(Graphics2D g2d, RenderableImage filter, RenderContext rc)
Draws a Filter (RenderableImage) into a Graphics 2D after taking into account a particular RenderContext.

This method also attempts to unwind the rendering chain a bit. So it knows about certain operations (like affine, pad, composite), rather than applying each of these operations in turn it accounts for their affects through modifications to the Graphics2D. This avoids generating lots of intermediate images.

Parameters: g2d The Graphics to draw into. filter The filter to draw rc The render context that controls the drawing operation.

drawImage

public static void drawImage(Graphics2D g2d, RenderableImage filter)
Draws a Filter (RenderableImage) into a Graphics 2D.

This method also attempts to unwind the rendering chain a bit. So it knows about certain operations (like affine, pad, composite), rather than applying each of these operations in turn it accounts for their affects through modifications to the Graphics2D. This avoids generating lots of intermediate images.

Parameters: g2d The Graphics to draw into. filter The filter to draw

getDestination

public static BufferedImage getDestination(Graphics2D g2d)

getDestinationBounds

public static Rectangle getDestinationBounds(Graphics2D g2d)

getDestinationColorModel

public static ColorModel getDestinationColorModel(Graphics2D g2d)

getDestinationColorSpace

public static ColorSpace getDestinationColorSpace(Graphics2D g2d)

is_BYTE_COMP_Data

public static boolean is_BYTE_COMP_Data(SampleModel sm)

is_INT_PACK_Data

public static boolean is_INT_PACK_Data(SampleModel sm, boolean requireAlpha)

makeLinearBufferedImage

public static 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.

makeLinear_sRGBCM

public static 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

makeRasterWritable

public static WritableRaster makeRasterWritable(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 WritableRaster makeRasterWritable(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).

multiplyAlpha

public static void multiplyAlpha(WritableRaster wr)

mult_BYTE_COMP_Data

protected static void mult_BYTE_COMP_Data(WritableRaster wr)

mult_INT_PACK_Data

protected static void mult_INT_PACK_Data(WritableRaster wr)

wrap

public static CachableRed wrap(RenderedImage ri)
Convertes any RenderedImage to a CacheableRed.

If ri is already a CacheableRed it casts it down and returns it.

In cases where ri is not already a CacheableRed it wraps ri with a helper class. The wrapped CacheableRed "Pretends" that it has no sources since it has no way of inteligently handling the dependency/dirty region calls if it exposed the source.

Parameters: ri The RenderedImage to convert.

Returns: a CacheableRed that contains the same data as ri.

Copyright B) 2007 Apache Software Foundation. All Rights Reserved.