[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
+29 -3
View File
@@ -1,10 +1,36 @@
#include <graphics/draw.h>
void draw_pixel(unsigned int x, unsigned int y, EFI_GRAPHICS_OUTPUT_BLT_PIXEL color) {
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *p = g_gfx.base + (g_gfx.hr * y) + x;
// --- Global (framebuffer) ---
void global_draw_pixel(unsigned int x, unsigned int y, EFI_GRAPHICS_OUTPUT_BLT_PIXEL color) {
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *p = g_gfx.base + (g_gfx.hr * y) + x;
p->Blue = color.Blue;
p->Green = color.Green;
p->Red = color.Red;
p->Reserved = color.Reserved;
}
}
void global_draw_rect(unsigned int bx, unsigned int by, unsigned int ex, unsigned int ey,
EFI_GRAPHICS_OUTPUT_BLT_PIXEL color) {
for (unsigned int x = bx; x <= ex; x++)
for (unsigned int y = by; y <= ey; y++)
global_draw_pixel(x, y, color);
}
// --- Current target buffer ---
void draw_pixel(unsigned int x, unsigned int y, EFI_GRAPHICS_OUTPUT_BLT_PIXEL color) {
if (x >= g_draw_target.w || y >= g_draw_target.h) return;
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *p = g_draw_target.buf + (g_draw_target.w * y) + x;
p->Blue = color.Blue;
p->Green = color.Green;
p->Red = color.Red;
p->Reserved = color.Reserved;
}
void draw_rect(unsigned int bx, unsigned int by, unsigned int ex, unsigned int ey,
EFI_GRAPHICS_OUTPUT_BLT_PIXEL color) {
for (unsigned int x = bx; x <= ex; x++)
for (unsigned int y = by; y <= ey; y++)
draw_pixel(x, y, color);
}