Implement basic PPM image writer

This commit is contained in:
Abdelrahman Said 2024-03-22 00:25:48 +00:00
parent 42ceef5c4f
commit 0aee9aee5b
2 changed files with 31 additions and 0 deletions

22
ppm.c Normal file
View File

@ -0,0 +1,22 @@
#include "ppm.h"
#include "aliases.h"
#include <stdio.h>
#include <string.h>
void write_p6_ppm(const char *filepath, u64 width, u64 height, Pixel *data) {
FILE *fp = fopen(filepath, "wb");
if (!fp) {
return;
}
char header[1024] = {0};
sprintf(header, "P6\n%lu %lu\n255\n", width, height);
u64 length = strlen(header);
fwrite(&header, length, 1, fp);
u64 pixel_count = width * height;
fwrite(data, sizeof(Pixel), pixel_count, fp);
fclose(fp);
}

9
ppm.h Normal file
View File

@ -0,0 +1,9 @@
#include "aliases.h"
typedef struct {
u8 r;
u8 g;
u8 b;
} Pixel;
void write_p6_ppm(const char *filepath, u64 width, u64 height, Pixel *data);