add
public static boolean add(OctreeNode root,
int red,
int green,
int blue,
int bitsPerSample)
Add a color red-green-blue to the octree, given by its root node.
This methods follows the octree down to the bitsPerSample'th level,
creating nodes as necessary.
Increases the pixelCount of a leaf node (if the node already exists)
or initializes a newly-created leaf.
root
- root node of the octreered
- the red intensity value of the color to be addedgreen
- the green intensity value of the color to be addedblue
- the blue intensity value of the color to be addedbitsPerSample
-
compare
public int compare(Object o1,
Object o2)
Compares the two argument objects and returns their relation.
Returns
- a value < 0 if
o1
is smaller than o2
, - 0 if
o1
is equal to o2
and - a value > 0 if
o1
is greater than o2
.
- compare in interface ComparatorInterface
computeIndex
private static int computeIndex(int red,
int green,
int blue,
int shift)
copyChildSums
public void copyChildSums()
Adds the sums for red, green and blue values and
the pixel count values of all child nodes and
stores the results in this node.
Does nothing if this is a leaf.
Otherwise, recursively calls itself with all
non-null child nodes and adds their sums for red,
green and blue and the number of pixel values.
Then stores these values in this node.
They will be used when the octree is pruned to have
a certain number of leaves.
determineRepresentativeColor
public void determineRepresentativeColor()
getBlue
public int getBlue()
getGreen
public int getGreen()
getNumChildren
public int getNumChildren()
getPaletteIndex
public int getPaletteIndex()
getRed
public int getRed()
isLeaf
public boolean isLeaf()
map
private final int map(int r,
int g,
int b,
int shift,
int[] quantizedRgb)
map
public int map(int[] origRgb,
int[] quantizedRgb)
Returns the index of the best match for origRgb in the palette or
-1 if the best match could not be determined.
If there was a best match, quantizedRgb is filled with the quantized color's
RGB values.
setChildren
public void setChildren(OctreeNode[] newChildren)
setPaletteIndex
public void setPaletteIndex(int index)
update
private void update(int red,
int green,
int blue)