initial commit
[imagesqueeze.git] / src / main / java / eu / svjatoslav / imagesqueeze / codec / OperatingContext.java
1 package eu.svjatoslav.imagesqueeze.codec;
2
3 public class OperatingContext {
4
5         Image image;
6         byte[] yMap;
7         byte[] uMap;
8         byte[] vMap;
9         ColorStats colorStats = new ColorStats();
10         
11         public OperatingContext(){
12         }
13
14         public void initialize(Image image, byte [] brightnessMap, byte [] colornessMap, byte [] colorMap){
15                 this.image = image;
16                 this.yMap = brightnessMap;
17                 this.uMap = colornessMap;
18                 this.vMap = colorMap;
19                 
20                 colorStats.reset();
21         }
22         
23         public void measureNeighborEncode(int x, int y){
24                 if ((y >= 0) && (y < image.metaData.height) && (x >= 0) && (x < image.metaData.width)){
25
26                         int neighborIndex = y * image.metaData.width + x;
27                         
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++;
32                 }
33         }
34
35         public int getYRange(int index){
36                 int brightness = ImageEncoder.byteToInt(yMap[index]);                           
37                 return Math.abs(brightness - colorStats.getAverageY());         
38         }
39
40         public int getURange(int index){
41                 int colorness = ImageEncoder.byteToInt(uMap[index]);                            
42                 return Math.abs(colorness - colorStats.getAverageU());          
43         }
44
45         public int getVRange(int index){
46                 int color = ImageEncoder.byteToInt(vMap[index]);                                
47                 return Math.abs(color - colorStats.getAverageV());              
48         }
49
50                 
51 }