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_ */