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:
  • 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)