2 * Imagesqueeze - Image codec optimized for photos.
3 * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 2 of the GNU General Public License
7 * as published by the Free Software Foundation.
10 package eu.svjatoslav.imagesqueeze.codec;
12 class OperatingContext {
14 final ColorStats colorStats = new ColorStats();
20 public OperatingContext() {
23 public int getURange(final int index) {
24 final int colorness = ImageEncoder.byteToInt(uMap[index]);
25 return Math.abs(colorness - colorStats.getAverageU());
28 public int getVRange(final int index) {
29 final int color = ImageEncoder.byteToInt(vMap[index]);
30 return Math.abs(color - colorStats.getAverageV());
33 public int getYRange(final int index) {
34 final int brightness = ImageEncoder.byteToInt(yMap[index]);
35 return Math.abs(brightness - colorStats.getAverageY());
38 public void initialize(final Image image, final byte[] brightnessMap,
39 final byte[] colornessMap, final byte[] colorMap) {
48 public void measureNeighborEncode(final int x, final int y) {
49 if ((y >= 0) && (y < image.metaData.height) && (x >= 0)
50 && (x < image.metaData.width)) {
52 final int neighborIndex = (y * image.metaData.width) + x;
54 colorStats.ySum = colorStats.ySum
55 + ImageEncoder.byteToInt(yMap[neighborIndex]);
56 colorStats.uSum = colorStats.uSum
57 + ImageEncoder.byteToInt(uMap[neighborIndex]);
58 colorStats.vSum = colorStats.vSum
59 + ImageEncoder.byteToInt(vMap[neighborIndex]);
60 colorStats.pixelCount++;