#ifndef _HELPERS_H #define _HELPERS_H #include #include "fb.h" #include "particle.h" #include "particles.h" /* helper for scaling rgb colors and packing them into an pixel */ static inline uint32_t makergb(uint32_t r, uint32_t g, uint32_t b, float intensity) { r = (((float)intensity) * r); g = (((float)intensity) * g); b = (((float)intensity) * b); return (((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff)); } /* return if the particle should be drawn, and set *longevity to 0 if out of bounds */ static inline int should_draw_expire_if_oob(particles_t *particles, particle_t *p, int x, int y, fb_fragment_t *f, int *longevity) { if (!fb_fragment_contains(f, x, y)) { if (longevity && (x < 0 || x > f->frame_width || y < 0 || y > f->frame_height)) *longevity = 0; /* offscreen */ return 0; } return 1; } #endif