optimization
This commit is contained in:
parent
3534f2e782
commit
39f151e865
2 changed files with 8 additions and 9 deletions
|
|
@ -160,24 +160,23 @@ void WindowWayland::StartSync() {
|
||||||
|
|
||||||
|
|
||||||
void RenderElement(UiElementBufferBuffer* element, WindowWayland* window) {
|
void RenderElement(UiElementBufferBuffer* element, WindowWayland* window) {
|
||||||
std::vector<Pixel_BU8_GU8_RU8_AU8> 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 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++) {
|
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) {
|
if (x >= 0 && x < window->width && y >= 0 && y < window->height) {
|
||||||
Pixel_BU8_GU8_RU8_AU8& dst = window->framebuffer[y * window->width + x];
|
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 srcA = src.a / 255.0f;
|
||||||
float dstA = dst.a / 255.0f;
|
float dstA = dst.a / 255.0f;
|
||||||
|
|
||||||
float outA = srcA + dstA * (1.0f - srcA);
|
float outA = srcA + dstA * (1.0f - srcA);
|
||||||
if (outA > 0.0f) {
|
if (outA > 0.0f) {
|
||||||
dst.r = static_cast<uint8_t>((src.r * srcA + dst.r * dstA * (1.0f - srcA)) / outA);
|
dst = {
|
||||||
dst.g = static_cast<uint8_t>((src.g * srcA + dst.g * dstA * (1.0f - srcA)) / outA);
|
static_cast<uint8_t>((src.b * srcA + dst.b * dstA * (1.0f - srcA)) / outA),
|
||||||
dst.b = static_cast<uint8_t>((src.b * srcA + dst.b * dstA * (1.0f - srcA)) / outA);
|
static_cast<uint8_t>((src.g * srcA + dst.g * dstA * (1.0f - srcA)) / outA),
|
||||||
dst.a = static_cast<uint8_t>(outA * 255);
|
static_cast<uint8_t>((src.r * srcA + dst.r * dstA * (1.0f - srcA)) / outA),
|
||||||
|
static_cast<uint8_t>(outA * 255)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"name": "base",
|
"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"],
|
"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"
|
"type": "library"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue