diff options
| author | Syndamia <kamen@syndamia.com> | 2026-03-28 21:13:27 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2026-03-28 21:13:27 +0200 |
| commit | 6a63e2c0e1f37c502501e1b611e8dc289476c1f2 (patch) | |
| tree | 6721b5aa27ad7bbb64901eb7e6d9bc84d0a92d6e /graphics.c | |
| parent | d31239eeeac4ea595b1d1e7063ab5d762809fb02 (diff) | |
| download | ppm_graphics-6a63e2c0e1f37c502501e1b611e8dc289476c1f2.tar ppm_graphics-6a63e2c0e1f37c502501e1b611e8dc289476c1f2.tar.gz ppm_graphics-6a63e2c0e1f37c502501e1b611e8dc289476c1f2.zip | |
feat: Add Checker, Image, Circle; properly handle transparency
Diffstat (limited to 'graphics.c')
| -rw-r--r-- | graphics.c | 33 |
1 files changed, 31 insertions, 2 deletions
@@ -3,26 +3,54 @@ */ #include "FrameRender/FrameRender.h" +#include "FrameRender/P_Checker.h" +#include "FrameRender/P_Circle.h" +#include "FrameRender/P_Image.h" #include "FrameRender/P_Square.h" #include "FrameRender/P_TransformCenter.h" +#include "FrameRender/P_TransformRotate.h" #include "RGBImage.h" +#include "math.h" #include <stdlib.h> int main() { RGBImage frame = RGBImage_new(512, 512); + RGBImage bclc = ppm_read(fopen("bclc.ppm", "rb")); + PixelCallback* callbacks[] = { + Checker_setup((Checker){ + .squareSize = 64, .colorA = 0xFF000000, .colorB = 0xFFFF00FF, + }), TransformCenter_setup((TransformCenter){ - .centerX = frame.width / 2, .centerY = frame.width / 2, + .centerX = frame.width / 2, .centerY = frame.height / 2, }), Square_setup((Square){ - .width = 100, .height = 100, .color = 0xFFFF0000, + .width = 100, .height = 100, .color = 0xFFFFFF00, }), NULL, + TransformRotate_setup((TransformRotate){ + .angle = M_PI_4 / 2, + }), Square_setup((Square){ .width = 200, .height = 200, .color = 0xFF00FFFF, }), + NULL, + TransformCenter_setup((TransformCenter){ + .centerX = frame.width * 3/4, .centerY = frame.height / 2, + }), + Circle_setup((Circle){ + .radius = 50, .color = 0x80FFFFFF, + }), + NULL, + TransformCenter_setup((TransformCenter){ + .centerX = frame.width / 8, .centerY = frame.height * 3/5, + }), + Image_setup((Image){ + .img = bclc, + .scale = 0.2, + }), }; u32 sizeCallbacks = sizeof(callbacks) / sizeof(*callbacks); @@ -30,6 +58,7 @@ main() { ppm6_write(stdout, frame); RGBImage_delete(&frame); + RGBImage_delete(&bclc); for (u32 i = 0; i < sizeCallbacks; ++i) { if (callbacks[i] == NULL) continue; free(callbacks[i]->callback_self); |
