add helper function to compute pixel indices

This commit is contained in:
Bruno BELANYI 2020-11-10 17:39:00 +01:00
parent ba11946be5
commit 86f8f4fec9
3 changed files with 6 additions and 2 deletions

View file

@ -16,4 +16,8 @@ struct image {
struct image *create_image(size_t w, size_t h); struct image *create_image(size_t w, size_t h);
void destroy_image(struct image *image); void destroy_image(struct image *image);
static inline size_t to_index(size_t h, size_t w, const struct image *image) {
return h * image->w + w;
}
#endif /* !IMAGE_H */ #endif /* !IMAGE_H */

View file

@ -9,7 +9,7 @@
static void fill_image(struct image *image) { static void fill_image(struct image *image) {
for (size_t i = 0; i < image->h; ++i) { for (size_t i = 0; i < image->h; ++i) {
for (size_t j = 0; j < image->w; ++j) { for (size_t j = 0; j < image->w; ++j) {
struct pixel *p = &image->buf[i * image->w + j]; struct pixel *p = &image->buf[to_index(i, j, image)];
p->r = 255 * i / image->h; p->r = 255 * i / image->h;
p->g = 255 * j / image->w; p->g = 255 * j / image->w;
p->g = 255 * (i + j) / (image->h + image->w); p->g = 255 * (i + j) / (image->h + image->w);

View file

@ -14,7 +14,7 @@ void print_ppm(const struct image *image, FILE *f) {
for (size_t j = 0; j < image->w; ++j) { for (size_t j = 0; j < image->w; ++j) {
if (j != 0) if (j != 0)
fputc(' ', f); fputc(' ', f);
const struct pixel *p = &image->buf[i * image->w + j]; const struct pixel *p = &image->buf[to_index(i, j, image)];
fprintf(f, "%hhu %hhu %hhu", p->r, p->g, p->b); fprintf(f, "%hhu %hhu %hhu", p->r, p->g, p->b);
} }
fputc('\n', f); fputc('\n', f);