From: Enlightenment C. <no...@cv...> - 2007-06-02 15:31:35
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/include Modified Files: evas_common.h Log Message: 1. gustavo';s fuzzy rect implementation for updates. fixed so del's work, tuned for best performance on my core2 duo desktop - for now. will check more. also make the yuv colorspace code be a bit more robust and fix leak in gl engine with shaders. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/include/evas_common.h,v retrieving revision 1.80 retrieving revision 1.81 diff -u -3 -r1.80 -r1.81 --- evas_common.h 6 May 2007 11:29:37 -0000 1.80 +++ evas_common.h 2 Jun 2007 15:30:58 -0000 1.81 @@ -531,6 +531,58 @@ RGBA_Gfx_Pt_Func (*composite_pixel_mask_pt_get)(int src_flags, RGBA_Image *dst); }; +#define EVAS_RECT_SPLIT 1 +#ifdef EVAS_RECT_SPLIT +typedef struct list_node list_node_t; +typedef struct list list_t; +typedef struct rect rect_t; +typedef struct rect_node rect_node_t; + +struct list_node +{ + struct list_node *next; +}; + +struct list +{ + struct list_node *head; + struct list_node *tail; +}; + +struct rect +{ + short left; + short top; + short right; + short bottom; + short width; + short height; + int area; +}; + +struct rect_node +{ + struct list_node _lst; + struct rect rect; +}; + + +void rect_init(rect_t *r, int x, int y, int w, int h); +void rect_list_append_node(list_t *rects, list_node_t *node); +void rect_list_append(list_t *rects, const rect_t r); +void rect_list_append_xywh(list_t *rects, int x, int y, int w, int h); +void rect_list_concat(list_t *rects, list_t *other); +list_node_t *rect_list_unlink_next(list_t *rects, list_node_t *parent_node); +void rect_list_del_next(list_t *rects, list_node_t *parent_node); +void rect_list_clear(list_t *rects); +void rect_list_add_split_strict(list_t *rects, list_node_t *node); +list_node_t *rect_list_add_split_fuzzy(list_t *rects, const rect_t r, int accepted_error); +void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error);void rect_list_add_split_fuzzy_and_merge(list_t *rects, const rect_t r, int split_accepted_error, int merge_accepted_error); + +void rect_print(const rect_t r); +void rect_list_print(const list_t rects); +#endif /* EVAS_RECT_SPLIT */ + struct _Tilebuf { int outbuf_w; @@ -542,6 +594,8 @@ #ifdef RECTUPDATE Regionbuf *rb; +#elif defined(EVAS_RECT_SPLIT) + list_t rects; #else struct { int w, h; |