[fix] Draw effect target
This commit is contained in:
+29
-3
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user