/*
 * Image codec. Author: Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
 * This project is released under Creative Commons Zero (CC0) license.
 */
package eu.svjatoslav.imagesqueeze.codec;

class Channel {

    final byte[] rangeMap;
    final byte[] map;

    final byte[] decodedRangeMap;
    final byte[] decodedMap;

    int bitCount;

    public Channel(final int width, final int height) {
        rangeMap = new byte[width * height];

        map = new byte[width * height];

        decodedRangeMap = new byte[width * height];
        decodedRangeMap[0] = (byte) 255;

        decodedMap = new byte[width * height];
    }

    public void printStatistics() {
        final float bitsPerPixel = (float) bitCount / (float) rangeMap.length;
        System.out.println((bitCount / 8) + " bytes. " + bitsPerPixel
                + " bits per pixel.");
    }

    public void reset() {

        for (int i = 0; i < decodedMap.length; i++) {
            decodedMap[i] = 0;
        }

        for (int i = 0; i < decodedRangeMap.length; i++) {
            decodedRangeMap[i] = 0;
        }
        decodedRangeMap[0] = (byte) 255;

        for (int i = 0; i < map.length; i++) {
            map[i] = 0;
        }

        for (int i = 0; i < rangeMap.length; i++) {
            rangeMap[i] = 0;
        }

        bitCount = 0;
    }

}
