GraphicsLayer minor tweaks

This commit is contained in:
mrfaptastic 2020-12-08 07:35:47 +00:00
parent 82326230eb
commit 09dabb2e35
2 changed files with 35 additions and 12 deletions

View file

@ -86,6 +86,7 @@ void setup() {
} }
int LayerCompositor_mode = 0;
void loop() { void loop() {
for (int x = 0; x < dma_display.width(); x++) { for (int x = 0; x < dma_display.width(); x++) {
@ -119,8 +120,28 @@ void loop() {
* Step 3: Merge foreground and background layers and send to the matrix panel! * Step 3: Merge foreground and background layers and send to the matrix panel!
* Use our special sauce LayerCompositor functions * Use our special sauce LayerCompositor functions
*/ */
LayerCompositor::Siloette(dma_display, bgLayer, textLayer); switch (LayerCompositor_mode)
//LayerCompositor::Stack(dma_display, bgLayer, textLayer); {
case 0:
LayerCompositor::Siloette(dma_display, bgLayer, textLayer);
break;
case 1:
LayerCompositor::Stack(dma_display, bgLayer, textLayer);
break;
case 2:
LayerCompositor::Blend(dma_display, bgLayer, textLayer);
break;
}
EVERY_N_SECONDS(5) { // FastLED Macro
LayerCompositor_mode++;
dma_display.clearScreen();
if (LayerCompositor_mode > 2) LayerCompositor_mode = 0;
}
//
// LayerCompositor::Blend(dma_display, bgLayer, textLayer, 127); // LayerCompositor::Blend(dma_display, bgLayer, textLayer, 127);
} // end loop } // end loop

View file

@ -295,8 +295,6 @@ namespace LayerCompositor
*/ */
void Siloette(MatrixPanel_I2S_DMA &disp, const Layer &_bgLayer, const Layer &_fgLayer) void Siloette(MatrixPanel_I2S_DMA &disp, const Layer &_bgLayer, const Layer &_fgLayer)
{ {
//const Layer *bg = &_bgLayer;
//const Layer *fg = &_fgLayer;
for (int y = 0; y < LAYER_HEIGHT; y++) { for (int y = 0; y < LAYER_HEIGHT; y++) {
for (int x = 0; x < LAYER_WIDTH; x++) for (int x = 0; x < LAYER_WIDTH; x++)
@ -327,15 +325,19 @@ namespace LayerCompositor
{ {
for (int x = 0; x < LAYER_WIDTH; x++) for (int x = 0; x < LAYER_WIDTH; x++)
{ {
/*
// set the blend ratio for the video cross fade _pixel = _bgLayer.pixels->data[y][x];
// (set ratio to 127 for a constant 50% / 50% blend)
uint8_t ratio = beatsin8(5); // (set ratio to 127 for a constant 50% / 50% blend)
*/ //_pixel = blend(_bgLayer.pixels->data[y][x], _fgLayer.pixels->data[y][x], ratio);
// (set ratio to 127 for a constant 50% / 50% blend)
_pixel = blend(_bgLayer.pixels->data[y][x], _fgLayer.pixels->data[y][x], ratio);
// Blend with background if foreground pixel isn't clear/transparent
if (_fgLayer.pixels->data[y][x] != _fgLayer.transparency_colour)
{
_pixel = blend(_bgLayer.pixels->data[y][x], _fgLayer.pixels->data[y][x], ratio);
} // if the foreground is transparent, then print whatever is the bg
// https://gist.github.com/StefanPetrick/0c0d54d0f35ea9cca983 // https://gist.github.com/StefanPetrick/0c0d54d0f35ea9cca983
disp.drawPixelRGB888(x,y, _pixel.r, _pixel.g, _pixel.b ); disp.drawPixelRGB888(x,y, _pixel.r, _pixel.g, _pixel.b );