1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #ifndef APP_MODULES_PIXBUF_H_
- #define APP_MODULES_PIXBUF_H_
- typedef struct pixbuf {
- const size_t npix;
- const size_t nchan;
- /* Flexible Array Member; true size is npix * pixbuf_channels_for(type) */
- uint8_t values[];
- } pixbuf;
- enum pixbuf_fade {
- PIXBUF_FADE_IN,
- PIXBUF_FADE_OUT
- };
- enum pixbuf_shift {
- PIXBUF_SHIFT_LOGICAL,
- PIXBUF_SHIFT_CIRCULAR
- };
- pixbuf *pixbuf_from_lua_arg(lua_State *, int);
- const size_t pixbuf_size(pixbuf *);
- // Exported for backwards compat with ws2812 module
- int pixbuf_new_lua(lua_State *);
- /*
- * WS2812_EFFECTS does pixbuf manipulation directly in C, which isn't the
- * intended use case, but for backwards compat, we export just what it needs.
- * Move this struct to pixbuf.c and mark these exports static instead once
- * WS2812_EFFECTS is no more.
- */
- struct pixbuf_shift_params {
- enum pixbuf_shift type;
- // 0 <= offset <= buffer length
- size_t offset;
- // 0 <= window + offset <= buffer length
- size_t window;
- // 0 <= shift <= window_size
- size_t shift;
- bool shiftLeft;
- };
- void pixbuf_shift(pixbuf *, struct pixbuf_shift_params *);
- void pixbuf_prepare_shift(pixbuf *, struct pixbuf_shift_params *,
- int val, enum pixbuf_shift, int start, int end);
- const size_t pixbuf_channels(pixbuf *);
- /* end WS2812_EFFECTS exports */
- #endif
|