From 24ce750ebfc4efa3fd313e15d430146b0cbe0a22 Mon Sep 17 00:00:00 2001 From: raster Date: Sat, 21 May 2011 01:38:51 +0000 Subject: [PATCH] move test code further down out of the way. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@59558 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/bin/test_flip_page.c | 227 ++++++++++++++++++++++++----------------------- 1 file changed, 114 insertions(+), 113 deletions(-) diff --git a/src/bin/test_flip_page.c b/src/bin/test_flip_page.c index c286ee4..4169df0 100644 --- a/src/bin/test_flip_page.c +++ b/src/bin/test_flip_page.c @@ -136,6 +136,120 @@ _slice_uv(Slice *sl, sl->u[3] = u4; sl->v[3] = v4; } +static void +_slice_update(State *st) +{ + Evas_Coord x1, y1, x2, y2, mx, my, px, rx, ry, prx, pry, dst, dx, dy, pdst; + Evas_Coord x, y, w, h; + int i; + Slice *sl; + int rad; + + evas_object_geometry_get(st->orig, &x, &y, &w, &h); + x1 = st->down_x; + y1 = st->down_y; + x2 = st->x; + y2 = st->y; + mx = (x1 + x2) / 2; + my = (y1 + y2) / 2; + + if (mx < 0) mx = 0; + else if (mx >= w) mx = w - 1; + if (my < 0) my = 0; + else if (my >= h) my = h - 1; + + if (!st->base) st->base = _slice_new(st); + sl = st->base; + + _slice_xyz(sl, + 0, 0, 0, + mx, 0, 0, + mx, h, 0, + 0, h, 0); + _slice_uv(sl, + 0, 0, + mx, 0, + mx, h, + 0, h); + _slice_apply(sl, x, y, w, h); + + EINA_LIST_FREE(st->slices, sl) _slice_free(sl); + + // cylinder radius is width / 8 + rad = (w - mx) / 4; + if (rad < (w / 16)) rad = (w / 16); + if (rad > (w / 8)) rad = w / 8; + + rad = w / 10; + + px = mx; + prx = 0; + pry = rad; + for (i = 1; i < RES; i++) + { + rx = (double)rad * sin((i * M_PI) / RES); + ry = (double)rad * cos((i * M_PI) / RES); + dx = rx - prx; + dy = ry - pry; + dst = sqrt((dx * dx) + (dy * dy)); + if ((px + dst) > w) + { + pdst = dst; + dst = w - px; + rx = prx + (((rx - prx) * dst) / pdst); + ry = pry + (((ry - pry) * dst) / pdst); + } + if (dst <= 0) break; + + sl = _slice_new(st); + + _slice_xyz(sl, + mx + prx, 0, -(rad - pry), + mx + rx, 0, -(rad - ry), + mx + rx, h, -(rad - ry), + mx + prx, h, -(rad - pry)); + _slice_uv(sl, + px, 0, + px + dst, 0, + px + dst, h, + px, h); + _slice_apply(sl, x, y, w, h); + st->slices = eina_list_append(st->slices, sl); + + prx = rx; + pry = ry; + px += dst; + } + if (px < w) + { + sl = _slice_new(st); + + _slice_xyz(sl, + mx + prx, 0, -(rad - pry), + mx + (px - w), 0, -(rad * 2), + mx + (px - w), h, -(rad * 2), + mx + prx, h, -(rad - pry)); + _slice_uv(sl, + px, 0, + w, 0, + w, h, + px, h); + _slice_apply(sl, x, y, w, h); + st->slices = eina_list_append(st->slices, sl); + } +} + +static void +_slice_end(State *st) +{ + Slice *sl; + + if (st->base) _slice_free(st->base); + st->base = NULL; + EINA_LIST_FREE(st->slices, sl) _slice_free(sl); +} + + #ifdef PAGEMESH static Evas_Object *sl_rho, *sl_theta, *sl_A; @@ -251,119 +365,6 @@ _sl_ch(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UN #endif static void -_slice_update(State *st) -{ - Evas_Coord x1, y1, x2, y2, mx, my, px, rx, ry, prx, pry, dst, dx, dy, pdst; - Evas_Coord x, y, w, h; - int i; - Slice *sl; - int rad; - - evas_object_geometry_get(st->orig, &x, &y, &w, &h); - x1 = st->down_x; - y1 = st->down_y; - x2 = st->x; - y2 = st->y; - mx = (x1 + x2) / 2; - my = (y1 + y2) / 2; - - if (mx < 0) mx = 0; - else if (mx >= w) mx = w - 1; - if (my < 0) my = 0; - else if (my >= h) my = h - 1; - - if (!st->base) st->base = _slice_new(st); - sl = st->base; - - _slice_xyz(sl, - 0, 0, 0, - mx, 0, 0, - mx, h, 0, - 0, h, 0); - _slice_uv(sl, - 0, 0, - mx, 0, - mx, h, - 0, h); - _slice_apply(sl, x, y, w, h); - - EINA_LIST_FREE(st->slices, sl) _slice_free(sl); - - // cylinder radius is width / 8 - rad = (w - mx) / 4; - if (rad < (w / 16)) rad = (w / 16); - if (rad > (w / 8)) rad = w / 8; - - rad = w / 10; - - px = mx; - prx = 0; - pry = rad; - for (i = 1; i < RES; i++) - { - rx = (double)rad * sin((i * M_PI) / RES); - ry = (double)rad * cos((i * M_PI) / RES); - dx = rx - prx; - dy = ry - pry; - dst = sqrt((dx * dx) + (dy * dy)); - if ((px + dst) > w) - { - pdst = dst; - dst = w - px; - rx = prx + (((rx - prx) * dst) / pdst); - ry = pry + (((ry - pry) * dst) / pdst); - } - if (dst <= 0) break; - - sl = _slice_new(st); - - _slice_xyz(sl, - mx + prx, 0, -(rad - pry), - mx + rx, 0, -(rad - ry), - mx + rx, h, -(rad - ry), - mx + prx, h, -(rad - pry)); - _slice_uv(sl, - px, 0, - px + dst, 0, - px + dst, h, - px, h); - _slice_apply(sl, x, y, w, h); - st->slices = eina_list_append(st->slices, sl); - - prx = rx; - pry = ry; - px += dst; - } - if (px < w) - { - sl = _slice_new(st); - - _slice_xyz(sl, - mx + prx, 0, -(rad - pry), - mx + (px - w), 0, -(rad * 2), - mx + (px - w), h, -(rad * 2), - mx + prx, h, -(rad - pry)); - _slice_uv(sl, - px, 0, - w, 0, - w, h, - px, h); - _slice_apply(sl, x, y, w, h); - st->slices = eina_list_append(st->slices, sl); - } -} - -static void -_slice_end(State *st) -{ - Slice *sl; - - if (st->base) _slice_free(st->base); - st->base = NULL; - EINA_LIST_FREE(st->slices, sl) _slice_free(sl); -} - -static void im_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) { Evas_Event_Mouse_Down *ev = event_info; -- 2.7.4