diff options
Diffstat (limited to 'src/stage.h')
-rw-r--r-- | src/stage.h | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/stage.h b/src/stage.h index 86d2311..a73a5d9 100644 --- a/src/stage.h +++ b/src/stage.h @@ -27,22 +27,25 @@ typedef void (stage_render_func_t)(const stage_t *stage, void *object, float alp typedef void (stage_free_func_t)(const stage_t *stage, void *object); typedef stage_t * (stage_lookup_func_t)(const stage_t *stage, void *object, void *key); +typedef struct stage_ops_t { + stage_prepare_func_t *prepare_func; /* pre-render object */ + stage_render_func_t *render_func; /* render object */ + stage_free_func_t *free_func; /* free object */ + stage_lookup_func_t *lookup_func; /* lookup object against key */ +} stage_ops_t; + typedef struct stage_conf_t { stage_t *parent; int layer; const char *name; - void *object; - stage_prepare_func_t *prepare_func; - stage_render_func_t *render_func; - stage_free_func_t *free_func; - stage_lookup_func_t *lookup_func; float alpha; unsigned active:1; unsigned locked:1; } stage_conf_t; -stage_t * stage_new(const stage_conf_t *conf); -void stage_replace(stage_t *stage, const char *name, void *object, stage_prepare_func_t *prepare_func, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_lookup_func_t *lookup_func); +stage_t * stage_new(const stage_conf_t *conf, const stage_ops_t *ops, void *object); +void stage_replace(stage_t *stage, const char *name, const stage_ops_t *ops, void *object); + stage_t * stage_free(stage_t *stage); int stage_render(stage_t *stage, void *render_ctxt); void stage_dirty(stage_t *stage); |