Skip to content

Commit cbb36c2

Browse files
committed
fixes with respect to rendring state
1 parent 732dc4a commit cbb36c2

File tree

1 file changed

+52
-23
lines changed

1 file changed

+52
-23
lines changed

client/scripts/image/pyimage.js

Lines changed: 52 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
var _ = window._;
33
var scale = 50;
44
var noneImage = {
5+
index: 0,
56
draw: function () {
67
},
78
getState: function () {
8-
return {}
9+
return {index:0}
910
},
1011
setState: function () {
1112
}
@@ -16,6 +17,7 @@
1617
imageCanvas: $('#imagecanvas'),
1718
tmpctx: $('#imagecanvas')[0].getContext('2d'),
1819
images: {},
20+
imageObjects: [noneImage],
1921
subject: noneImage,
2022
draw: function draw() {
2123
if (Game.can_draw()) {
@@ -51,11 +53,8 @@
5153
return game.subject.getState();
5254
},
5355
set_state: function setState(state) {
54-
if (!state.data) {
55-
game.subject = noneImage;
56-
} else {
57-
game.subject = ImageWrapper(state);
58-
}
56+
game.subject = game.imageObjects[state.index];
57+
game.subject.setState(state)
5958
}
6059
};
6160
})();
@@ -90,6 +89,10 @@
9089
setData: function (data, i) {
9190
pixel.data = imgData.data;
9291
pixel.index = i;
92+
pixel.r = data[index*4 + 0];
93+
pixel.g = data[index*4 + 1];
94+
pixel.b = data[index*4 + 2];
95+
pixel.a = data[index*4 + 3];
9396
},
9497
setRed: function setRed (r) {
9598
pixel.r = r;
@@ -129,6 +132,19 @@
129132
pixel.data[pixel.index*4 + 2] = b;
130133
}
131134
},
135+
getAverage: function getAverage () {
136+
return Math.floor((pixel.r + pixel.b + pixel.g) / 3)
137+
},
138+
getBit: function getBit (threshold) {
139+
threshold = threshold || 128
140+
return (threshold <= pixel.getAverage())?1:0;
141+
},
142+
setBit: function setBit (n) {
143+
imgData.data[i*4 + 0] = pixel.r = 255 * (n) // R
144+
imgData.data[i*4 + 1] = pixel.b = 255 * (n) // G
145+
imgData.data[i*4 + 2] = pixel.g = 255 * (n) // B
146+
imgData.data[i*4 + 3] = pixel.a = 255 // A
147+
},
132148
__str__: function toString() {
133149
return pixel.hex();
134150
},
@@ -168,44 +184,57 @@
168184
}
169185
}
170186

171-
var ImageWrapper = function (imgData) {
172-
this.imageData = imgData;
187+
var ImageWrapper = function (imageData) {
188+
var imgData = {};
189+
imgData.imageData = imageData;
190+
imgData.width = imageData.width;
191+
imgData.height = imageData.height;
173192
imgData.zoom = imgData.zoom || 1;
174-
imageData.getPixel = function getPixel(x, y) {
193+
imgData.index = game.imageObjects.length;
194+
game.imageObjects.push(imgData);
195+
imgData.getPixel = function getPixel(x, y) {
175196
return imgData.pixelData[x * imgData.width + y]
176197
}
177-
imageData.setPixelData = function setPixelData (data) {
178-
var pixelData = imgData.pixelData = []
179-
for (var i = 0; i < imgData.data.length;i+=4){
180-
pixel = Pixel(imgData.data, i);
181-
pixelData.push(pixel);
198+
imgData.setPixelData = function setPixelData (imageData) {
199+
var pixelData = imageData.pixelData;
200+
if (!pixelData) {
201+
pixelData = imgData.pixelData = []
202+
for (var i = 0; i < imageData.data.length;i+=4){
203+
pixel = Pixel(imageData.data, i/4);
204+
pixelData.push(pixel);
205+
}
206+
} else {
207+
for (var i = 0; i < imgData.pixelData.length;i+=1){
208+
imgData.pixelData[i].setData(imageData.data, i);
209+
}
182210
}
183211
}
184212
imgData.setZoom = function setZoom (zoom) {
185213
imgData.zoom = zoom;
186214
}
187215
imgData.getState = function getState() {
188-
game.tmpctx.putImageData(imgData, 0, 0);
189-
var data = game.tmpctx.getImageData(0, 0, imgData.width, imgData.height);
190-
data.zoom = imgData.zoom;
191-
return data;
216+
game.tmpctx.putImageData(imgData.imageData, 0, 0);
217+
var data = game.tmpctx.getImageData(0, 0, imgData.imageData.width, imgData.imageData.height);
218+
return {
219+
index: imageData.index,
220+
zoom: imageData.zoom,
221+
imageData: data
222+
}
192223
}
193224
imgData.setState = function setState(state) {
194-
imgData.data = state.data;
225+
imgData.imgData = state.data
195226
imgData.setPixelData(state.data);
196-
imgData.width = state.width;
197-
imgData.height = state.height;
198227
imgData.zoom = state.zoom;
199228
}
200229
imgData.draw = function draw () {
201-
game.tmpctx.putImageData(imgData, 0, 0);
230+
game.tmpctx.putImageData(imgData.imageData, 0, 0);
202231
game.ctx.drawImage(game.imageCanvas[0], 0, 0, imgData.width, imgData.height, 0, 0, imgData.width * imgData.zoom, imgData.height * imgData.zoom);
203232
}
204233
imageData.__str__ = function __str__() {
205234
game.render(imageData)
206235
}
207236

208-
imgData.setPixelData(imageData.data);
237+
imgData.setPixelData(imgData.imageData);
209238
return imgData;
210239
}
211240

0 commit comments

Comments
 (0)