diff options
author | Julian T <julian@jtle.dk> | 2020-03-23 18:09:32 +0100 |
---|---|---|
committer | Julian T <julian@jtle.dk> | 2020-03-23 18:09:32 +0100 |
commit | 7641384c1fc9827ac012caa6481ffd35b4369e47 (patch) | |
tree | 17ed94a78d77ceb0007433e67129b3ba7535422f /pgm.ino | |
parent | 83b552b622da561de047f798e5d50d59f724b1eb (diff) |
Runs on arduino, output not testetarduino
Diffstat (limited to 'pgm.ino')
-rw-r--r-- | pgm.ino | 62 |
1 files changed, 62 insertions, 0 deletions
@@ -0,0 +1,62 @@ +#include "pgm.h" + +#include <stdio.h> +#include <stdlib.h> + +#define COLOR_MAX 255 + +int pgm_write_header(FILE *fp, unsigned int w, unsigned int h) +{ + return fprintf(fp, "P3\n%d %d\n%d\n", w, h, COLOR_MAX); +} + +int pgm_write_pixel(FILE *fp, color_t *c) +{ + return fprintf(fp, "%.0lf %.0lf %.0lf\n", c->r * COLOR_MAX, c->g * COLOR_MAX, c->b * COLOR_MAX); +} + +color_t *color_set(color_t *c, COORD_T r, COORD_T g, COORD_T b) +{ + c->r = r; + c->g = g; + c->b = b; + + return c; +} + +color_t *color_add(color_t *dest, color_t *a, color_t *b) +{ + COORD_T tmp = a->r + b->r; + dest->r = tmp > 1 ? 1 : tmp; + + tmp = a->g + b->g; + dest->g = tmp > 1 ? 1 : tmp; + + tmp = a->b + b->b; + dest->b = tmp > 1 ? 1 : tmp; + + return dest; +} + +color_t *color_scale(color_t *dest, color_t *a, COORD_T b) +{ + COORD_T tmp = a->r * b; + dest->r = tmp > 1 ? 1 : tmp; + + tmp = a->g * b; + dest->g = tmp > 1 ? 1 : tmp; + + tmp = a->b * b; + dest->b = tmp > 1 ? 1 : tmp; + + return dest; +} + +color_t *color_scale_vector(color_t *dest, color_t *a, vector_t *v) +{ + dest->r = a->r * v->x; + dest->g = a->g * v->y; + dest->b = a->b * v->z; + + return dest; +} |