Separate test for circle was added because results are quite different for shapes/backends For Cairo backend: rect == 0.72, circle = 0.32 -> 125% slower For Freetype backend: rect == 2.81, circle = 2.26 -> 24% slowerdevs/cedric/efl-1.15
parent
cc4fa8a76e
commit
3ce8b3f145
3 changed files with 118 additions and 0 deletions
@ -0,0 +1,116 @@ |
||||
#undef FNAME |
||||
#undef NAME |
||||
#undef ICON |
||||
|
||||
/* metadata */ |
||||
#define FNAME vg_basic_circle_start |
||||
#define NAME "VG Basic Circle" |
||||
#define ICON "vector.png" |
||||
|
||||
#ifndef PROTO |
||||
# ifndef UI |
||||
# include "main.h" |
||||
|
||||
/* standard var */ |
||||
static int done = 0; |
||||
|
||||
/* private data */ |
||||
static Eo *o_shapes[OBNUM]; |
||||
|
||||
/* setup
|
||||
* Creating Evas Objects, each holds a vector shape. |
||||
* Then start moving these Evas Objects. */ |
||||
static void _setup(void) |
||||
{ |
||||
unsigned int i; |
||||
|
||||
for (i = 0; i < OBNUM; i++) |
||||
{ |
||||
Efl_VG *root, *circle; |
||||
Eo *vector; |
||||
double r = 35, stroke_w = 3; |
||||
|
||||
vector = eo_add(EVAS_VG_CLASS, evas); |
||||
o_shapes[i] = vector; |
||||
eo_do(vector, |
||||
efl_gfx_size_set(r * 2 + stroke_w * 2, r * 2 + stroke_w * 2), |
||||
efl_gfx_position_set(0, 0), |
||||
efl_gfx_visible_set(EINA_TRUE)); |
||||
|
||||
eo_do(vector, root = evas_obj_vg_root_node_get()); |
||||
|
||||
circle = eo_add(EFL_VG_SHAPE_CLASS, root); |
||||
eo_do(circle, |
||||
efl_gfx_shape_append_circle(r + stroke_w, r + stroke_w, r), |
||||
efl_gfx_shape_stroke_width_set(stroke_w), |
||||
efl_gfx_shape_stroke_color_set(128, 0, 128, 128), |
||||
efl_gfx_shape_stroke_join_set(EFL_GFX_JOIN_ROUND)); |
||||
} |
||||
done = 0; |
||||
} |
||||
|
||||
/* cleanup */ |
||||
static void _cleanup(void) |
||||
{ |
||||
unsigned int i; |
||||
|
||||
for (i = 0; i < OBNUM; i++) eo_del(o_shapes[i]); |
||||
} |
||||
|
||||
/* loop - do things */ |
||||
static void _loop(double t, int f) |
||||
{ |
||||
int i; |
||||
Evas_Coord x, y, w = 200, h = 200; |
||||
for (i = 0; i < OBNUM; i++) |
||||
{ |
||||
x = (win_w / 2) - (w / 2); |
||||
x += sin((double)(f + (i * 13)) / (36.7 * SLOW)) * (w / 2); |
||||
y = (win_h / 2) - (h / 2); |
||||
y += cos((double)(f + (i * 28)) / (43.8 * SLOW)) * (w / 2); |
||||
eo_do(o_shapes[i], efl_gfx_position_set(x, y)); |
||||
} |
||||
FPS_STD(NAME); |
||||
} |
||||
|
||||
/* prepend special key handlers if interactive (before STD) */ |
||||
static void _key(char *key) |
||||
{ |
||||
KEY_STD; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* template stuff - ignore */ |
||||
# endif |
||||
#endif |
||||
|
||||
#ifdef UI |
||||
_ui_menu_item_add(ICON, NAME, FNAME); |
||||
#endif |
||||
|
||||
#ifdef PROTO |
||||
void FNAME(void); |
||||
#endif |
||||
|
||||
#ifndef PROTO |
||||
# ifndef UI |
||||
void FNAME(void) |
||||
{ |
||||
ui_func_set(_key, _loop); |
||||
_setup(); |
||||
} |
||||
# endif |
||||
#endif |
||||
#undef FNAME |
||||
#undef NAME |
||||
#undef ICON |
Loading…
Reference in new issue