Class PaletteBuilder
- java.lang.Object
-
- org.exoplatform.imageio.plugins.common.PaletteBuilder
-
public class PaletteBuilder extends Object
version: openjdk-7-ea-src-b35-11_sep_2008 This class implements the octree quantization method as it is described in the "Graphics Gems" (ISBN 0-12-286166-3, Chapter 4, pages 297-293)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classPaletteBuilder.ColorNodeThe node of color tree.
-
Field Summary
Fields Modifier and Type Field Description protected intcurrLevelprotected intcurrSizeprotected static intMAXLEVELmaximum of tree depthprotected intmaxNodesprotected intnumNodesprotected PaletteBuilder.ColorNode[]paletteprotected PaletteBuilder.ColorNode[]reduceListprotected intrequiredSizeprotected PaletteBuilder.ColorNoderootprotected RenderedImagesrcprotected ColorModelsrcColorModelprotected RastersrcRasterprotected PaletteBuilder.ColorNodetransColorprotected inttransparency
-
Constructor Summary
Constructors Modifier Constructor Description protectedPaletteBuilder(RenderedImage src)protectedPaletteBuilder(RenderedImage src, int size)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbuildPalette()static booleancanCreatePalette(RenderedImage image)Returnstrueif PaletteBuilder is able to create palette for given rendered image.static booleancanCreatePalette(ImageTypeSpecifier type)Returnstrueif PaletteBuilder is able to create palette for given image type.static IndexColorModelcreateIndexColorModel(RenderedImage img)Creates an palette representing colors from given imageimg.static RenderedImagecreateIndexedImage(RenderedImage src)Creates an image representing given imagesrcusingIndexColorModel.protected intfindColorIndex(PaletteBuilder.ColorNode aNode, Color aColor)protected intfindPaletteEntry(PaletteBuilder.ColorNode aNode, int index, byte[] red, byte[] green, byte[] blue)protected PaletteBuilder.ColorNodefreeTree(PaletteBuilder.ColorNode aNode)protected intgetBranchIndex(Color aColor, int aLevel)protected IndexColorModelgetIndexColorModel()protected RenderedImagegetIndexedImage()protected PaletteBuilder.ColorNodeinsertNode(PaletteBuilder.ColorNode aNode, Color aColor, int aLevel)protected voidreduceTree()
-
-
-
Field Detail
-
MAXLEVEL
protected static final int MAXLEVEL
maximum of tree depth- See Also:
- Constant Field Values
-
src
protected RenderedImage src
-
srcColorModel
protected ColorModel srcColorModel
-
srcRaster
protected Raster srcRaster
-
requiredSize
protected int requiredSize
-
root
protected PaletteBuilder.ColorNode root
-
numNodes
protected int numNodes
-
maxNodes
protected int maxNodes
-
currLevel
protected int currLevel
-
currSize
protected int currSize
-
reduceList
protected PaletteBuilder.ColorNode[] reduceList
-
palette
protected PaletteBuilder.ColorNode[] palette
-
transparency
protected int transparency
-
transColor
protected PaletteBuilder.ColorNode transColor
-
-
Constructor Detail
-
PaletteBuilder
protected PaletteBuilder(RenderedImage src)
-
PaletteBuilder
protected PaletteBuilder(RenderedImage src, int size)
-
-
Method Detail
-
createIndexedImage
public static RenderedImage createIndexedImage(RenderedImage src)
Creates an image representing given imagesrcusingIndexColorModel. Lossless conversion is not always possible (e.g. if number of colors in the given image exceeds maximum palette size). Result image then is an approximation constructed by octree quantization method.- Throws:
IllegalArgumentException- ifsrcisnull.UnsupportedOperationException- if implemented method is unable to create approximation ofsrcandcanCreatePalettereturnsfalse.- See Also:
createIndexColorModel(java.awt.image.RenderedImage),canCreatePalette(javax.imageio.ImageTypeSpecifier)
-
createIndexColorModel
public static IndexColorModel createIndexColorModel(RenderedImage img)
Creates an palette representing colors from given imageimg. If number of colors in the given image exceeds maximum palette size closest colors would be merged.- Throws:
IllegalArgumentException- ifimgisnull.UnsupportedOperationException- if implemented method is unable to create approximation ofimgandcanCreatePalettereturnsfalse.- See Also:
createIndexedImage(java.awt.image.RenderedImage),canCreatePalette(javax.imageio.ImageTypeSpecifier)
-
canCreatePalette
public static boolean canCreatePalette(ImageTypeSpecifier type)
Returnstrueif PaletteBuilder is able to create palette for given image type.- Parameters:
type- an instance ofImageTypeSpecifierto be indexed.- Returns:
trueif thePaletteBuilderis likely to be able to create palette for this image type.- Throws:
IllegalArgumentException- iftypeisnull.
-
canCreatePalette
public static boolean canCreatePalette(RenderedImage image)
Returnstrueif PaletteBuilder is able to create palette for given rendered image.- Parameters:
image- an instance ofRenderedImageto be indexed.- Returns:
trueif thePaletteBuilderis likely to be able to create palette for this image type.- Throws:
IllegalArgumentException- ifimageisnull.
-
getIndexedImage
protected RenderedImage getIndexedImage()
-
findColorIndex
protected int findColorIndex(PaletteBuilder.ColorNode aNode, Color aColor)
-
buildPalette
protected void buildPalette()
-
insertNode
protected PaletteBuilder.ColorNode insertNode(PaletteBuilder.ColorNode aNode, Color aColor, int aLevel)
-
getIndexColorModel
protected IndexColorModel getIndexColorModel()
-
findPaletteEntry
protected int findPaletteEntry(PaletteBuilder.ColorNode aNode, int index, byte[] red, byte[] green, byte[] blue)
-
getBranchIndex
protected int getBranchIndex(Color aColor, int aLevel)
-
reduceTree
protected void reduceTree()
-
freeTree
protected PaletteBuilder.ColorNode freeTree(PaletteBuilder.ColorNode aNode)
-
-