summaryrefslogtreecommitdiff
path: root/src/stage.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/stage.h')
-rw-r--r--src/stage.h17
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);
© All Rights Reserved