com.sun.jimi.core.util
Class ColorOctree
java.lang.Object
|
+--com.sun.jimi.core.util.ColorOctree
- public final class ColorOctree
- extends java.lang.Object
- implements com.sun.jimi.core.util.OctreeCallback
This class implements a color reduction octree algorithm
as discussed in the following article.
"A simple method for color quantization: Octree quantization"
by Michael Gervautz, Werner Purgathofer in book "Graphics Gems"
Once the number of color representations exceeds the maximum
[generally max will be 256] then a pair of Octree nodes which
each represent a color and have the minimum color difference
between them will be located and merged. For minimum color
distance these nodes will both be at deepest level of the
octree tree.
|
Method Summary |
void |
addColor(int color)
|
void |
addColor(int[] color)
|
void |
cacheONode(OctreeNode on)
Called with an OctreeNode that is no longer required
this method() caches the node if there are insufficient
nodes cached. |
OctreeNode |
getONode(com.sun.jimi.core.util.OctreeCallback oc,
int level)
Return an appropriately initialised OctreeNode object. |
OctreeNode |
getReducible()
Part of OctreeCallback interface. |
boolean |
hasAlpha()
Returns true if the last color in the palette has been reserved for
a transparent color. |
void |
markReducible(OctreeNode on)
Part of OctreeCallback interface. |
| Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
alpha
protected boolean alpha
- Set to true if alpha-data is being used.
If so, the last index in the color map will be reserved for
a transparent color.
cachedONodes
public ExpandableArray cachedONodes
- cache of ONodex
MAXCACHE
public static final int MAXCACHE
- no point in caching more nodes than this.
ColorOctree
public ColorOctree(int maxColors)
addColor
public void addColor(int color)
addColor
public void addColor(int[] color)
hasAlpha
public boolean hasAlpha()
- Returns true if the last color in the palette has been reserved for
a transparent color.
markReducible
public void markReducible(OctreeNode on)
- Part of OctreeCallback interface.
- Specified by:
- markReducible in interface com.sun.jimi.core.util.OctreeCallback
getReducible
public OctreeNode getReducible()
- Part of OctreeCallback interface.
This implementation searches for the depeest registered reducible
node with the most number of pixels recorded for it.
J * This would benefit from an ordered data structure.. [ fiX LATER ]
- Specified by:
- getReducible in interface com.sun.jimi.core.util.OctreeCallback
- Returns:
- OctreeNode which is the "best" candidate for reducing current
number of leaf nodes in the Octree back down to max colors allowed.
getONode
public OctreeNode getONode(com.sun.jimi.core.util.OctreeCallback oc,
int level)
- Return an appropriately initialised OctreeNode object.
It attempts to return a cached node if theres one available
if none available it creates a new node.
- Specified by:
- getONode in interface com.sun.jimi.core.util.OctreeCallback
cacheONode
public void cacheONode(OctreeNode on)
- Called with an OctreeNode that is no longer required
this method() caches the node if there are insufficient
nodes cached.
- Specified by:
- cacheONode in interface com.sun.jimi.core.util.OctreeCallback