Package net.sourceforge.jiu.color.quantization

# Class OctreeNode

java.lang.Object
net.sourceforge.jiu.color.quantization.OctreeNode

All Implemented Interfaces:
  `RGBIndex`, `ComparatorInterface`

public class OctreeNode extends Object implements ComparatorInterface, RGBIndex
A single node in an octree.

Since:
  0.6.0
Author:
  Marco Schmidt
See Also:
  - `OctreeColorQuantizer`

## Field Summary

Fields
Modifier and Type
Field
Description
`private int`
`blue`
`private int`
`blueSum`
`private OctreeNode[]`
`children`
`private int`
`green`
`private int`
`greenSum`
`private int`
`paletteIndex`
`private int`
`pixelCount`
`private int`
`red`
`private int`
`redSum`

### Fields inherited from interface net.sourceforge.jiu.data.RGBIndex

`INDEX_BLUE, INDEX_GREEN, INDEX_RED`

## Constructor Summary

Constructors
Constructor
Description
`OctreeNode()`

## Method Summary

Modifier and Type
Method
Description
`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.
`int`
`compare(Object o1, Object o2)`
Compares the two argument objects and returns their relation.
`private static int`
`computeIndex(int red, int green, int blue, int shift)`
`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.
`void`
`determineRepresentativeColor()`
`int`
`getBlue()`
`OctreeNode[]`
`getChildren()`
`int`
`getGreen()`
`int`
`getNumChildren()`
`int`
`getPaletteIndex()`
`int`
`getRed()`
`boolean`
`isLeaf()`
`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.
`private final int`
`map(int r, int g, int b, int shift, int[] quantizedRgb)`
`void`
`setChildren(OctreeNode[] newChildren)`
`void`
`setPaletteIndex(int index)`
`private void`
`update(int red, int green, int blue)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### paletteIndex

private int paletteIndex

### pixelCount

private int pixelCount

### redSum

private int redSum

### greenSum

private int greenSum

### blueSum

private int blueSum

### red

private int red

### green

private int green

### blue

private int blue

### children

private OctreeNode[] children

## Constructor Details

### OctreeNode

public OctreeNode()

## Method Details

### 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.

Parameters:
  `root` - root node of the octree
  `red` - the red intensity value of the color to be added
  `green` - the green intensity value of the color to be added
  `blue` - the blue intensity value of the color to be added
  `bitsPerSample` -

### compare

public int compare(Object o1, Object o2)
Description copied from interface: `ComparatorInterface`
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`.

Specified by:
  `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()

### getChildren

public OctreeNode[] getChildren()

### getGreen

public int getGreen()

### getNumChildren

public int getNumChildren()

### getPaletteIndex

public int getPaletteIndex()

### getRed

public int getRed()

### isLeaf

public boolean isLeaf()

### 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.

### map

private final int map(int r, int g, int b, int shift, int[] quantizedRgb)

### setChildren

public void setChildren(OctreeNode[] newChildren)

### setPaletteIndex

public void setPaletteIndex(int index)

### update

private void update(int red, int green, int blue)