Mercurial > MadButterfly
view src/prop.c @ 269:c96f38ad4bb6
Fix mis-behavior of translate_path_data() on arc.
- Arc in a path in svg2code_ex is not showed.
- translate_path_data() in svg2code.py was modified for calling
binary version new method for path shape.
- rdman_shape_path_new_from_binary()
- Code to translate path data does not handle arc in a right way.
- Copy calc_center_and_x_aix() from shape_path.c to svg2code.py and
change name _calc_ellipse_of_arc()
- _calc_ellipse_of_arc() handle arc data for translate_path_data()
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Sun, 25 Jan 2009 00:20:34 +0800 |
parents | f08b3ba9c1d8 |
children | 586e50f82c1f |
line wrap: on
line source
#include "mb_prop.h" #define ASSERT(x) static mb_prop_entry_t *_mb_prop_find(mb_prop_store_t *prop_store, int id) { mb_prop_entry_t *entry; for(entry = STAILQ_HEAD(prop_store->entries); entry != NULL; entry = STAILQ_NEXT(mb_prop_entry_t, next, entry)) { if(entry->id == id) return entry; } return NULL; } void mb_prop_store_destroy(mb_prop_store_t *prop_store) { mb_prop_entry_t *entry, *last; last = STAILQ_HEAD(prop_store->entries); if(last == NULL) return; for(entry = STAILQ_NEXT(mb_prop_entry_t, next, last); entry != NULL; entry = STAILQ_NEXT(mb_prop_entry_t, next, entry)) { STAILQ_REMOVE(prop_store->entries, mb_prop_entry_t, next, last); elmpool_elm_free(prop_store->entry_pool, last); last = entry; } STAILQ_REMOVE(prop_store->entries, mb_prop_entry_t, next, last); elmpool_elm_free(prop_store->entry_pool, last); } void *mb_prop_set(mb_prop_store_t *prop_store, int id, void *value) { mb_prop_entry_t *entry; void *old; entry = _mb_prop_find(prop_store, id); if(entry) { old = entry->value; entry->value = value; return old; } entry = elmpool_elm_alloc(prop_store->entry_pool); ASSERT(entry != NULL); entry->id = id; entry->value = value; STAILQ_INS(prop_store->entries, mb_prop_entry_t, next, entry); return NULL; } void *mb_prop_get(mb_prop_store_t *prop_store, int id) { mb_prop_entry_t *entry; entry = _mb_prop_find(prop_store, id); if(entry) return entry->value; return NULL; } void mb_prop_del(mb_prop_store_t *prop_store, int id) { mb_prop_entry_t *entry; entry = _mb_prop_find(prop_store, id); if(entry) STAILQ_REMOVE(prop_store->entries, mb_prop_entry_t, next, entry); } int mb_prop_has(mb_prop_store_t *prop_store, int id) { mb_prop_entry_t *entry; entry = _mb_prop_find(prop_store, id); if(entry) return 1; return 0; }