From 39f151e8656d63068db38fba5bb56505621476be Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Tue, 25 Nov 2025 02:31:24 +0100 Subject: [PATCH] optimization --- .../Crafter.Graphics-Window_wayland.cpp | 15 +++++++-------- project.json | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/implementations/Crafter.Graphics-Window_wayland.cpp b/implementations/Crafter.Graphics-Window_wayland.cpp index c7221dc..2336c97 100644 --- a/implementations/Crafter.Graphics-Window_wayland.cpp +++ b/implementations/Crafter.Graphics-Window_wayland.cpp @@ -160,24 +160,23 @@ void WindowWayland::StartSync() { void RenderElement(UiElementBufferBuffer* element, WindowWayland* window) { - std::vector scaled(element->transform.scaled.width*element->transform.scaled.height); - element->CopyNearestNeighbour(scaled.data(), element->transform.scaled.width, element->transform.scaled.height); - for (std::int_fast32_t x = element->transform.scaled.x; x - element->transform.scaled.x < element->transform.scaled.width; x++) { for (std::int_fast32_t y = element->transform.scaled.y; y - element->transform.scaled.y < element->transform.scaled.height; y++) { if (x >= 0 && x < window->width && y >= 0 && y < window->height) { Pixel_BU8_GU8_RU8_AU8& dst = window->framebuffer[y * window->width + x]; - const Pixel_BU8_GU8_RU8_AU8& src = scaled[(y - element->transform.scaled.y) * element->transform.scaled.width + (x - element->transform.scaled.x)]; + const Pixel_BU8_GU8_RU8_AU8& src = element->scaled[(y - element->transform.scaled.y) * element->transform.scaled.width + (x - element->transform.scaled.x)]; float srcA = src.a / 255.0f; float dstA = dst.a / 255.0f; float outA = srcA + dstA * (1.0f - srcA); if (outA > 0.0f) { - dst.r = static_cast((src.r * srcA + dst.r * dstA * (1.0f - srcA)) / outA); - dst.g = static_cast((src.g * srcA + dst.g * dstA * (1.0f - srcA)) / outA); - dst.b = static_cast((src.b * srcA + dst.b * dstA * (1.0f - srcA)) / outA); - dst.a = static_cast(outA * 255); + dst = { + static_cast((src.b * srcA + dst.b * dstA * (1.0f - srcA)) / outA), + static_cast((src.g * srcA + dst.g * dstA * (1.0f - srcA)) / outA), + static_cast((src.r * srcA + dst.r * dstA * (1.0f - srcA)) / outA), + static_cast(outA * 255) + }; } } } diff --git a/project.json b/project.json index b651d4a..04e4936 100644 --- a/project.json +++ b/project.json @@ -3,7 +3,7 @@ "configurations": [ { "name": "base", - "implementations": ["implementations/Crafter.Graphics-Font", "implementations/Crafter.Graphics-Shm", "implementations/Crafter.Graphics-UiElement", "implementations/Crafter.Graphics-UiElementBufferBuffer", "implementations/Crafter.Graphics-UiElementBufferBufferBase", "implementations/Crafter.Graphics-UiElementImageBuffer", "implementations/Crafter.Graphics-UiElementBufferMouseBuffer", "implementations/Crafter.Graphics-UiElementTextBuffer"], + "implementations": ["implementations/Crafter.Graphics-Font", "implementations/Crafter.Graphics-Shm", "implementations/Crafter.Graphics-UiElement", "implementations/Crafter.Graphics-UiElementBufferBuffer", "implementations/Crafter.Graphics-UiElementBufferBufferBase", "implementations/Crafter.Graphics-UiElementImageBuffer", "implementations/Crafter.Graphics-UiElementBufferMouseBuffer", "implementations/Crafter.Graphics-UiElementTextBuffer", "implementations/Crafter.Graphics-Window"], "interfaces": ["interfaces/Crafter.Graphics-Window", "interfaces/Crafter.Graphics", "interfaces/Crafter.Graphics-Types", "interfaces/Crafter.Graphics-Font", "interfaces/Crafter.Graphics-Shm", "interfaces/Crafter.Graphics-UiElement", "interfaces/Crafter.Graphics-Animation"], "type": "library" },