UNPKG

epd7x5-v2

Version:

node module for the 7.5 inch waveshare epaper display

32 lines (31 loc) 1.29 kB
"use strict"; 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;