BlinkenSimJava v.0.1 (2004-...
Christian Heimke authored 13 years ago
|
1) public class Frame
2) {
3) private int height;
4) private int width;
5) private int channels;
6) private byte[][][] data;
7)
8) Frame( int height, int width, int channels )
9) {
10) this.height = height;
11) this.width = width;
12) this.channels = channels;
13) data = new byte[height][width][channels];
14) }
15)
16) Frame( Frame frame )
17) {
18) height = frame.height;
19) width = frame.width;
20) channels = frame.channels;
21) data = (byte[][][])frame.data.clone( );
22) }
23)
24) public void setData( int maxval, byte[] rawData, int startIndex )
25) {
26) int i, h, w, c;
27) for( i = startIndex, h = 0; h < height; h++ )
28) for( w = 0; w < width; w++ )
29) for( c = 0; c < channels; c++, i++ )
30) if( rawData[i] > maxval )
31) data[h][w][c] = (byte)255;
32) else
33) data[h][w][c] = (byte)((rawData[i] & 0xFF) * 255 / maxval);
34) }
35)
36) public int getHeight( )
37) {
38) return height;
39) }
40)
41) public int getWidth( )
42) {
43) return width;
44) }
45)
46) public int getChannels( )
47) {
48) return channels;
49) }
50)
51) public byte[][][] getData( )
52) {
53) return data;
54) }
55)
|
BlinkenSimJava v.0.1.1 (200...
Christian Heimke authored 13 years ago
|
56) public void resize( int height, int width, int channels )
57) {
58) byte[][][] data;
59) int y, x, c;
60) int emptyY, emptyX, skipY, skipX, rangeY, rangeX, val;
61)
62) data = new byte[height][width][channels];
63) for( y = 0; y < height; y++ )
64) for( x = 0; x < width; x++ )
65) for( c = 0; c < channels; c++ )
66) data[y][x][c] = 0;
67)
68) if( height > this.height )
69) {
70) emptyY = (height - this.height) / 2;
71) skipY = 0;
72) rangeY = this.height;
73) }
74) else
75) {
76) emptyY = 0;
77) skipY = (this.height - height) / 2;
78) rangeY = height;
79) }
80) if( width > this.width )
81) {
82) emptyX = (width - this.width) / 2;
83) skipX = 0;
84) rangeX = this.width;
85) }
86) else
87) {
88) emptyX = 0;
89) skipX = (this.width - width) / 2;
90) rangeX = width;
91) }
92)
93) for( y = 0; y < rangeY; y++ )
94) {
95) for( x = 0; x < rangeX; x++ )
96) {
97) val = 0;
98) for( c = 0; c < this.channels; c++ )
99) val += this.data[skipY + y][skipX + x][c] & 0xFF;
100) val /= this.channels;
101) for( c = 0; c < channels; c++ )
102) data[emptyY + y][emptyX + x][c] = (byte)val;
103) }
104) }
105)
106) this.height = height;
107) this.width = width;
108) this.channels = channels;
109) this.data = data;
110) }
111)
|