Mercurial > MadButterfly
diff include/mb_prop.h @ 224:29e1b2bffe4c
X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
- backend does not interpret mouse events (over/out/move), now.
- redraw manager, now, interpret mouse events to make it backend independent.
- The task (interpret mouse events) should be moved to somewhere in futhure.
- backend only sent MotionNotify as EVT_MOUSE_MOVE_RAW.
- EVT_MOUSE_MOVE_RAW is interpreted by backend independent code.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Mon, 15 Dec 2008 10:13:03 +0800 |
parents | |
children | 50d253d0fcba |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/mb_prop.h Mon Dec 15 10:13:03 2008 +0800 @@ -0,0 +1,53 @@ +#ifndef __MB_PROP_H_ +#define __MB_PROP_H_ + +#include "mb_tools.h" + +/*! \defgroup mb_prop_grp Property + * \brief A way the modules can set up their own properties on objects. + * + * Properties are key-value pairs that are associated with objects. + * MadButterfly associate a property store for each object (coord or shape) + * to keep property values. Every property is identified by a ID; an + * integer. Programmer can use a ID to set/get value to/from a property + * store. The ID should be unique in a property store. + * @{ + */ + +typedef struct _mb_prop_entry mb_prop_entry_t; +typedef struct _mb_prop_store mb_prop_store_t; + +struct _mb_prop_entry { + int id; + void *value; + mb_prop_entry_t *next; +}; + +/*! \brief Property IDs. */ +enum { + PROP_DUMMY, + PROP_MEVT_OB_CNT, + PROP_MEVT_OBSERVER, + PROP_LAST +}; + +struct _mb_prop_store { + elmpool_t *entry_pool; + STAILQ(mb_prop_entry_t) entries; +}; + +#define mb_prop_store_init(prop_store, pent_pool) \ + do { \ + (prop_store)->entry_pool = pent_pool; \ + STAILQ_INIT((prop_store)->entries); \ + } while(0) + +void mb_prop_store_destroy(mb_prop_store_t *prop_store); +void *mb_prop_set(mb_prop_store_t *prop_store, int id, void *value); +void *mb_prop_get(mb_prop_store_t *prop_store, int id); +void mb_prop_del(mb_prop_store_t *prop_store, int id); +int mb_prop_has(mb_prop_store_t *prop_store, int id); + +/* @} */ + +#endif /* __MB_PROP_H_ */