mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-25 17:06:52 +01:00
Support for rotating generated images based on tagtype profile
This commit is contained in:
@@ -88,10 +88,16 @@ uint32_t colorDistance(Color &c1, Color &c2, Error &e1) {
|
||||
void spr2color(TFT_eSprite &spr, imgParam &imageParams, uint8_t *buffer, size_t buffer_size, bool is_red) {
|
||||
uint8_t rotate = imageParams.rotate;
|
||||
long bufw = spr.width(), bufh = spr.height();
|
||||
if (imageParams.rotatebuffer) {
|
||||
|
||||
if (imageParams.rotatebuffer % 2) {
|
||||
//turn the image 90 or 270
|
||||
rotate = (rotate + 3) % 4;
|
||||
rotate = (rotate + (imageParams.rotatebuffer - 1)) % 4;
|
||||
bufw = spr.height();
|
||||
bufh = spr.width();
|
||||
} else {
|
||||
// rotate 180
|
||||
rotate = (rotate + (imageParams.rotatebuffer)) % 4;
|
||||
}
|
||||
|
||||
memset(buffer, 0, buffer_size);
|
||||
@@ -234,8 +240,8 @@ size_t prepareHeader(uint8_t headerbuf[], uint16_t bufw, uint16_t bufh, imgParam
|
||||
uint8_t headersize = 6;
|
||||
|
||||
headerbuf[0] = headersize;
|
||||
memcpy(headerbuf + (imageParams.rotatebuffer == 1 ? 3 : 1), &bufw, sizeof(uint16_t));
|
||||
memcpy(headerbuf + (imageParams.rotatebuffer == 1 ? 1 : 3), &bufh, sizeof(uint16_t));
|
||||
memcpy(headerbuf + (imageParams.rotatebuffer % 2 == 1 ? 3 : 1), &bufw, sizeof(uint16_t));
|
||||
memcpy(headerbuf + (imageParams.rotatebuffer % 2 == 1 ? 1 : 3), &bufh, sizeof(uint16_t));
|
||||
|
||||
if (imageParams.hasRed && imageParams.bpp > 1) {
|
||||
totalbytes = buffer_size * 2 + headersize;
|
||||
@@ -258,7 +264,7 @@ size_t compressAndWrite(Miniz::tdefl_compressor *comp, const void *inbuf, size_t
|
||||
|
||||
uint32_t t = millis();
|
||||
Miniz::tdefl_compressOEPL(comp, inbuf, &inbytes_compressed, zlibbuf, &outbytes_compressed, flush);
|
||||
Serial.printf("zlib: compressed %d into %d bytes in %d ms\n", inbytes_compressed, outbytes_compressed, millis()-t);
|
||||
Serial.printf("zlib: compressed %d into %d bytes in %d ms\n", inbytes_compressed, outbytes_compressed, millis() - t);
|
||||
|
||||
f_out.write((const uint8_t *)zlibbuf, outbytes_compressed);
|
||||
return outbytes_compressed;
|
||||
@@ -266,7 +272,7 @@ size_t compressAndWrite(Miniz::tdefl_compressor *comp, const void *inbuf, size_t
|
||||
|
||||
void rewriteHeader(File &f_out) {
|
||||
// https://www.rfc-editor.org/rfc/rfc1950
|
||||
const uint8_t cmf = 0x48; // 4096
|
||||
const uint8_t cmf = 0x48; // 4096
|
||||
// const uint8_t cmf = 0x58; // 8192
|
||||
uint8_t flg, flevel = 3;
|
||||
uint16_t header = cmf << 8 | (flevel << 6);
|
||||
@@ -277,7 +283,6 @@ void rewriteHeader(File &f_out) {
|
||||
f_out.write(flg);
|
||||
}
|
||||
|
||||
|
||||
void spr2buffer(TFT_eSprite &spr, String &fileout, imgParam &imageParams) {
|
||||
long t = millis();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user