I hope to see new wl compositor code which is using eina tiler. :) 2014. 5. 29. 오전 7:13에 "Chris Michael" <[email protected]>님이 작성:
> Yay !! :) > > I'll make some changes locally here (wrt the new wayland compositor) and > using eina_tiler. Assuming all goes well, I'll put those in my dev > branch when ready. > > Cheers, > devilhorns > > On 28/05/14 03:50, MinJeong Kim wrote: > > raster pushed a commit to branch master. > > > > > http://git.enlightenment.org/core/efl.git/commit/?id=61cecf1f3f68f5850c58c3abdb4a37a1c158cc10 > > > > commit 61cecf1f3f68f5850c58c3abdb4a37a1c158cc10 > > Author: MinJeong Kim <[email protected]> > > Date: Wed May 28 16:34:05 2014 +0900 > > > > eina-tiler:add union, subtract, intersection, equal apis for tilers > > > > Summary: > > Support union, subtract, intersection, equal(comparison) between > tilers. > > @feature > > > > Test Plan: Test with added test > case(src/tests/eina/eina_test_tiler.c) and the > example(src/examples/eina/eina_tiler_02.c) > > > > Reviewers: gwanglim, devilhorns, raster, zmike, cedric > > > > CC: cedric > > > > Differential Revision: https://phab.enlightenment.org/D880 > > --- > > src/examples/eina/eina_tiler_02.c | 354 > ++++++++++++++++++++++++++++++++++++++ > > src/lib/eina/eina_tiler.c | 206 ++++++++++++++++++++++ > > src/lib/eina/eina_tiler.h | 49 ++++++ > > src/tests/eina/eina_test_tiler.c | 107 ++++++++++++ > > 4 files changed, 716 insertions(+) > > > > diff --git a/src/examples/eina/eina_tiler_02.c > b/src/examples/eina/eina_tiler_02.c > > new file mode 100644 > > index 0000000..2e80aaa > > --- /dev/null > > +++ b/src/examples/eina/eina_tiler_02.c > > @@ -0,0 +1,354 @@ > > +//Compile with: > > +//gcc eina_tiler_02.c -o eina_tiler_02 `pkg-config --cflags --libs > ecore-evas ecore evas eina` > > + > > +#include <Ecore_Evas.h> > > +#include <Ecore.h> > > +#include <Evas.h> > > +#include <Eina.h> > > + > > +#define WIN_W (810) > > +#define WIN_H (280) > > + > > +#define TILER1_X (30) > > +#define TILER1_Y (30) > > +#define TILER2_X (530) > > +#define TILER2_Y (30) > > +#define TILER_W (250) > > +#define TILER_H (250) > > +#define RESULT_X (280) > > +#define RESULT_Y (30) > > + > > +static Eina_Tiler *tiler1, *tiler2; > > +static Eina_List *t1_objs, *t2_objs, *tiler_objs; > > +static Evas *evas; > > +static Evas_Object *bg; > > + > > +static unsigned int cur_method; > > +typedef enum { > > + METHOD_UNION = 0, > > + METHOD_SUBTRACT, > > + METHOD_INTERSECTION, > > +}Current_Method; > > + > > +static unsigned int rect_idx =0, rect_count = 4; > > +static const Eina_Rectangle > > + rects[4][2][2] = { > > + {{{40, 0, 80, 250}}, > > + {{0, 150, 250, 70}, {0, 20, 250, 70}}}, > > + > > + {{{20, 20, 65, 150}, {135, 80, 65, 150}}, > > + {{20, 80, 65, 150}, {135, 20, 65, 150}}}, > > + > > + {{{20, 20, 210, 210}}, > > + {{80, 80, 90, 90}}}, > > + > > + {{{0, 0, 150, 90}, {180, 180, 70, 70}}, > > + {{70, 70, 120, 120}}} > > +}; > > + > > +static const char* > > + Methods[3] = { > > + "UNION 1+2", > > + "SUBTRACT 1-2", > > + "INTERSECTION 1&2" > > +}; > > + > > +static unsigned int tile_idx =0, tile_count = 5; > > +static const unsigned int > > + tilesize[5] = { > > + 32, > > + 16, > > + 8, > > + 4, > > + 1 > > +}; > > + > > +static const char commands[] = \ > > + "commands are:\n" > > + "\tn - next arrangement \n" > > + "\tu - get union\n" > > + "\ts - get subtract\n" > > + "\ti - get intersection\n" > > + "\tt - chage tile size ([32], 16, 8, 4) \n" > > + "\tEsc - Exit\n"; > > + > > + > > +static Evas_Object * > > +add_text(const char *text, int x, int y, int w) > > +{ > > + Evas_Object *o = evas_object_text_add(evas); > > + evas_object_color_set(o, 0, 0, 0, 255); > > + evas_object_move(o, x, y); > > + evas_object_text_font_set(o, "Sans", 20); > > + evas_object_text_text_set(o, text); > > + evas_object_show(o); > > + > > + return o; > > +} > > + > > +void tiler_calc() > > +{ > > + Eina_Tiler *tiler; > > + Eina_Iterator *itr; > > + Evas_Object *o; > > + Eina_Rectangle *rect; > > + int i = 0; > > + > > + /* clear evas rectangles */ > > + if (tiler_objs) > > + { > > + EINA_LIST_FREE(tiler_objs, o) > > + { > > + evas_object_hide(o); > > + evas_object_del(o); > > + } > > + } > > + > > + tiler = eina_tiler_new(TILER_W, TILER_H); > > + eina_tiler_tile_size_set(tiler, tilesize[tile_idx], > tilesize[tile_idx]); > > + > > + /* calculate with tiler1 and tiler2 */ > > + switch(cur_method) > > + { > > + case METHOD_UNION: > > + eina_tiler_union(tiler, tiler1); > > + eina_tiler_union(tiler, tiler2); > > + break; > > + case METHOD_SUBTRACT: > > + eina_tiler_union(tiler, tiler1); > > + eina_tiler_subtract(tiler, tiler2); > > + break; > > + case METHOD_INTERSECTION: > > + tiler = eina_tiler_intersection(tiler1, tiler2); > > + break; > > + } > > + > > + if (tiler) > > + { > > + /* draw rects of result tiler */ > > + itr = eina_tiler_iterator_new(tiler); > > + EINA_ITERATOR_FOREACH(itr, rect) > > + { > > + fprintf(stdout, "Result Rect [%d] (%d, %d) (%d x %d)\n", > i++, rect->x, rect->y, rect->w, rect->h); > > + > > + o = evas_object_rectangle_add(evas); > > + evas_object_color_set(o, 0, 255, 0, 255); > > + evas_object_resize(o, rect->w, rect->h); > > + evas_object_move(o, RESULT_X + rect->x, RESULT_Y + > rect->y); > > + evas_object_show(o); > > + tiler_objs = eina_list_append(tiler_objs, o); > > + } > > + eina_iterator_free(itr); > > + > > + o = add_text(Methods[cur_method], RESULT_X, 0, TILER_W); > > + tiler_objs = eina_list_append(tiler_objs, o); > > + eina_tiler_free(tiler); > > + } > > +} > > + > > +void rect_update() > > +{ > > + Evas_Object *o; > > + Eina_Rectangle *rect; > > + Eina_Iterator *itr; > > + int i = 0; > > + > > + if (t1_objs) > > + { > > + EINA_LIST_FREE(t1_objs, o) > > + { > > + evas_object_hide(o); > > + evas_object_del(o); > > + } > > + } > > + if (t2_objs) > > + { > > + EINA_LIST_FREE(t2_objs, o) > > + { > > + evas_object_hide(o); > > + evas_object_del(o); > > + } > > + } > > + > > + eina_tiler_clear(tiler1); > > + eina_tiler_clear(tiler2); > > + > > + eina_tiler_tile_size_set(tiler1, tilesize[tile_idx], > tilesize[tile_idx]); > > + eina_tiler_tile_size_set(tiler2, tilesize[tile_idx], > tilesize[tile_idx]); > > + > > + for (i = 0; i < 2; i ++) > > + { > > + if (rects[rect_idx][0][i].w > 0 && rects[rect_idx][0][i].w > 0) > > + eina_tiler_rect_add(tiler1, &rects[rect_idx][0][i]); > > + if (rects[rect_idx][1][i].w > 0 && rects[rect_idx][1][i].w > 0) > > + eina_tiler_rect_add(tiler2, &rects[rect_idx][1][i]); > > + } > > + > > + /* draw rects of tiler1 */ > > + itr = eina_tiler_iterator_new(tiler1); > > + EINA_ITERATOR_FOREACH(itr, rect) > > + { > > + o = evas_object_rectangle_add(evas); > > + evas_object_color_set(o, 255, 0, 0, 255); > > + evas_object_resize(o, rect->w, rect->h); > > + evas_object_move(o, TILER1_X + rect->x, TILER1_Y + rect->y); > > + evas_object_show(o); > > + t1_objs = eina_list_append(t1_objs, o); > > + } > > + eina_iterator_free(itr); > > + > > + /* draw rects of tiler2 */ > > + itr = eina_tiler_iterator_new(tiler2); > > + EINA_ITERATOR_FOREACH(itr, rect) > > + { > > + o = evas_object_rectangle_add(evas); > > + evas_object_color_set(o, 0, 0, 255, 255); > > + evas_object_resize(o, rect->w, rect->h); > > + evas_object_move(o, TILER2_X + rect->x, TILER2_Y + rect->y); > > + evas_object_show(o); > > + t2_objs = eina_list_append(t2_objs, o); > > + } > > + eina_iterator_free(itr); > > + > > + tiler_calc(); > > +} > > + > > +static void > > +_on_key_down(void *data, > > + Evas *evas EINA_UNUSED, > > + Evas_Object *o EINA_UNUSED, > > + void *einfo) > > +{ > > + Evas_Event_Key_Down *ev; > > + int x,y; > > + > > + ev = (Evas_Event_Key_Down *)einfo; > > + > > + if(strcmp(ev->key,"Escape") == 0) > > + { > > + ecore_main_loop_quit(); > > + } > > + else if(strcmp(ev->key, "u") == 0) > > + { > > + if (cur_method == METHOD_UNION) > > + return; > > + > > + cur_method = METHOD_UNION; > > + } > > + else if(strcmp(ev->key, "s") == 0) > > + { > > + if (cur_method == METHOD_SUBTRACT) > > + return; > > + > > + cur_method = METHOD_SUBTRACT; > > + } > > + else if(strcmp(ev->key, "i") == 0) > > + { > > + if (cur_method == METHOD_INTERSECTION) > > + return; > > + > > + cur_method = METHOD_INTERSECTION; > > + } > > + else if(strcmp(ev->key, "t") == 0) > > + { > > + /* change tiler tile size */ > > + tile_idx ++; > > + tile_idx %= tile_count; > > + fprintf(stdout, "Tiler Size : %d\n", tilesize[tile_idx]); > > + > > + rect_update(); > > + return; > > + } > > + else if(strcmp(ev->key, "n") == 0) > > + { > > + /* change arrangement of tilers's rects */ > > + rect_idx ++; > > + rect_idx %= rect_count; > > + rect_update(); > > + return; > > + } > > + else > > + { > > + fprintf(stdout, "Key %s not supported.\nCommands:%s", ev->key, > commands); > > + return; > > + } > > + > > + tiler_calc(); > > +} > > + > > +int > > +main(int argc, char *argv[]) > > +{ > > + Ecore_Evas *ee; > > + Evas_Object *o; > > + int i; > > + Eina_Rectangle *rect; > > + Eina_Iterator *itr; > > + > > + fprintf(stdout, "Usage.\nCommands:%s", commands); > > + > > + ecore_evas_init(); > > + ecore_init(); > > + evas_init(); > > + eina_init(); > > + > > + ee = ecore_evas_new(NULL, 0, 0, WIN_W, WIN_H, NULL); > > + if (!ee) > > + { > > + fputs("ERROR: Could not create window. Check ecore-evas > install.\n", > > + stderr); > > + goto end; > > + } > > + > > + evas = ecore_evas_get(ee); > > + > > + /* window bg */ > > + o = evas_object_rectangle_add(evas); > > + evas_object_color_set(o, 255, 255, 255, 255); > > + evas_object_resize(o, WIN_W, WIN_H); > > + evas_object_show(o); > > + evas_object_focus_set(o, EINA_TRUE); > > + bg = o; > > + > > + /* tiler1 bg */ > > + o = evas_object_rectangle_add(evas); > > + evas_object_color_set(o, 0, 0, 0, 255); > > + evas_object_resize(o, TILER_W, TILER_H); > > + evas_object_move(o, TILER1_X, TILER1_Y); > > + evas_object_show(o); > > + > > + /* tiler2 bg */ > > + o = evas_object_rectangle_add(evas); > > + evas_object_color_set(o, 0, 0, 0, 255); > > + evas_object_resize(o, TILER_W, TILER_H); > > + evas_object_move(o, TILER2_X, TILER2_Y); > > + evas_object_show(o); > > + > > + add_text("Tiler1", TILER1_X, 0, TILER_W); > > + add_text("Tiler2", TILER2_X, 0, TILER_W); > > + > > + tiler1 = eina_tiler_new(TILER_W, TILER_H); > > + tiler2 = eina_tiler_new(TILER_W, TILER_H); > > + > > + rect_update(); > > + > > + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, > _on_key_down, NULL); > > + > > + ecore_evas_show(ee); > > + ecore_main_loop_begin(); > > + > > + eina_list_free(tiler_objs); > > + eina_list_free(t1_objs); > > + eina_list_free(t2_objs); > > + eina_tiler_free(tiler1); > > + eina_tiler_free(tiler2); > > + ecore_evas_free(ee); > > + > > + end: > > + eina_shutdown(); > > + evas_shutdown(); > > + ecore_shutdown(); > > + ecore_evas_shutdown(); > > + > > + return 0; > > +} > > diff --git a/src/lib/eina/eina_tiler.c b/src/lib/eina/eina_tiler.c > > index 0301737..275ff7b 100644 > > --- a/src/lib/eina/eina_tiler.c > > +++ b/src/lib/eina/eina_tiler.c > > @@ -1347,6 +1347,212 @@ EAPI Eina_Iterator > *eina_tiler_iterator_new(const Eina_Tiler *t) > > return &it->iterator; > > } > > > > +EAPI Eina_Bool > > +eina_tiler_union(Eina_Tiler *dst, > > + Eina_Tiler *src) > > +{ > > + Eina_Iterator *itr; > > + Eina_Rectangle *rect, _rect; > > + > > + if ((!src) || (!dst)) > > + return EINA_FALSE; > > + > > + EINA_MAGIC_CHECK_TILER(src, EINA_FALSE); > > + EINA_MAGIC_CHECK_TILER(dst, EINA_FALSE); > > + > > + if ((src->area.w <= 0) || (src->area.h <=0)) > > + return EINA_FALSE; > > + > > + dst->area.w = MAX(src->area.w, dst->area.w); > > + dst->area.h = MAX(src->area.h, dst->area.h); > > + > > + itr = eina_tiler_iterator_new(src); > > + if (!itr) > > + return EINA_FALSE; > > + > > + EINA_ITERATOR_FOREACH(itr, rect) > > + { > > + _rect = *rect; > > + if (src->rounding) > > + { > > + _rect.w -= 1; > > + _rect.h -= 1; > > + } > > + _splitter_rect_add(dst, &_rect); > > + } > > + eina_iterator_free(itr); > > + > > + if (rect) > > + dst->last.add = *rect; > > + > > + return EINA_TRUE; > > +} > > + > > +EAPI Eina_Bool > > +eina_tiler_subtract(Eina_Tiler *dst, > > + Eina_Tiler *src) > > +{ > > + Eina_Iterator *itr; > > + Eina_Rectangle *rect, _rect; > > + > > + if ((!src) || (!dst)) > > + return EINA_FALSE; > > + > > + EINA_MAGIC_CHECK_TILER(src, EINA_FALSE); > > + EINA_MAGIC_CHECK_TILER(dst, EINA_FALSE); > > + > > + if ((src->area.w <= 0) || (src->area.h <= 0)) > > + return EINA_FALSE; > > + > > + itr = eina_tiler_iterator_new(src); > > + if (!itr) > > + return EINA_FALSE; > > + > > + EINA_ITERATOR_FOREACH(itr, rect) > > + { > > + _rect = *rect; > > + if (src->rounding) > > + { > > + _rect.w -= 1; > > + _rect.h -= 1; > > + } > > + _splitter_rect_del(dst, &_rect); > > + } > > + eina_iterator_free(itr); > > + > > + if (rect) > > + dst->last.del = *rect; > > + > > + return EINA_TRUE; > > +} > > + > > +EAPI Eina_Tiler * > > +eina_tiler_intersection(Eina_Tiler *t1, > > + Eina_Tiler *t2) > > +{ > > + Eina_Tiler *t; > > + int w, h; > > + > > + Eina_Iterator *itr1, *itr2; > > + Eina_Rectangle rect, *rect1, *rect2; > > + > > + EINA_MAGIC_CHECK_TILER(t1, NULL); > > + EINA_MAGIC_CHECK_TILER(t2, NULL); > > + > > + if (!(eina_rectangles_intersect(&t1->area, &t2->area))) > > + return NULL; > > + > > + w = MIN(t1->area.w, t2->area.w); > > + h = MIN(t1->area.h, t2->area.h); > > + t = eina_tiler_new(w, h); > > + > > + itr1 = eina_tiler_iterator_new(t1); > > + itr2 = eina_tiler_iterator_new(t2); > > + > > + if ((!eina_iterator_next(itr1, (void**)(void*)(&rect1))) && (!rect1)) > > + return NULL; > > + if ((!eina_iterator_next(itr2, (void**)(void*)(&rect2))) && (!rect2)) > > + return NULL; > > + > > + while((rect1) && (rect2)) > > + { > > + if (eina_rectangles_intersect(rect1, rect2)) > > + { > > + rect.x = MAX(rect1->x, rect2->x); > > + rect.y = MAX(rect1->y, rect2->y); > > + rect.w = MIN(rect1->x + rect1->w, rect2->x + rect2->w) - > rect.x; > > + rect.h = MIN(rect1->y + rect1->h, rect2->y + rect2->h) - > rect.y; > > + > > + if ((t1->rounding) || (t2->rounding)) > > + { > > + rect.w -= 1; > > + rect.h -= 1; > > + } > > + > > + _splitter_rect_add(t, &rect); > > + > > + t->last.add = rect; > > + } > > + > > + if (rect1->x + rect1->w < rect2->x + rect2->w) > > + { > > + if(eina_iterator_next(itr1, (void**)&rect1)) > > + continue; > > + } > > + else if (rect1->x + rect1->w > rect2->x + rect2->w) > > + { > > + if (eina_iterator_next(itr2, (void**)&rect2)) > > + continue; > > + } > > + > > + if (eina_iterator_next(itr1, (void**)&rect1)) > > + continue; > > + if (eina_iterator_next(itr2, (void**)&rect2)) > > + continue; > > + > > + break; > > + } > > + > > + eina_iterator_free(itr1); > > + eina_iterator_free(itr2); > > + > > + return t; > > +} > > + > > +EAPI Eina_Bool > > +eina_tiler_equal(Eina_Tiler *t1, > > + Eina_Tiler *t2) > > +{ > > + Eina_Iterator *itr1, *itr2; > > + Eina_Rectangle *rect1, *rect2; > > + Eina_Bool next_t1 = EINA_FALSE, next_t2 = EINA_FALSE; > > + > > + EINA_MAGIC_CHECK_TILER(t1, EINA_FALSE); > > + EINA_MAGIC_CHECK_TILER(t2, EINA_FALSE); > > + > > + if (!(eina_rectangles_intersect(&t1->area, &t2->area))) > > + return EINA_FALSE; > > + > > + itr1 = eina_tiler_iterator_new(t1); > > + itr2 = eina_tiler_iterator_new(t2); > > + > > + if ((!eina_iterator_next(itr1, (void**)(void*)(&rect1))) && (!rect1)) > > + return EINA_FALSE; > > + if ((!eina_iterator_next(itr2, (void**)(void*)(&rect2))) && (!rect2)) > > + return EINA_FALSE; > > + > > + while((rect1) && (rect2)) > > + { > > + if (eina_rectangles_intersect(rect1, rect2)) > > + { > > + if ((rect1->x != rect2->x) || > > + (rect1->y != rect2->y) || > > + (rect1->w != rect2->w) || > > + (rect1->h != rect2->h)) > > + { > > + return EINA_FALSE; > > + } > > + } > > + else > > + return EINA_FALSE; > > + > > + next_t1 = eina_iterator_next(itr1, (void**)&rect1); > > + next_t2 = eina_iterator_next(itr2, (void**)&rect2); > > + > > + if (next_t1 != next_t2) > > + return EINA_FALSE; > > + > > + if (!next_t1 && !next_t2) > > + break; > > + } > > + > > + eina_iterator_free(itr1); > > + eina_iterator_free(itr2); > > + > > + return EINA_TRUE; > > + > > +} > > + > > struct _Eina_Tile_Grid_Slicer_Iterator > > { > > Eina_Iterator iterator; > > diff --git a/src/lib/eina/eina_tiler.h b/src/lib/eina/eina_tiler.h > > index 3a48383..0f60751 100644 > > --- a/src/lib/eina/eina_tiler.h > > +++ b/src/lib/eina/eina_tiler.h > > @@ -308,6 +308,55 @@ EAPI Eina_Iterator > *eina_tiler_iterator_new(const Eina_Tiler *t); > > * eina_tile_grid_slicer_next() untill it returns #EINA_FALSE. > > */ > > EAPI Eina_Iterator *eina_tile_grid_slicer_iterator_new(int x, int > y, int w, int h, int tile_w, int tile_h); > > + > > +/** > > + * @brief Gets the union of two tilers. > > + * > > + * @param dst The first tiler, will store the result. > > + * @param src The second tiler. > > + * @return #EINA_TRUE on success, #EINA_FALSE otherwise. > > + * > > + * This fuction get the union of tilers @p dst and @p src. > > + * The result is stored in @p dst. It returns #EINA_TRUE if it succeeds. > > + */ > > +EAPI Eina_Bool eina_tiler_union(Eina_Tiler *dst, Eina_Tiler > *src); > > + > > +/** > > + * @brief Subtracts two tilers. > > + * > > + * @param dst The first tiler, will store the result. > > + * @param src The second tiler. > > + * @return #EINA_TRUE on success, #EINA_FALSE otherwise. > > + * > > + * This fuction subtracts two tilers @p dst and @p src. > > + * The result is stored in @p dst. It returns #EINA_TRUE if it succeeds. > > + */ > > +EAPI Eina_Bool eina_tiler_subtract(Eina_Tiler *dst, Eina_Tiler > *src); > > + > > +/** > > + * @brief Gets the intersection of two tilers. > > + * > > + * @param t1 The first tile. > > + * @param t2 The second tiler. > > + * @return A pointer of intersection result. @c NULL on failure. > > + * > > + * This fuction gest intersection of two tilers @p t1 and @p t2. > > + * It returns a pointer of result if it succeeds., otherwise returns > NULL. > > + */ > > +EAPI Eina_Tiler *eina_tiler_intersection(Eina_Tiler *t1, > Eina_Tiler *t2); > > + > > +/** > > + * @brief Gets whether two tilers are equal in rects or not. > > + * > > + * @param t1 The first tiler. > > + * @param t2 The second tiler. > > + * @return #EINA_TRUE is equal, #EINA_FALSE is unequal. > > + * > > + * This fuction gets result of comparison for @p t1 and @p t2. > > + * It returns #EINA_TRUE if tilers are equal. > > + */ > > +EAPI Eina_Bool eina_tiler_equal(Eina_Tiler *t1, Eina_Tiler > *t2); > > + > > /** > > * @brief Iterates over the tiles set by eina_tile_grid_slicer_setup(). > > * > > diff --git a/src/tests/eina/eina_test_tiler.c > b/src/tests/eina/eina_test_tiler.c > > index 2dec168..554dc11 100644 > > --- a/src/tests/eina/eina_test_tiler.c > > +++ b/src/tests/eina/eina_test_tiler.c > > @@ -220,10 +220,117 @@ START_TEST(eina_test_tiler_stable) > > } > > END_TEST > > > > +START_TEST(eina_test_tiler_calculation) > > +{ > > + Eina_Tiler *t1, *t2, *t; > > + Eina_Iterator *itr; > > + Eina_Rectangle r1, r2, *rp; > > + int i = 0; > > + > > + eina_init(); > > + > > + t1 = eina_tiler_new(500, 500); > > + fail_if(!t1); > > + > > + t2 = eina_tiler_new(500, 500); > > + fail_if(!t2); > > + > > + t = eina_tiler_new(500, 500); > > + fail_if(!t); > > + > > + eina_tiler_tile_size_set(t1, 1, 1); > > + eina_tiler_tile_size_set(t2, 1, 1); > > + eina_tiler_tile_size_set(t, 1, 1); > > + > > + EINA_RECTANGLE_SET(&r1, 0, 0, 500, 500); > > + eina_tiler_rect_add(t1, &r1); > > + > > + EINA_RECTANGLE_SET(&r2, 100, 100, 300, 300); > > + eina_tiler_rect_add(t2, &r2); > > + > > + fail_if(!eina_tiler_union(t1, t2)); > > + > > + itr = eina_tiler_iterator_new(t1); > > + EINA_ITERATOR_FOREACH(itr, rp) > > + { > > + fail_if(rp->w != 500); > > + fail_if(rp->h != 500); > > + fail_if(rp->x != 0); > > + fail_if(rp->y != 0); > > + ++i; > > + } > > + > > + eina_iterator_free(itr); > > + eina_tiler_clear(t1); > > + > > + fail_if(i != 1); > > + > > + eina_tiler_rect_add(t1, &r1); > > + > > + fail_if(!eina_tiler_subtract(t1, t2)); > > + > > + i = 0; > > + itr = eina_tiler_iterator_new(t1); > > + EINA_ITERATOR_FOREACH(itr, rp) > > + { > > + fail_if(!eina_rectangles_intersect(&r1, rp)); > > + fail_if(eina_rectangles_intersect(&r2, rp)); > > + > > + fail_if(rp->w <= 0); > > + fail_if(rp->h <= 0); > > + fail_if(rp->x < 0 || rp->x + rp->w > 500); > > + fail_if(rp->y < 0 || rp->y + rp->h > 500); > > + ++i; > > + } > > + > > + eina_iterator_free(itr); > > + eina_tiler_clear(t1); > > + > > + fail_if(i != 4); > > + > > + > > + eina_tiler_rect_add(t1, &r1); > > + > > + t = eina_tiler_intersection(t1, t2); > > + fail_if(!t); > > + > > + i = 0; > > + itr = eina_tiler_iterator_new(t); > > + EINA_ITERATOR_FOREACH(itr, rp) > > + { > > + fail_if(!eina_rectangles_intersect(&r1, rp)); > > + fail_if(!eina_rectangles_intersect(&r2, rp)); > > + > > + fail_if(rp->w <= 0); > > + fail_if(rp->h <= 0); > > + fail_if(rp->x < 0 || rp->x + rp->w > 500); > > + fail_if(rp->y < 0 || rp->y + rp->h > 500); > > + ++i; > > + } > > + > > + eina_iterator_free(itr); > > + eina_tiler_clear(t); > > + > > + fail_if(i != 1); > > + > > + eina_tiler_rect_add(t, &r1); > > + > > + fail_if(!eina_tiler_equal(t, t1)); > > + fail_if(!eina_tiler_equal(t1, t)); > > + > > + eina_tiler_free(t); > > + eina_tiler_free(t1); > > + eina_tiler_free(t2); > > + > > + eina_shutdown(); > > +} > > +END_TEST > > + > > void > > eina_test_tiler(TCase *tc) > > { > > tcase_add_test(tc, eina_test_tile_grid_slicer_iterator); > > tcase_add_test(tc, eina_test_tiler_all); > > tcase_add_test(tc, eina_test_tiler_stable); > > + tcase_add_test(tc, eina_test_tiler_calculation); > > } > > > > > > ------------------------------------------------------------------------------ > Time is money. Stop wasting it! Get your web API in 5 minutes. > www.restlet.com/download > http://p.sf.net/sfu/restlet > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > ------------------------------------------------------------------------------ Time is money. Stop wasting it! Get your web API in 5 minutes. www.restlet.com/download http://p.sf.net/sfu/restlet _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
