Skip to content

Commit a026f71

Browse files
Westworldfreezy
authored andcommitted
add RGB24 support for browser #413
1 parent a011438 commit a026f71

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

LibDmd/Output/Network/www/main.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var url = 'ws://' + window.location.host + '/dmd';
1+
var url = 'ws://' + window.location.host + '/dmd';
22
var typeSet = {
33
'jBinary.littleEndian': true,
44
gray2Planes: {
@@ -214,7 +214,9 @@ var controller = {
214214
});
215215
break;
216216
case 'rgb24':
217-
that.renderRgb24(frame);
217+
that.renderFrame(frame, function () {
218+
return that.rgb24toInvertedRgb24(frame.planes);
219+
});
218220
break;
219221
case 'dimensions':
220222
that.setDimensions(frame);
@@ -245,10 +247,6 @@ var controller = {
245247
};
246248
},
247249

248-
renderRgb24(frame) {
249-
console.log('Colored rgb24 Frame: %s', frame.timestamp);
250-
},
251-
252250
renderFrame: function(data, render) {
253251

254252
if (!this._clientStart) {
@@ -403,6 +401,23 @@ var controller = {
403401
return rgbFrame;
404402
},
405403

404+
rgb24toInvertedRgb24: function (buffer) {
405+
// the received frame is correctly 00..height, but graytoRgb24 uses heigth to 0, we need to revert
406+
var rgbFrame = new Uint8Array(this._width * this._height * 3);
407+
var pos = 0;
408+
var pos_orig = 0;
409+
for (var y = this._height - 1; y >= 0; y--) {
410+
for (var x = 0; x < this._width; x++) {
411+
pos_orig = (y * this._width * 3) + (x*3);
412+
rgbFrame[pos] = buffer[pos_orig];
413+
rgbFrame[pos + 1] = buffer[pos_orig+1];
414+
rgbFrame[pos + 2] = buffer[pos_orig+1];
415+
pos += 3;
416+
}
417+
}
418+
return rgbFrame;
419+
},
420+
406421
joinPlanes: function(bitlength, planes) {
407422
var frame = new ArrayBuffer(this._width * this._height);
408423
var planeSize = planes.byteLength / bitlength;
@@ -422,4 +437,4 @@ var controller = {
422437
}
423438
}
424439

425-
window.addEventListener("load", controller.init.bind(controller), false);
440+
window.addEventListener("load", controller.init.bind(controller), false);

0 commit comments

Comments
 (0)