Mercurial > MadButterfly
view 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 source
#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_ */