summaryrefslogtreecommitdiff
path: root/graphics.c
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2026-03-28 21:13:27 +0200
committerSyndamia <kamen@syndamia.com>2026-03-28 21:13:27 +0200
commit6a63e2c0e1f37c502501e1b611e8dc289476c1f2 (patch)
tree6721b5aa27ad7bbb64901eb7e6d9bc84d0a92d6e /graphics.c
parentd31239eeeac4ea595b1d1e7063ab5d762809fb02 (diff)
downloadppm_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.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/graphics.c b/graphics.c
index 6281f6f..d5f16e4 100644
--- a/graphics.c
+++ b/graphics.c
@@ -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);