Class OctreeNode

    • Field Detail

      • 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
    • Constructor Detail

      • OctreeNode

        public OctreeNode()
    • Method Detail

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