#ifndef COMET_EFFECT_H #define COMET_EFFECT_H #include #include "util.h" typedef struct effect effect_t; typedef struct layout layout_t; typedef void (*effect_render_t)(effect_t *effect, layout_t *layout, cairo_t *cr); // NOTE: The effect state must be freed by this function // typedef void (*effect_finalize_t)(effect_t *effect); typedef void (*effect_init_t)(effect_t *effect); struct effect { char *label; struct timespec start; struct timespec duration; effect_render_t pre; effect_render_t post; void *state; effect_finalize_t finalize; }; void effect_copy(effect_t *copy, const effect_t *effect); void effect_free(effect_t *effect); #endif