Class PaletteBuilder
- java.lang.Object
-
- com.github.jaiimageio.impl.common.PaletteBuilder
-
public class PaletteBuilder extends java.lang.ObjectThis 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 java.awt.image.RenderedImagesrcprotected java.awt.image.ColorModelsrcColorModelprotected java.awt.image.RastersrcRasterprotected PaletteBuilder.ColorNodetransColorprotected inttransparency
-
Constructor Summary
Constructors Modifier Constructor Description protectedPaletteBuilder(java.awt.image.RenderedImage src)protectedPaletteBuilder(java.awt.image.RenderedImage src, int size)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbuildPalette()static booleancanCreatePalette(java.awt.image.RenderedImage image)Returnstrueif PaletteBuilder is able to create palette for given rendered image.static booleancanCreatePalette(javax.imageio.ImageTypeSpecifier type)Returnstrueif PaletteBuilder is able to create palette for given image type.static java.awt.image.IndexColorModelcreateIndexColorModel(java.awt.image.RenderedImage img)Creates an palette representing colors from given imageimg.static java.awt.image.RenderedImagecreateIndexedImage(java.awt.image.RenderedImage src)Creates an image representing given imagesrcusingIndexColorModel.protected intfindColorIndex(PaletteBuilder.ColorNode aNode, java.awt.Color aColor)protected intfindPaletteEntry(PaletteBuilder.ColorNode aNode, int index, byte[] red, byte[] green, byte[] blue)protected PaletteBuilder.ColorNodefreeTree(PaletteBuilder.ColorNode aNode)protected intgetBranchIndex(java.awt.Color aColor, int aLevel)protected java.awt.image.IndexColorModelgetIndexColorModel()protected java.awt.image.RenderedImagegetIndexedImage()private java.awt.ColorgetSrcColor(int x, int y)protected PaletteBuilder.ColorNodeinsertNode(PaletteBuilder.ColorNode aNode, java.awt.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 java.awt.image.RenderedImage src
-
srcColorModel
protected java.awt.image.ColorModel srcColorModel
-
srcRaster
protected java.awt.image.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
-
-
Method Detail
-
createIndexedImage
public static java.awt.image.RenderedImage createIndexedImage(java.awt.image.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:
java.lang.IllegalArgumentException- ifsrcisnull.java.lang.UnsupportedOperationException- if implemented method is unable to create approximation ofsrcandcanCreatePalettereturnsfalse.- See Also:
createIndexColorModel(RenderedImage),canCreatePalette(RenderedImage)
-
createIndexColorModel
public static java.awt.image.IndexColorModel createIndexColorModel(java.awt.image.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:
java.lang.IllegalArgumentException- ifimgisnull.java.lang.UnsupportedOperationException- if implemented method is unable to create approximation ofimgandcanCreatePalettereturnsfalse.- See Also:
createIndexedImage(RenderedImage),canCreatePalette(RenderedImage)
-
canCreatePalette
public static boolean canCreatePalette(javax.imageio.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:
java.lang.IllegalArgumentException- iftypeisnull.
-
canCreatePalette
public static boolean canCreatePalette(java.awt.image.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:
java.lang.IllegalArgumentException- ifimageisnull.
-
getIndexedImage
protected java.awt.image.RenderedImage getIndexedImage()
-
getSrcColor
private java.awt.Color getSrcColor(int x, int y)
-
findColorIndex
protected int findColorIndex(PaletteBuilder.ColorNode aNode, java.awt.Color aColor)
-
buildPalette
protected void buildPalette()
-
insertNode
protected PaletteBuilder.ColorNode insertNode(PaletteBuilder.ColorNode aNode, java.awt.Color aColor, int aLevel)
-
getIndexColorModel
protected java.awt.image.IndexColorModel getIndexColorModel()
-
findPaletteEntry
protected int findPaletteEntry(PaletteBuilder.ColorNode aNode, int index, byte[] red, byte[] green, byte[] blue)
-
getBranchIndex
protected int getBranchIndex(java.awt.Color aColor, int aLevel)
-
reduceTree
protected void reduceTree()
-
freeTree
protected PaletteBuilder.ColorNode freeTree(PaletteBuilder.ColorNode aNode)
-
-