From ffc3684b1bd0887b8d9ab803430c7082fb488a46 Mon Sep 17 00:00:00 2001 From: Guilherme Belchior Date: Mon, 3 Jun 2024 23:00:04 +0100 Subject: [PATCH] Compose groups separately from all other layers Maintain hierarchical structure of sprite groups instead of flattening. Allows opacity and blend mode to be applied correctly to groups. Sets the foundation for future features like mask layers. Note: Requires full image rendering and impacts performance in some scenarios. Avoids complex code changes for minor performance gains. Co-authored-by: Guilherme Marcondes --- data/pref.xml | 1 + data/strings/en.ini | 1 + data/widgets/options.xml | 5 + src/app/commands/cmd_layer_properties.cpp | 24 +-- src/app/render/renderer.h | 6 + src/app/render/shader_renderer.cpp | 5 + src/app/render/shader_renderer.h | 1 + src/app/render/simple_renderer.cpp | 5 + src/app/render/simple_renderer.h | 1 + src/app/script/image_class.cpp | 1 + src/app/script/layer_class.cpp | 9 +- src/app/ui/editor/editor.cpp | 1 + src/app/ui/editor/editor_render.cpp | 7 + src/app/ui/editor/editor_render.h | 1 + src/doc/layer.cpp | 4 +- src/doc/layer.h | 19 +-- src/doc/render_plan.cpp | 19 +-- src/doc/render_plan.h | 3 + src/doc/render_plan_tests.cpp | 76 +++++++-- src/render/render.cpp | 55 +++++-- src/render/render.h | 2 + tests/scripts/compose_groups.lua | 186 ++++++++++++++++++++++ tests/scripts/test_utils.lua | 18 +++ 23 files changed, 389 insertions(+), 61 deletions(-) create mode 100644 tests/scripts/compose_groups.lua diff --git a/data/pref.xml b/data/pref.xml index b4e7c81e1..91d84c74f 100644 --- a/data/pref.xml +++ b/data/pref.xml @@ -236,6 +236,7 @@