aboutsummaryrefslogtreecommitdiff
path: root/examples/GraphicsLayer
diff options
context:
space:
mode:
authormrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2020-12-08 07:35:47 +0000
committermrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2020-12-08 07:35:47 +0000
commit09dabb2e351bb57516233792698557f3aab042f7 (patch)
tree1a1b981c81676fa33b07e1527cd8a4fadd9f02ab /examples/GraphicsLayer
parent82326230eb5d9bffabf81b88cd65c059b61a6921 (diff)
GraphicsLayer minor tweaks
Diffstat (limited to 'examples/GraphicsLayer')
-rw-r--r--examples/GraphicsLayer/GraphicsLayer.ino25
-rw-r--r--examples/GraphicsLayer/Layer.cpp22
2 files changed, 35 insertions, 12 deletions
diff --git a/examples/GraphicsLayer/GraphicsLayer.ino b/examples/GraphicsLayer/GraphicsLayer.ino
index fbc33ad..2c15d18 100644
--- a/examples/GraphicsLayer/GraphicsLayer.ino
+++ b/examples/GraphicsLayer/GraphicsLayer.ino
@@ -86,6 +86,7 @@ void setup() {
}
+int LayerCompositor_mode = 0;
void loop() {
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!
* Use our special sauce LayerCompositor functions
*/
- LayerCompositor::Siloette(dma_display, bgLayer, textLayer);
- //LayerCompositor::Stack(dma_display, bgLayer, textLayer);
+ switch (LayerCompositor_mode)
+ {
+ 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);
} // end loop
diff --git a/examples/GraphicsLayer/Layer.cpp b/examples/GraphicsLayer/Layer.cpp
index 5c419c1..4352398 100644
--- a/examples/GraphicsLayer/Layer.cpp
+++ b/examples/GraphicsLayer/Layer.cpp
@@ -295,8 +295,6 @@ namespace LayerCompositor
*/
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 x = 0; x < LAYER_WIDTH; x++)
@@ -327,15 +325,19 @@ namespace LayerCompositor
{
for (int x = 0; x < LAYER_WIDTH; x++)
{
- /*
- // set the blend ratio for the video cross fade
- // (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);
+
+ _pixel = _bgLayer.pixels->data[y][x];
+
+ // (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
disp.drawPixelRGB888(x,y, _pixel.r, _pixel.g, _pixel.b );