[fix] Draw effect target

This commit is contained in:
2026-06-05 18:03:13 +08:00
Unverified
parent 5a31effcf1
commit 7c66610c13
9 changed files with 85 additions and 103 deletions
+10 -20
View File
@@ -1,7 +1,6 @@
#include <efi.h>
#include <graphics/context.h>
#include <graphics/draw.h>
#include <graphics/rect.h>
#include <graphics/layer.h>
#include <fonts/pixel_font.h>
#include <serial.h>
@@ -164,9 +163,10 @@ extern "C" void kernel_main() {
layer_t* desktop = layer_create("desktop", LAYER_TYPE_DESKTOP, g_gfx.hr, g_gfx.vr);
if (desktop) {
layer_set_z(desktop, 0);
// Fill with dark blue
EFI_GRAPHICS_OUTPUT_BLT_PIXEL bg = {180, 80, 40, 0}; // BGRA: dark blue
gfx_fill_rect(desktop->buffer, g_gfx.hr, g_gfx.vr, 0, 0, g_gfx.hr, g_gfx.vr, bg);
EFI_GRAPHICS_OUTPUT_BLT_PIXEL bg = {180, 80, 40, 0};
draw_set_target(desktop->buffer, g_gfx.hr, g_gfx.vr);
draw_rect(0, 0, g_gfx.hr, g_gfx.vr, bg);
draw_set_default_target();
layer_set_pos(desktop, 0, 0);
}
@@ -175,15 +175,10 @@ extern "C" void kernel_main() {
if (win1) {
layer_set_pos(win1, (int)(g_gfx.hr / 2) - 150, (int)(g_gfx.vr / 2) - 100);
layer_set_z(win1, 1);
// Fill with gray
EFI_GRAPHICS_OUTPUT_BLT_PIXEL win_color = {200, 200, 200, 0};
gfx_fill_rect(win1->buffer, 300, 200, 0, 0, 300, 200, win_color);
// White border
EFI_GRAPHICS_OUTPUT_BLT_PIXEL border = {255, 255, 255, 0};
gfx_draw_rect(win1->buffer, 300, 200, 0, 0, 300, 200, border);
// Title bar (blue strip at top)
EFI_GRAPHICS_OUTPUT_BLT_PIXEL title_bar = {180, 100, 30, 0};
gfx_fill_rect(win1->buffer, 300, 200, 0, 0, 300, 30, title_bar);
draw_set_target(win1->buffer, 300, 200);
draw_rect(0, 0, 299, 199, win_color);
draw_set_default_target();
}
// Create window 2 (offset from center)
@@ -191,15 +186,10 @@ extern "C" void kernel_main() {
if (win2) {
layer_set_pos(win2, (int)(g_gfx.hr / 2) - 50, (int)(g_gfx.vr / 2) - 40);
layer_set_z(win2, 2);
// Fill with light green
EFI_GRAPHICS_OUTPUT_BLT_PIXEL win2_color = {180, 220, 140, 0};
gfx_fill_rect(win2->buffer, 250, 180, 0, 0, 250, 180, win2_color);
// Dark border
EFI_GRAPHICS_OUTPUT_BLT_PIXEL border2 = {50, 50, 50, 0};
gfx_draw_rect(win2->buffer, 250, 180, 0, 0, 250, 180, border2);
// Title bar
EFI_GRAPHICS_OUTPUT_BLT_PIXEL title2 = {160, 180, 100, 0};
gfx_fill_rect(win2->buffer, 250, 180, 0, 0, 250, 28, title2);
draw_set_target(win2->buffer, 250, 180);
draw_rect(0, 0, 249, 179, win2_color);
draw_set_default_target();
}
// Compositor task (replaces the old demo tasks)