2 * Image codec. Author: Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
3 * This project is released under Creative Commons Zero (CC0) license.
5 package eu.svjatoslav.imagesqueeze.codec;
7 class OperatingContext {
9 final ColorStats colorStats = new ColorStats();
15 public OperatingContext() {
18 public int getURange(final int index) {
19 final int colorness = ImageEncoder.byteToInt(uMap[index]);
20 return Math.abs(colorness - colorStats.getAverageU());
23 public int getVRange(final int index) {
24 final int color = ImageEncoder.byteToInt(vMap[index]);
25 return Math.abs(color - colorStats.getAverageV());
28 public int getYRange(final int index) {
29 final int brightness = ImageEncoder.byteToInt(yMap[index]);
30 return Math.abs(brightness - colorStats.getAverageY());
33 public void initialize(final Image image, final byte[] brightnessMap,
34 final byte[] colornessMap, final byte[] colorMap) {
43 public void measureNeighborEncode(final int x, final int y) {
44 if ((y >= 0) && (y < image.metaData.height) && (x >= 0)
45 && (x < image.metaData.width)) {
47 final int neighborIndex = (y * image.metaData.width) + x;
49 colorStats.ySum = colorStats.ySum
50 + ImageEncoder.byteToInt(yMap[neighborIndex]);
51 colorStats.uSum = colorStats.uSum
52 + ImageEncoder.byteToInt(uMap[neighborIndex]);
53 colorStats.vSum = colorStats.vSum
54 + ImageEncoder.byteToInt(vMap[neighborIndex]);
55 colorStats.pixelCount++;