2 * Imagesqueeze - Image codec. Copyright ©2012-2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of version 3 of the GNU Lesser General Public License
6 * or later as published by the Free Software Foundation.
9 package eu.svjatoslav.imagesqueeze.codec;
11 class OperatingContext {
13 final ColorStats colorStats = new ColorStats();
19 public OperatingContext() {
22 public int getURange(final int index) {
23 final int colorness = ImageEncoder.byteToInt(uMap[index]);
24 return Math.abs(colorness - colorStats.getAverageU());
27 public int getVRange(final int index) {
28 final int color = ImageEncoder.byteToInt(vMap[index]);
29 return Math.abs(color - colorStats.getAverageV());
32 public int getYRange(final int index) {
33 final int brightness = ImageEncoder.byteToInt(yMap[index]);
34 return Math.abs(brightness - colorStats.getAverageY());
37 public void initialize(final Image image, final byte[] brightnessMap,
38 final byte[] colornessMap, final byte[] colorMap) {
47 public void measureNeighborEncode(final int x, final int y) {
48 if ((y >= 0) && (y < image.metaData.height) && (x >= 0)
49 && (x < image.metaData.width)) {
51 final int neighborIndex = (y * image.metaData.width) + x;
53 colorStats.ySum = colorStats.ySum
54 + ImageEncoder.byteToInt(yMap[neighborIndex]);
55 colorStats.uSum = colorStats.uSum
56 + ImageEncoder.byteToInt(uMap[neighborIndex]);
57 colorStats.vSum = colorStats.vSum
58 + ImageEncoder.byteToInt(vMap[neighborIndex]);
59 colorStats.pixelCount++;