epd7x5-v2
Version:
node module for the 7.5 inch waveshare epaper display
32 lines (31 loc) • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var epd7x5 = require('../build/Release/epd7x5');
exports.RES_WIDTH = 800;
exports.RES_HEIGHT = 480;
var RES_PIXEL_COUNT = exports.RES_WIDTH * exports.RES_HEIGHT;
var TARGET_COLOR_BUFFER_SIZE = RES_PIXEL_COUNT >> 3;
var SOURCE_COLOR_BUFFER_SIZE = RES_PIXEL_COUNT << 2;
function displayImageBuffer(buffer) {
if (buffer.length !== SOURCE_COLOR_BUFFER_SIZE) {
throw new Error('Invalid image buffer size. This module expects BGRA color buffer.');
}
// Black/white buffer
var bwBuffer = Buffer.alloc(TARGET_COLOR_BUFFER_SIZE, 0xFF); // White pixels by default
// Red buffer
var redBuffer = Buffer.alloc(TARGET_COLOR_BUFFER_SIZE, 0);
for (var i = 0; i < RES_PIXEL_COUNT; ++i) {
var red = buffer[(i << 2) + 2];
var blue = buffer[i << 2];
if (red === 0) {
bwBuffer[i >> 3] &= ~(0x80 >> (i % exports.RES_WIDTH % 8));
}
else if (blue === 0 && red > 0) {
redBuffer[i >> 3] |= 0x80 >> (i % exports.RES_WIDTH % 8);
}
}
epd7x5.displayFrame(bwBuffer, redBuffer);
}
exports.displayImageBuffer = displayImageBuffer;
exports.init = epd7x5.init;
exports.deepSleep = epd7x5.deepSleep;