/** * PPM library for creating and drawing images using the PPM image format. */ #ifndef PPM_H #define PPM_H #include typedef struct { uint8_t r; uint8_t g; uint8_t b; } ppm_rgb; #define PPM_RED (ppm_rgb){255, 0, 0} #define PPM_GREEN (ppm_rgb){0, 255, 0} #define PPM_BLUE (ppm_rgb){0, 0, 255} #define PPM_WHITE (ppm_rgb){255, 255, 255} #define PPM_BLACK (ppm_rgb){0, 0, 0} typedef struct { uint64_t width; uint64_t height; ppm_rgb *data; } ppm_image; ppm_image *ppm_create(uint64_t height, uint64_t width); ppm_image *ppm_create_with_background_color(uint64_t height, uint64_t width, ppm_rgb background_color); int ppm_destroy(ppm_image *image); int ppm_to_ppm3_file(ppm_image *image, const char *file_path); int ppm_to_ppm6_file(ppm_image *image, const char *file_path); int ppm_draw_point(ppm_image *image, uint64_t x, uint64_t y, ppm_rgb color); int ppm_draw_circle(ppm_image *image, int x, int y, uint64_t radius, ppm_rgb color); int ppm_draw_rectangle(ppm_image *image, int x, int y, uint64_t height, uint64_t width, ppm_rgb color); int ppm_draw_line(ppm_image *image, int x1, int y1, int x2, int y2, ppm_rgb color); int ppm_clear(ppm_image *image); int ppm_clear_with_background_color(ppm_image *image, ppm_rgb background_color); #endif