49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
var stringConverter = {
|
|
convertByte: function (oneByte, bytesPerPixel) {
|
|
var stringByte = '0x' + oneByte.toString(16).padStart(bytesPerPixel * 2, '0');
|
|
return stringByte;
|
|
},
|
|
convert: function (dataLength, bytesPerPixel, multiLine, colNumber, data) {
|
|
var resultString = '';
|
|
for (var i = 0; i < dataLength; i++) {
|
|
var stringByte = '';
|
|
// need to use bigint, so we can use 32bit integers (4byte per pixel)
|
|
let combinedByte = BigInt("0b00000000000000000000000000000000");
|
|
for (let j = 0; j < bytesPerPixel; j++) {
|
|
let pixelByte = BigInt(data[(i * bytesPerPixel) + j]);
|
|
if (j != 0) {
|
|
combinedByte = combinedByte << BigInt(8);
|
|
}
|
|
combinedByte = combinedByte | pixelByte;
|
|
}
|
|
stringByte = this.convertByte(combinedByte, bytesPerPixel) + ', ';
|
|
if (multiLine && ((i + 1) % colNumber == 0)) {
|
|
stringByte += '\n ';
|
|
}
|
|
resultString += stringByte;
|
|
}
|
|
resultString = resultString.substr(0, resultString.lastIndexOf(',')).trim();
|
|
// add the array definition
|
|
return resultString;
|
|
}
|
|
};
|
|
|
|
|
|
module.exports = {
|
|
|
|
toString : function(data, colNum) {
|
|
console.log('Converting data to string');
|
|
|
|
var dataLength = data.byteLength;
|
|
console.log('actualDataLength: ' + dataLength);
|
|
|
|
var resultString = '#define SETUP_HTML_SIZE ';
|
|
resultString += dataLength + '\n'
|
|
resultString += 'const char SETUP_HTML[] PROGMEM = {\n ';
|
|
resultString += stringConverter.convert(dataLength, 1, true, 16, data);
|
|
resultString += '\n};';
|
|
return resultString;
|
|
}
|
|
|
|
}
|