diff options
| author | Levent Kaya <42411502+lvntky@users.noreply.github.com> | 2024-11-25 00:44:07 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-25 00:44:07 +0300 |
| commit | 8aed83d2e77c006eebf21776487f788ef12216de (patch) | |
| tree | 14d7dfd2b4c86dcb3b27912513439b4648145733 /examples/rectangle.c | |
| parent | ff43c66c491b443b7522a3b3d716905ee9732b60 (diff) | |
| parent | 8650f5e1d7bb72625ae5d6cda2974f6fafa6362d (diff) | |
Merge pull request #8 from dario-loi/bugfixes
Diffstat (limited to 'examples/rectangle.c')
| -rw-r--r-- | examples/rectangle.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/rectangle.c b/examples/rectangle.c new file mode 100644 index 0000000..1b3a6f7 --- /dev/null +++ b/examples/rectangle.c @@ -0,0 +1,61 @@ +#define FBGL_IMPLEMENTATION +#include "fbgl.h" + +int main(int argc, char *argv[]) +{ + fbgl_t buffer; + if (fbgl_init("/dev/fb0", &buffer) == -1) { + fprintf(stdout, "Error: could not open framebuffer device\n"); + return -1; + } + + fbgl_set_bg(&buffer, 0xFFFFFF); // Set the background to white + + fbgl_point_t start = { 100, 100 }; + fbgl_point_t end = { 200, 200 }; + fbgl_draw_rectangle_outline(start, end, 0xFF0000, + &buffer); // Draw red rectangle outline + + fbgl_point_t start2 = { 600, 400 }; + fbgl_point_t end2 = { 800, 800 }; + uint32_t colors[] = { 0xFFC00, 0x00FF00, 0x0000FF, + 0xFF00FF }; // Yellow, Green, Blue, Magenta + size_t color_index = 0; + + // Initial position of the marquee rectangle + int dx = 15; // Horizontal speed + int dy = 8; // Vertical speed + + while (1) { + // Clear the framebuffer (set background) + fbgl_set_bg(&buffer, 0xFFFFFF); + + // Draw the moving filled rectangle + fbgl_draw_rectangle_filled(start2, end2, colors[color_index], + &buffer); + + // Move the filled rectangle by updating its position + start2.x += dx; + end2.x += dx; + start2.y += dy; + end2.y += dy; + + // Reverse direction if the rectangle hits the screen boundary + if (start2.x <= 0 || end2.x >= buffer.width) { + dx = -dx; + color_index++; + } + if (start2.y <= 0 || end2.y >= buffer.height) { + dy = -dy; + color_index++; + } + if (color_index >= 4) { + color_index = 0; + } + + usleep(50000); // Delay to make the animation visible (adjust as needed) + } + + fbgl_destroy(&buffer); + return 0; +} |
