1 package eu.svjatoslav.imagesqueeze.codec;
3 public class OperatingContext {
9 ColorStats colorStats = new ColorStats();
11 public OperatingContext(){
14 public void initialize(Image image, byte [] brightnessMap, byte [] colornessMap, byte [] colorMap){
16 this.yMap = brightnessMap;
17 this.uMap = colornessMap;
23 public void measureNeighborEncode(int x, int y){
24 if ((y >= 0) && (y < image.metaData.height) && (x >= 0) && (x < image.metaData.width)){
26 int neighborIndex = y * image.metaData.width + x;
28 colorStats.ySum = colorStats.ySum + ImageEncoder.byteToInt(yMap[neighborIndex]);
29 colorStats.uSum = colorStats.uSum + ImageEncoder.byteToInt(uMap[neighborIndex]);
30 colorStats.vSum = colorStats.vSum + ImageEncoder.byteToInt(vMap[neighborIndex]);
31 colorStats.pixelCount++;
35 public int getYRange(int index){
36 int brightness = ImageEncoder.byteToInt(yMap[index]);
37 return Math.abs(brightness - colorStats.getAverageY());
40 public int getURange(int index){
41 int colorness = ImageEncoder.byteToInt(uMap[index]);
42 return Math.abs(colorness - colorStats.getAverageU());
45 public int getVRange(int index){
46 int color = ImageEncoder.byteToInt(vMap[index]);
47 return Math.abs(color - colorStats.getAverageV());