diff options
Diffstat (limited to 'src/examples/elementary')
37 files changed, 370 insertions, 6227 deletions
diff --git a/src/examples/elementary/.gitignore b/src/examples/elementary/.gitignore index 89ec3ec650..84d951ef90 100644 --- a/src/examples/elementary/.gitignore +++ b/src/examples/elementary/.gitignore @@ -171,3 +171,4 @@ /efl_ui_theme_example_02 /efl_ui_relative_container_example_01 /efl_ui_relative_container_example_02 +/efl_canvas_textblock_obstacles_example diff --git a/src/examples/elementary/bg_example_03.c b/src/examples/elementary/bg_example_03.c index 5337d3426a..32ba3ed6f5 100644 --- a/src/examples/elementary/bg_example_03.c +++ b/src/examples/elementary/bg_example_03.c @@ -39,13 +39,13 @@ _cb_color_changed(void *data, Evas_Object *obj, void *event EINA_UNUSED) double val = 0.0; val = elm_spinner_value_get(obj); - if (val == 1.0) + if (EINA_DBL_EQ(val, 1.0)) elm_bg_color_set(o_bg, 255, 255, 255); - else if (val == 2.0) + else if (EINA_DBL_EQ(val, 2.0)) elm_bg_color_set(o_bg, 255, 0, 0); - else if (val == 3.0) + else if (EINA_DBL_EQ(val, 3.0)) elm_bg_color_set(o_bg, 0, 0, 255); - else if (val == 4.0) + else if (EINA_DBL_EQ(val, 4.0)) elm_bg_color_set(o_bg, 0, 255, 0); } diff --git a/src/examples/elementary/calendar_cxx_example_04.cc b/src/examples/elementary/calendar_cxx_example_04.cc index 7bf9d94c0c..ed61912821 100644 --- a/src/examples/elementary/calendar_cxx_example_04.cc +++ b/src/examples/elementary/calendar_cxx_example_04.cc @@ -15,8 +15,6 @@ */ #include <Efl_Ui.hh> -#warning This example can not be implemented with EO APIs... FIXME - using efl::eo::instantiate; #define SECS_DAY 86400 diff --git a/src/examples/elementary/calendar_cxx_example_05.cc b/src/examples/elementary/calendar_cxx_example_05.cc index 6fc857dff8..2447854c46 100644 --- a/src/examples/elementary/calendar_cxx_example_05.cc +++ b/src/examples/elementary/calendar_cxx_example_05.cc @@ -15,8 +15,6 @@ */ #include <Efl_Ui.hh> -#warning This example can not be implemented with EO APIs... FIXME - EAPI_MAIN int elm_main (int argc EINA_UNUSED, char **argv EINA_UNUSED) { diff --git a/src/examples/elementary/efl_canvas_textblock_obstacles_example.c b/src/examples/elementary/efl_canvas_textblock_obstacles_example.c new file mode 100644 index 0000000000..b2aca7ee2b --- /dev/null +++ b/src/examples/elementary/efl_canvas_textblock_obstacles_example.c @@ -0,0 +1,273 @@ +#define EFL_BETA_API_SUPPORT 1 + +#include <Efl_Ui.h> + + /** + * Example of canvas textblock obstacles. + * + * You start with two registered obstacle objects. They are not visible + * at first, so the canvas textblock simply shows the text that has been set to it. + * Once the obstacle is visible (show/hide keys in the example), the text will + * wrap around it. + * This example allows you to test two obstacles registered to the same + * canvas textblock object. Also, you can play with size and position for each. + * Use the 'h' key to show the provided options for this test. + * + * @verbatim + * gcc -g efl_canvas_textblock_obstacles_example.c -o efl_canvas_textblock_obstacles_example `pkg-config --cflags --libs elementary` + * @endverbatim + */ + +#define WIDTH (360) +#define HEIGHT (240) + +#define POINTER_CYCLE(_ptr, _array) \ + do \ + { \ + if ((unsigned int)(((unsigned char *)(_ptr)) - ((unsigned char *)(_array))) >= \ + sizeof(_array)) \ + _ptr = _array; \ + } \ + while(0) + +static const char *commands = \ + "commands are:\n" + "\tt - change currently controlled obstacle\n" + "\tv - show/hide current obstacle\n" + "\ts - cycle current obstacle's size\n" + "\tp - change current obstacle's position (random)\n" + "\tw - cycle text wrapping modes (none/word/char/mixed)\n" + "\th - print help\n"; + +struct text_preset_data +{ + const char **font_ptr; + const char *font[3]; + + const char **wrap_ptr; + const char *wrap[4]; + + int *obs_size_ptr; + int obs_size[3]; + + Eo **obs_ptr; /* pointer to the currently controlled obstacle object */ + Eo *obs[2]; +}; + +struct test_data +{ + Eo *win, *box, *bg, *text; + struct text_preset_data t_data; + Eina_Size2D size; +}; + +static struct test_data d = {0}; + +static unsigned int +_getrand(unsigned int low, unsigned int high) +{ + return (rand() % (high - low)) + low; +} + +static void +_style_set(const char *wrap) +{ + char buf[2000]; + snprintf(buf, + 2000, + "font=Sans font_size=16 color=#000 wrap=%s", + wrap); + + efl_canvas_textblock_style_apply(d.text, buf); +} + +static void +_key_down(void *data EINA_UNUSED, const Efl_Event *ev) +{ + const char *key = efl_input_key_string_get(ev->info); + if (!key) + return; + + if (strcmp(key, "h") == 0) /* print help */ + { + printf("%s\n", commands); + return; + } + + if (strcmp(key, "t") == 0) /* change obstacle type */ + { + (d.t_data.obs_ptr)++; + POINTER_CYCLE(d.t_data.obs_ptr, d.t_data.obs); + + printf("Now controlling obstacle: %p\n", *d.t_data.obs_ptr); + + return; + } + + if (strcmp(key, "v") == 0) /* change obstacle visibility */ + { + Eo *obj = *d.t_data.obs_ptr; + if (efl_gfx_entity_visible_get(obj)) + efl_gfx_entity_visible_set(obj, EINA_FALSE); + else + efl_gfx_entity_visible_set(obj, EINA_TRUE); + + printf("Show/hide toggle for obstacle %p\n", + *d.t_data.obs_ptr); + + efl_canvas_textblock_obstacles_update(d.text); + + return; + } + + if (strcmp(key, "s") == 0) /* change obstacle size */ + { + (d.t_data.obs_size_ptr)++; + POINTER_CYCLE(d.t_data.obs_size_ptr, d.t_data.obs_size); + + efl_gfx_entity_size_set(*d.t_data.obs_ptr, EINA_SIZE2D(*d.t_data.obs_size_ptr, *d.t_data.obs_size_ptr)); + + efl_canvas_textblock_obstacles_update(d.text); + + printf("Changing obstacle size to: %d,%d\n", + *d.t_data.obs_size_ptr, *d.t_data.obs_size_ptr); + + return; + } + + if (strcmp(key, "p") == 0) /* change obstacle position */ + { + int x, y; + x = _getrand(0, d.size.w); + y = _getrand(0, d.size.h); + + efl_gfx_entity_position_set(*d.t_data.obs_ptr, EINA_POSITION2D(x, y)); + efl_canvas_textblock_obstacles_update(d.text); + + printf("Changing obstacles position\n"); + efl_gfx_entity_position_set(*d.t_data.obs_ptr, EINA_POSITION2D(x, y)); + + Eina_Position2D r_rec = efl_gfx_entity_position_get(d.t_data.obs[0]); + Eina_Position2D g_rec = efl_gfx_entity_position_get(d.t_data.obs[1]); + + printf("Obstacle #1 (red) : [%d,%d]\n", r_rec.x, r_rec.y); + printf("Obstacle #2 (green): [%d,%d]\n", g_rec.x, g_rec.y); + + return; + } + + if (strcmp(key, "w") == 0) /* change obstacle position */ + { + (d.t_data.wrap_ptr)++; + POINTER_CYCLE(d.t_data.wrap_ptr, d.t_data.wrap); + printf("Changing wrap mode to: %s\n", + *d.t_data.wrap_ptr); + _style_set(*d.t_data.wrap_ptr); + efl_canvas_textblock_obstacles_update(d.text); + + return; + } +} + +static void +_win_resize(void *data EINA_UNUSED, const Efl_Event *ev) +{ + Eina_Size2D sz; + + sz = efl_gfx_entity_size_get(ev->object); + efl_gfx_entity_size_set(d.bg, sz); + efl_gfx_entity_size_set(d.text, sz); + + d.size = sz; +} + +static void +_text_init() +{ + _style_set("word"); + + efl_text_markup_set(d.text, + "This example text demonstrates the textblock object" + " with obstacle objects support." + " Any evas object <item size=72x16></item>can register itself as an obstacle to the textblock" + " object. Upon regi<color=#0ff>stering, it aff</color>ects the layout of the text in" + " certain situations. Usually, when the obstacle shows above the text" + " area, it will cause the layout of the text to split and move" + " parts of it, so that all text area is apparent." + ); +} + +static void +_gui_quit_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) +{ + efl_exit(0); +} + +static void +_gui_setup() +{ + /* init values one is going to cycle through while running this + * example */ + struct text_preset_data init_data = + { + .font = {"DejaVu", "Courier", "Utopia"}, + .wrap = {"word", "char", "mixed", "none"}, + .obs_size = {50, 70, 100}, + .obs = {NULL, NULL}, + }; + + d.t_data = init_data; + d.t_data.font_ptr = d.t_data.font; + d.t_data.obs_size_ptr = d.t_data.obs_size; + d.t_data.obs_ptr = d.t_data.obs; + + d.win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(), + efl_text_set(efl_added, "Obstacles Example"), + efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + + efl_gfx_entity_size_set(d.win, EINA_SIZE2D(WIDTH, HEIGHT)); + printf("Window size set to [%d,%d]\n", WIDTH, HEIGHT); + + efl_event_callback_add(d.win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _gui_quit_cb, NULL); + efl_event_callback_add(d.win, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _win_resize, NULL); + efl_event_callback_add(d.win, EFL_EVENT_KEY_DOWN, _key_down, NULL); + + d.bg = efl_add(EFL_CANVAS_RECTANGLE_CLASS, d.win, + efl_gfx_color_set(efl_added, 255, 255, 255, 255)); + + efl_gfx_entity_size_set(d.bg, EINA_SIZE2D(WIDTH, HEIGHT)); + efl_gfx_entity_position_set(d.bg, EINA_POSITION2D(0, 0)); + + d.text = efl_add(EFL_CANVAS_TEXTBLOCK_CLASS, d.win, + efl_text_multiline_set(efl_added, EINA_TRUE)); + + _text_init(); + efl_gfx_entity_size_set(d.text, EINA_SIZE2D(WIDTH, HEIGHT)); + efl_gfx_entity_position_set(d.text, EINA_POSITION2D(0, 0)); + + d.size.w = WIDTH; + d.size.h = HEIGHT; + + /* init obstacles */ + d.t_data.obs[0] = efl_add(EFL_CANVAS_RECTANGLE_CLASS, d.win, + efl_gfx_color_set(efl_added, 255, 0, 0, 255)); + + efl_gfx_entity_size_set(d.t_data.obs[0], EINA_SIZE2D(50,50)); + + d.t_data.obs[1] = efl_add(EFL_CANVAS_RECTANGLE_CLASS, d.win, + efl_gfx_color_set(efl_added, 0, 255, 0, 255)); + + efl_gfx_entity_size_set(d.t_data.obs[1], EINA_SIZE2D(50,50)); + + efl_canvas_textblock_obstacle_add(d.text, d.t_data.obs[0]); + efl_canvas_textblock_obstacle_add(d.text, d.t_data.obs[1]); + + printf("%s\n", commands); +} + +EAPI_MAIN void +efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) +{ + _gui_setup(); +} +EFL_MAIN() diff --git a/src/examples/elementary/efl_ui_slideshow_example.c b/src/examples/elementary/efl_ui_slideshow_example.c index 6292f4390f..4be9865bd3 100644 --- a/src/examples/elementary/efl_ui_slideshow_example.c +++ b/src/examples/elementary/efl_ui_slideshow_example.c @@ -93,8 +93,8 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) container = efl_add(EFL_UI_SPOTLIGHT_CONTAINER_CLASS, win, efl_event_callback_add(efl_added, EFL_UI_SPOTLIGHT_EVENT_TRANSITION_END, _container_end, NULL), efl_pack_table(table, efl_added, 0, 0, 1, 1)); - efl_ui_spotlight_indicator_set(container, efl_new(EFL_UI_SPOTLIGHT_INDICATOR_ICON_CLASS)); - efl_ui_spotlight_manager_set(container, efl_new(EFL_UI_SPOTLIGHT_MANAGER_STACK_CLASS)); + efl_ui_spotlight_indicator_set(container, efl_new(EFL_UI_SPOTLIGHT_ICON_INDICATOR_CLASS)); + efl_ui_spotlight_manager_set(container, efl_new(EFL_UI_SPOTLIGHT_FADE_MANAGER_CLASS)); for (int i = 0; i < IMG_NUM; i++) { diff --git a/src/examples/elementary/evas3d_map_example.c b/src/examples/elementary/evas3d_map_example.c deleted file mode 100644 index f0859e30ac..0000000000 --- a/src/examples/elementary/evas3d_map_example.c +++ /dev/null @@ -1,1211 +0,0 @@ -#ifndef EFL_BETA_API_SUPPORT -# define EFL_BETA_API_SUPPORT -#endif - -#include <Elementary.h> - -#define WIDTH 1024 -#define HEIGHT 1024 -#define IMG_SIZE 1024 -#define SKYBOX_IMG_WIDTH 4096 -#define SKYBOX_IMG_HEIGHT 3072 - -#define MIN_3D_ZOOM_FACTOR 1.0 -#define MAX_3D_ZOOM_FACTOR 4.9 -#define MIN_2D_ZOOM_FACTOR 5.0 -#define MAX_2D_ZOOM_FACTOR 16.0 - -#define MAX_CAMERA_DISTANCE 10.0 - -#define ROUND(a) ((a < 0) ? ((int)((a - 0.05) * 10) * 0.1) : ((int)((a + 0.05) * 10) * 0.1)) - -typedef struct _mat3 -{ - float m[9]; -} mat3; - -typedef struct _vec4 -{ - float x; - float y; - float z; - float w; -} vec4; - -typedef struct _vec2 -{ - float x; - float y; -} vec2; - -typedef struct _vec3 -{ - float x; - float y; - float z; -} vec3; - -typedef struct _vertex -{ - vec3 position; - vec3 normal; - vec3 tangent; - vec4 color; - vec3 texcoord; -} vertex; - -typedef enum _Map_Dimension_State -{ - MAP_DIMENSION_STATE_2D = 0, - MAP_DIMENSION_STATE_3D -} Map_Dimension_State; - -static Evas *evas = NULL; -static Evas_Object *win = NULL; -static Evas_Object *bg = NULL; -static Evas_Object *image = NULL; -static Evas_Object *map = NULL; -static Evas_Object *normal_map = NULL; -static Evas_Object *control_layout = NULL; -static Evas_Object *hoversel = NULL; -static Evas_Object *rotation_toggle = NULL; -static Evas_Object *light_toggle = NULL; -static Evas_Object *zoom_slider = NULL; -static Evas_Object *menu = NULL; -static Elm_Object_Item *menu_it = NULL; -static Ecore_Animator *animator = NULL; - -static Evas_Canvas3D_Scene *scene = NULL; -static Evas_Canvas3D_Node *root_node = NULL; -static Evas_Canvas3D_Node *camera_node = NULL; -static Evas_Canvas3D_Camera *camera = NULL; -static Evas_Canvas3D_Node *light_node = NULL; -static Evas_Canvas3D_Light *light = NULL; -static Evas_Canvas3D_Node *mesh_node = NULL; -static Evas_Canvas3D_Mesh *mesh = NULL; -static Evas_Canvas3D_Material *material = NULL; -static Evas_Canvas3D_Texture *texture_diffuse = NULL; -static Evas_Canvas3D_Texture *texture_normal = NULL; - -static int vertex_count = 0; -static int index_count = 0; -static vertex *vertices = NULL; -static unsigned short *indices = NULL; - -static vec2 mouse_down_pos; -static vec3 camera_pos; -static vec3 camera_up_vec; -static vec3 camera_right_vec; -static double zoom_factor = MIN_3D_ZOOM_FACTOR; -static Eina_Bool is_mouse_pressed = EINA_FALSE; -static Map_Dimension_State map_dimension_state = MAP_DIMENSION_STATE_3D; - -static const float skybox_vertices[] = -{ - /* Front */ - -40.0, 40.0, 40.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 0.99, 0.334, - 40.0, 40.0, 40.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 0.75, 0.334, - -40.0, -40.0, 40.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 0.99, 0.666, - 40.0, -40.0, 40.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 0.75, 0.666, - - /* Back */ - 40.0, 40.0, -40.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.50, 0.334, - -40.0, 40.0, -40.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.25, 0.334, - 40.0, -40.0, -40.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.50, 0.666, - -40.0, -40.0, -40.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.25, 0.666, - - /* Left */ - -40.0, 40.0, -40.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.25, 0.334, - -40.0, 40.0, 40.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.01, 0.334, - -40.0, -40.0, -40.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.25, 0.666, - -40.0, -40.0, 40.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.01, 0.666, - - /* Right */ - 40.0, 40.0, 40.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.75, 0.334, - 40.0, 40.0, -40.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.50, 0.334, - 40.0, -40.0, 40.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.75, 0.666, - 40.0, -40.0, -40.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.50, 0.666, - - /* Top */ - -40.0, 40.0, -40.0, 0.0, -1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.25, 0.334, - 40.0, 40.0, -40.0, 0.0, -1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.50, 0.334, - -40.0, 40.0, 40.0, 0.0, -1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.25, 0.01, - 40.0, 40.0, 40.0, 0.0, -1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.50, 0.01, - - /* Bottom */ - 40.0, -40.0, -40.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.50, 0.666, - -40.0, -40.0, -40.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.25, 0.666, - 40.0, -40.0, 40.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.50, 0.99, - -40.0, -40.0, 40.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.25, 0.99, -}; - -static const unsigned short skybox_indices[] = -{ - /* Front */ - 0, 1, 2, 2, 1, 3, - - /* Back */ - 4, 5, 6, 6, 5, 7, - - /* Left */ - 8, 9, 10, 10, 9, 11, - - /* Right */ - 12, 13, 14, 14, 13, 15, - - /* Top */ - 16, 17, 18, 18, 17, 19, - - /* Bottom */ - 20, 21, 22, 22, 21, 23 -}; - -static void zoom_factor_set(double new_zoom_factor); - -static inline void -vec3_scale(vec3 *out, - const vec3 *v, - const double scale) -{ - out->x = scale * v->x; - out->y = scale * v->y; - out->z = scale * v->z; -} - -static inline void -vec3_normalize(vec3 *out, - const vec3 *vec) -{ - double length = sqrt(vec->x * vec->x + vec->y * vec->y + vec->z * vec->z); - - out->x = vec->x / length; - out->y = vec->y / length; - out->z = vec->z / length; -} - -static inline void -mat3_multiply_vec3(vec3 *out, - const mat3 *mat, - const vec3 *vec) -{ - out->x = mat->m[0] * vec->x + mat->m[1] * vec->y + mat->m[2] * vec->z; - out->y = mat->m[3] * vec->x + mat->m[4] * vec->y + mat->m[5] * vec->z; - out->z = mat->m[6] * vec->x + mat->m[7] * vec->y + mat->m[8] * vec->z; -} - -static inline void -vec3_rotate_angle_axis(vec3 *out, - const vec3 *vec, - const double radian, - const vec3 *axis) -{ - mat3 mat; - double cos_r = cos(radian); - double sin_r = sin(radian); - double one_minus_cos_r = 1.0 - cos_r; - - mat.m[0] = cos_r + one_minus_cos_r * (axis->x * axis->x); - mat.m[1] = (-axis->z * sin_r) + one_minus_cos_r * (axis->x * axis->y); - mat.m[2] = (axis->y * sin_r) + one_minus_cos_r * (axis->x * axis->z); - - mat.m[3] = (axis->z * sin_r) + one_minus_cos_r * (axis->x * axis->y); - mat.m[4] = cos_r + one_minus_cos_r * (axis->y * axis->y); - mat.m[5] = (-axis->x * sin_r) + one_minus_cos_r * (axis->y * axis->z); - - mat.m[6] = (-axis->y * sin_r) + one_minus_cos_r * (axis->x * axis->z); - mat.m[7] = (axis->x * sin_r) + one_minus_cos_r * (axis->y * axis->z); - mat.m[8] = cos_r + one_minus_cos_r * (axis->z * axis->z); - - mat3_multiply_vec3(out, &mat, vec); -} - -static Eina_Bool -animate_scene(void *data) -{ - static float angle = 0.0f; - - angle += 0.05; - - evas_canvas3d_node_orientation_angle_axis_set((Evas_Canvas3D_Node *)data, angle, 0.0, 1.0, 0.0); - - /* Rotate */ - if (angle > 360.0) - angle -= 360.0f; - - return EINA_TRUE; -} - -static void -sphere_init(int precision) -{ - int i, j; - vertex *v; - unsigned short *idx; - - vertex_count = (precision + 1) * (precision + 1); - index_count = precision * precision * 6; - - /* Allocate buffer. */ - vertices = malloc(sizeof(vertex) * vertex_count); - indices = malloc(sizeof(unsigned short) * index_count); - - for (i = 0; i <= precision; i++) - { - double lati = M_PI * ((double)i / (double)precision); - double y = cos(lati); - double r = fabs(sin(lati)); - - for (j = 0; j <= precision; j++) - { - double longi = (M_PI * 2.0) * ((double)j / (double)precision); - v = &vertices[i * (precision + 1) + j]; - - if (j == 0 || j == precision) v->position.x = 0.0; - else v->position.x = r * sin(longi); - - v->position.y = y; - - if (j == 0 || j == precision) v->position.z = r; - else v->position.z = r * cos(longi); - - v->normal = v->position; - - if (v->position.x > 0.0) - { - v->tangent.x = -v->normal.y; - v->tangent.y = v->normal.x; - v->tangent.z = v->normal.z; - } - else - { - v->tangent.x = v->normal.y; - v->tangent.y = -v->normal.x; - v->tangent.z = v->normal.z; - } - - v->color.x = 1.0; - v->color.y = 1.0; - v->color.z = 1.0; - v->color.w = 1.0; - - if (j == precision) v->texcoord.x = 1.0; - else if (j == 0) v->texcoord.x = 0.0; - else v->texcoord.x = (double)j / (double)precision; - - if (i == precision) v->texcoord.y = 1.0; - else if (i == 0) v->texcoord.y = 0.0; - else v->texcoord.y = (double)i / (double)precision; - } - } - - idx = &indices[0]; - - for (i = 0; i < precision; i++) - { - for (j = 0; j < precision; j++) - { - *idx++ = i * (precision + 1) + j; - *idx++ = i * (precision + 1) + j + 1; - *idx++ = (i + 1) * (precision + 1) + j; - - *idx++ = (i + 1) * (precision + 1) + j; - *idx++ = i * (precision + 1) + j + 1; - *idx++ = (i + 1) * (precision + 1) + j + 1; - } - } - - for (i = 0; i < index_count; i += 3) - { - vertex *v0 = &vertices[indices[i + 0]]; - vertex *v1 = &vertices[indices[i + 1]]; - vertex *v2 = &vertices[indices[i + 2]]; - - vec3 e1, e2; - float du1, du2, dv1, dv2, f; - vec3 tangent; - - e1.x = v1->position.x - v0->position.x; - e1.y = v1->position.y - v0->position.y; - e1.z = v1->position.z - v0->position.z; - - e2.x = v2->position.x - v0->position.x; - e2.y = v2->position.y - v0->position.y; - e2.z = v2->position.z - v0->position.z; - - du1 = v1->texcoord.x - v0->texcoord.x; - dv1 = v1->texcoord.y - v0->texcoord.y; - - du2 = v2->texcoord.x - v0->texcoord.x; - dv2 = v2->texcoord.y - v0->texcoord.y; - - f = 1.0 / (du1 * dv2 - du2 * dv1); - - tangent.x = f * (dv2 * e1.x - dv1 * e2.x); - tangent.y = f * (dv2 * e1.y - dv1 * e2.y); - tangent.z = f * (dv2 * e1.z - dv1 * e2.z); - - v0->tangent = tangent; - } - - for (i = 0; i <= precision; i++) - { - for (j = 0; j <= precision; j++) - { - if (j == precision) - { - v = &vertices[i * (precision + 1) + j]; - v->tangent = vertices[i * (precision + 1)].tangent; - } - } - } -} - -static void -sphere_fini(void) -{ - if (vertices) - free(vertices); - - if (indices) - free(indices); -} - -static void -change_to_2d_map(void) -{ - if (map_dimension_state == MAP_DIMENSION_STATE_2D) return; - map_dimension_state = MAP_DIMENSION_STATE_2D; - - elm_object_style_set(map, "default"); - elm_scroller_policy_set - (map, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO); - elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL); - elm_map_paused_set(map, EINA_TRUE); - - evas_canvas3d_texture_source_visible_set(texture_diffuse, EINA_TRUE); - - evas_object_hide(image); - - elm_slider_unit_format_set(zoom_slider, "X%1.0f"); - elm_slider_indicator_format_set(zoom_slider, "%1.0f"); - elm_slider_min_max_set(zoom_slider, MIN_2D_ZOOM_FACTOR, MAX_2D_ZOOM_FACTOR); -} - -static void -change_to_3d_map(void) -{ - if (map_dimension_state == MAP_DIMENSION_STATE_3D) return; - map_dimension_state = MAP_DIMENSION_STATE_3D; - - elm_object_style_set(map, "evas3d"); - elm_scroller_policy_set - (map, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); - elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FILL); - - evas_object_show(image); - - elm_slider_unit_format_set(zoom_slider, "X%1.1f"); - elm_slider_indicator_format_set(zoom_slider, "%1.1f"); - elm_slider_min_max_set(zoom_slider, MIN_3D_ZOOM_FACTOR, MAX_3D_ZOOM_FACTOR); -} - -static void -zoom_factor_set(double new_zoom_factor) -{ - double cur_zoom_factor; - double s, t; - double lon, lat; - vec3 camera_pos_unit_vec; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Evas_Coord src_x, src_y; - Evas_Coord src_size; - - cur_zoom_factor = zoom_factor; - zoom_factor = ROUND(new_zoom_factor); - - if (cur_zoom_factor == zoom_factor) return; - - /* 2D Zoom */ - if (zoom_factor >= MIN_2D_ZOOM_FACTOR) - { - /* Transition from 3D to 2D */ - if (cur_zoom_factor < MIN_2D_ZOOM_FACTOR) - { - zoom_factor = MIN_2D_ZOOM_FACTOR; - evas_canvas3d_scene_pick(scene, IMG_SIZE / 2, IMG_SIZE / 2, &n, &m, &s, &t); - src_size = IMG_SIZE * cur_zoom_factor; - src_x = (Evas_Coord)(src_size * s); - src_y = (Evas_Coord)(src_size * t); - elm_map_canvas_to_region_convert(map, src_x, src_y, &lon, &lat); - - change_to_2d_map(); - evas_object_resize(map, IMG_SIZE, IMG_SIZE); - elm_map_zoom_set(map, (int)zoom_factor); - elm_map_region_show(map, lon, lat); - } - else - elm_map_zoom_set(map, (int)zoom_factor); - } - /* 3D Zoom */ - else - { - if (zoom_factor < MIN_3D_ZOOM_FACTOR) - zoom_factor = MIN_3D_ZOOM_FACTOR; - - /* Transition from 2D to 3D */ - if (cur_zoom_factor >= MIN_2D_ZOOM_FACTOR) - { - change_to_3d_map(); - } - - /* Update texture source. */ - src_size = IMG_SIZE * zoom_factor; - evas_object_resize(map, src_size, src_size); - - /* Apply updated texture source. */ - texture_diffuse = efl_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); - evas_canvas3d_texture_source_set(texture_diffuse, map); - evas_canvas3d_texture_source_visible_set(texture_diffuse, EINA_FALSE); - - evas_canvas3d_material_texture_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture_diffuse); - - /* Update camera position. */ - vec3_normalize(&camera_pos_unit_vec, &camera_pos); - camera_pos.x = (camera_pos_unit_vec.x * MAX_CAMERA_DISTANCE) / zoom_factor; - camera_pos.y = (camera_pos_unit_vec.y * MAX_CAMERA_DISTANCE) / zoom_factor; - camera_pos.z = (camera_pos_unit_vec.z * MAX_CAMERA_DISTANCE) / zoom_factor; - - evas_canvas3d_node_position_set(camera_node, camera_pos.x, camera_pos.y, camera_pos.z); - } - - /* Update zoom slider. */ - elm_slider_value_set(zoom_slider, zoom_factor); -} - -static void -zoom_in_cb(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - zoom_factor_set(zoom_factor + 1); -} - -static void -zoom_out_cb(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - zoom_factor_set(zoom_factor - 1); -} - -static void -zoom_to_2d_map_cb(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - double s, t; - double lon, lat; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Evas_Coord src_x, src_y; - Evas_Coord src_size; - - if (map_dimension_state == MAP_DIMENSION_STATE_2D) return; - - evas_canvas3d_scene_pick(scene, mouse_down_pos.x, mouse_down_pos.y, &n, &m, &s, &t); - src_size = (Evas_Coord)(IMG_SIZE * zoom_factor); - src_x = (Evas_Coord)(src_size * s); - src_y = (Evas_Coord)(src_size * t); - elm_map_canvas_to_region_convert(map, src_x, src_y, &lon, &lat); - - zoom_factor_set(MIN_2D_ZOOM_FACTOR); - - elm_map_region_show(map, lon, lat); -} - -static void -zoom_to_3d_map_cb(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - if (map_dimension_state == MAP_DIMENSION_STATE_3D) return; - - zoom_factor_set(MAX_3D_ZOOM_FACTOR); -} - -static void -submenu_zoom_add(Elm_Object_Item *parent) -{ - if (!parent) return; - - elm_menu_item_add(menu, parent, NULL, "Zoom in", zoom_in_cb, NULL); - elm_menu_item_add(menu, parent, NULL, "Zoom out", zoom_out_cb, NULL); - elm_menu_item_add(menu, parent, NULL, "Zoom to 2D map", zoom_to_2d_map_cb, NULL); - elm_menu_item_add(menu, parent, NULL, "Zoom to 3D map", zoom_to_3d_map_cb, NULL); -} - -static void -submenu_info_add(Elm_Object_Item *parent) -{ - char buf[50]; - double s, t; - double lon, lat; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Evas_Coord src_x, src_y; - Evas_Coord src_size; - - if (!parent) return; - - if (map_dimension_state == MAP_DIMENSION_STATE_3D) - { - evas_canvas3d_scene_pick(scene, mouse_down_pos.x, mouse_down_pos.y, &n, &m, &s, &t); - src_size = (Evas_Coord) (IMG_SIZE * zoom_factor); - src_x = (Evas_Coord)(src_size * s); - src_y = (Evas_Coord)(src_size * t); - elm_map_canvas_to_region_convert(map, src_x, src_y, &lon, &lat); - } - else - { - elm_map_canvas_to_region_convert(map, mouse_down_pos.x, mouse_down_pos.y, &lon, &lat); - } - - snprintf(buf, sizeof(buf), "Longitude : %f", lon); - elm_menu_item_add(menu, parent, NULL, buf, NULL, NULL); - - snprintf(buf, sizeof(buf), "Latitude : %f", lat); - elm_menu_item_add(menu, parent, NULL, buf, NULL, NULL); -} - -static void -map_zoom_change_cb(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - int cur_zoom_factor; - - if (map_dimension_state == MAP_DIMENSION_STATE_3D) return; - - cur_zoom_factor = elm_map_zoom_get(map); - - if (elm_map_paused_get(map)) - elm_map_paused_set(map, EINA_FALSE); - - zoom_factor_set(cur_zoom_factor); -} - -static void -map_mouse_down_cb(void *data EINA_UNUSED, - Evas *e EINA_UNUSED, - Evas_Object *o, - void *event_info) -{ - Evas_Event_Mouse_Down *ev = event_info; - Evas_Coord x, y, w, h; - Evas_Coord obj_x, obj_y; - int scene_w, scene_h; - double scene_x, scene_y; - double s, t; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Eina_Bool pick; - - mouse_down_pos.x = ev->canvas.x; - mouse_down_pos.y = ev->canvas.y; - - evas_object_geometry_get(o, &x, &y, &w, &h); - - obj_x = ev->canvas.x - x; - obj_y = ev->canvas.y - y; - - evas_canvas3d_scene_size_get(scene, &scene_w, &scene_h); - - scene_x = obj_x * scene_w / (double)w; - scene_y = obj_y * scene_h / (double)h; - - pick = evas_canvas3d_scene_pick(scene, scene_x, scene_y, &n, &m, &s, &t); - if (pick) - printf("Picked : "); - else - printf("Not picked : "); - - printf("output(%d, %d) canvas(%d, %d) object(%d, %d) scene(%f, %f) texcoord(%f, %f) " - "node(%p) mesh(%p)\n", - ev->output.x, ev->output.y, - ev->canvas.x, ev->canvas.y, - obj_x, obj_y, - scene_x, scene_y, - s, t, n, m); - - if (ev->button == 3) - { - if (!menu) - { - menu = elm_menu_add(o); - elm_menu_parent_set(menu, o); - menu_it = elm_menu_item_add(menu, NULL, "", "Zoom", NULL, NULL); - submenu_zoom_add(menu_it); - menu_it = elm_menu_item_add(menu, NULL, "", "Info", NULL, NULL); - } - - elm_menu_item_subitems_clear(menu_it); - submenu_info_add(menu_it); - - elm_menu_move(menu, ev->canvas.x, ev->canvas.y); - evas_object_show(menu); - } - -} - -static void -mouse_down_cb(void *data EINA_UNUSED, - Evas *e EINA_UNUSED, - Evas_Object *o, - void *event_info) -{ - Evas_Event_Mouse_Down *ev = event_info; - Evas_Coord x, y, w, h; - Evas_Coord obj_x, obj_y; - int scene_w, scene_h; - double scene_x, scene_y; - double s, t; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Eina_Bool pick; - - mouse_down_pos.x = ev->canvas.x; - mouse_down_pos.y = ev->canvas.y; - - /* Stop rotating earth. */ - if (animator) - { - ecore_animator_del(animator); - animator = NULL; - } - - evas_object_geometry_get(o, &x, &y, &w, &h); - - obj_x = ev->canvas.x - x; - obj_y = ev->canvas.y - y; - - evas_canvas3d_scene_size_get(scene, &scene_w, &scene_h); - - scene_x = obj_x * scene_w / (double)w; - scene_y = obj_y * scene_h / (double)h; - - pick = evas_canvas3d_scene_pick(scene, scene_x, scene_y, &n, &m, &s, &t); - if (pick) - printf("Picked : "); - else - printf("Not picked : "); - - printf("output(%d, %d) canvas(%d, %d) object(%d, %d) scene(%f, %f) texcoord(%f, %f) " - "node(%p) mesh(%p)\n", - ev->output.x, ev->output.y, - ev->canvas.x, ev->canvas.y, - obj_x, obj_y, - scene_x, scene_y, - s, t, n, m); - - if (ev->button == 1) - is_mouse_pressed = EINA_TRUE; - else if (ev->button == 3) - { - elm_check_state_set(rotation_toggle, EINA_FALSE); - if (!menu) - { - menu = elm_menu_add(o); - elm_menu_parent_set(menu, o); - menu_it = elm_menu_item_add(menu, NULL, "", "Zoom", NULL, NULL); - submenu_zoom_add(menu_it); - menu_it = elm_menu_item_add(menu, NULL, "", "Info", NULL, NULL); - } - - elm_menu_item_subitems_clear(menu_it); - submenu_info_add(menu_it); - - elm_menu_move(menu, ev->canvas.x, ev->canvas.y); - evas_object_show(menu); - } -} - -static void -mouse_move_cb(void *data EINA_UNUSED, - Evas *e EINA_UNUSED, - Evas_Object *o EINA_UNUSED, - void *event_info) -{ - Evas_Event_Mouse_Move *ev = event_info; - double distance_to_origin; - double radian_camera_up_axis, radian_camera_right_axis; - vec3 camera_pos_unit_vec; - - if ((ev->buttons == 1) && is_mouse_pressed) - { - radian_camera_up_axis = (ev->prev.canvas.x - ev->cur.canvas.x) * 0.01; - radian_camera_right_axis = (ev->prev.canvas.y - ev->cur.canvas.y) * 0.01; - - distance_to_origin = sqrt(pow(camera_pos.x, 2) + pow(camera_pos.y, 2) + pow(camera_pos.z, 2)); - - /* Update camera position, up vector and right vector. */ - vec3_rotate_angle_axis(&camera_pos, &camera_pos, radian_camera_up_axis, &camera_up_vec); - vec3_rotate_angle_axis(&camera_right_vec, &camera_right_vec, radian_camera_up_axis, &camera_up_vec); - vec3_normalize(&camera_right_vec, &camera_right_vec); - - vec3_rotate_angle_axis(&camera_pos, &camera_pos, radian_camera_right_axis, &camera_right_vec); - vec3_rotate_angle_axis(&camera_up_vec, &camera_up_vec, radian_camera_right_axis, &camera_right_vec); - vec3_normalize(&camera_up_vec, &camera_up_vec); - vec3_normalize(&camera_pos_unit_vec, &camera_pos); - vec3_scale(&camera_pos, &camera_pos_unit_vec, distance_to_origin); - - evas_canvas3d_node_position_set(camera_node, camera_pos.x, camera_pos.y, camera_pos.z); - evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z); - - if (elm_check_state_get(light_toggle)) - { - /* Update light position as the same as camera position. */ - evas_canvas3d_node_position_set(light_node, camera_pos.x, camera_pos.y, camera_pos.z); - evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z); - } - } -} - -static void -mouse_up_cb(void *data EINA_UNUSED, - Evas *e EINA_UNUSED, - Evas_Object *o, - void *event_info) -{ - Evas_Event_Mouse_Up *ev = event_info; - Evas_Coord x, y, w, h; - Evas_Coord obj_x, obj_y; - int scene_w, scene_h; - double scene_x, scene_y; - double s, t; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Eina_Bool pick; - - evas_object_geometry_get(o, &x, &y, &w, &h); - - obj_x = ev->canvas.x - x; - obj_y = ev->canvas.y - y; - - evas_canvas3d_scene_size_get(scene, &scene_w, &scene_h); - - scene_x = obj_x * scene_w / (double)w; - scene_y = obj_y * scene_h / (double)h; - - pick = evas_canvas3d_scene_pick(scene, scene_x, scene_y, &n, &m, &s, &t); - if (pick) - printf("Picked : "); - else - printf("Not picked : "); - - printf("output(%d, %d) canvas(%d, %d) object(%d, %d) scene(%f, %f) texcoord(%f, %f) " - "node(%p) mesh(%p)\n", - ev->output.x, ev->output.y, - ev->canvas.x, ev->canvas.y, - obj_x, obj_y, - scene_x, scene_y, - s, t, n, m); - - /* Move camera position. */ - if (ev->button == 1) - is_mouse_pressed = EINA_FALSE; - - if (elm_check_state_get(rotation_toggle)) - { - /* Restart rotating earth. */ - animator = ecore_animator_add(animate_scene, mesh_node); - } -} - -static void -mouse_wheel_cb(void *data EINA_UNUSED, - Evas *e EINA_UNUSED, - Evas_Object *o EINA_UNUSED, - void *event_info) -{ - Evas_Event_Mouse_Wheel *ev = event_info; - double new_zoom_factor; - - if (map_dimension_state == MAP_DIMENSION_STATE_2D) return; - - new_zoom_factor = zoom_factor - (ev->z * 0.1); - zoom_factor_set(new_zoom_factor); -} - -static void -skybox_setup(void) -{ - Evas_Canvas3D_Node *skybox_mesh_node; - Evas_Canvas3D_Mesh *skybox_mesh; - Evas_Canvas3D_Material *skybox_material; - Evas_Canvas3D_Texture *skybox_texture_diffuse; - Evas_Object *skybox_image; - char buf[PATH_MAX]; - - skybox_mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, evas); - evas_canvas3d_mesh_vertex_count_set(skybox_mesh, 24); - evas_canvas3d_mesh_frame_add(skybox_mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_set(skybox_mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &skybox_vertices[0]); - evas_canvas3d_mesh_frame_vertex_data_set(skybox_mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 12 * sizeof(float), &skybox_vertices[3]); - evas_canvas3d_mesh_frame_vertex_data_set(skybox_mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 12 * sizeof(float), &skybox_vertices[6]); - evas_canvas3d_mesh_frame_vertex_data_set(skybox_mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 12 * sizeof(float), &skybox_vertices[10]); - evas_canvas3d_mesh_index_data_set(skybox_mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &skybox_indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(skybox_mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - - /* Set skybox texture source image. */ - skybox_image = elm_image_add(win); - snprintf(buf, sizeof(buf), "%s/images/space.png", elm_app_data_dir_get()); - elm_image_file_set(skybox_image, buf, NULL); - evas_object_resize(skybox_image, SKYBOX_IMG_WIDTH, SKYBOX_IMG_HEIGHT); - evas_object_show(skybox_image); - - /* Set skybox texture material. */ - skybox_material = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); - evas_canvas3d_mesh_frame_material_set(skybox_mesh, 0, skybox_material); - - skybox_texture_diffuse = efl_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); - - evas_canvas3d_texture_source_set(skybox_texture_diffuse, skybox_image); - evas_canvas3d_texture_source_visible_set(skybox_texture_diffuse, EINA_FALSE); - - evas_canvas3d_material_texture_set(skybox_material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, skybox_texture_diffuse); - evas_canvas3d_material_enable_set(skybox_material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(skybox_material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(skybox_material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_color_set(skybox_material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.1, 0.1, 0.1, 1.0); - evas_canvas3d_material_color_set(skybox_material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_color_set(skybox_material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.1, 0.1, 0.1, 1.0); - evas_canvas3d_material_shininess_set(skybox_material, 50.0); - - skybox_mesh_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH)); - evas_canvas3d_node_member_add(root_node, skybox_mesh_node); - evas_canvas3d_node_mesh_add(skybox_mesh_node, skybox_mesh); - evas_canvas3d_mesh_shader_mode_set(skybox_mesh, EVAS_CANVAS3D_SHADER_MODE_DIFFUSE); -} - -static void -texture_source_setup(void) -{ - char buf[PATH_MAX]; - - snprintf(buf, sizeof(buf), "%s/examples/evas3d_map_example.edj", elm_app_data_dir_get()); - elm_theme_extension_add(NULL, buf); - - /* Add a map object for the use of the texture source. */ - map = elm_map_add(win); - elm_object_style_set(map, "evas3d"); - elm_map_source_set(map, ELM_MAP_SOURCE_TYPE_TILE, "MapQuest"); - elm_scroller_policy_set - (map, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); - elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FILL); - evas_object_resize(map, IMG_SIZE, IMG_SIZE); - evas_object_show(map); - - evas_object_smart_callback_add(map, "zoom,change", - map_zoom_change_cb, NULL); - evas_object_event_callback_add(map, EVAS_CALLBACK_MOUSE_DOWN, - map_mouse_down_cb, map); - - /* Add a normal map object for the use of the normal texture source. */ - normal_map = elm_image_add(win); - snprintf(buf, sizeof(buf), "%s/images/earth_normal.png", elm_app_data_dir_get()); - elm_image_file_set(normal_map, buf, NULL); - evas_object_resize(normal_map, IMG_SIZE, IMG_SIZE); - evas_object_show(normal_map); -} - -static void -camera_setup(void) -{ - /* Add the camera. */ - camera = efl_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); - evas_canvas3d_camera_projection_perspective_set(camera, 60.0, 1.0, 1.0, 100.0); - - /* Set camera position. */ - camera_pos.x = 0.0; - camera_pos.y = 0.0; - camera_pos.z = MAX_CAMERA_DISTANCE; - - /* Set camera up vector. */ - camera_up_vec.x = 0.0; - camera_up_vec.y = 1.0; - camera_up_vec.z = 0.0; - - /* Set camera right vector. */ - camera_right_vec.x = 1.0; - camera_right_vec.y = 0.0; - camera_right_vec.z = 0.0; - - camera_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_CAMERA)); - evas_canvas3d_node_camera_set(camera_node, camera); - evas_canvas3d_node_position_set(camera_node, camera_pos.x, camera_pos.y, camera_pos.z); - evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z); - evas_canvas3d_node_member_add(root_node, camera_node); -} - -static void -light_setup(void) -{ - light = efl_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); - evas_canvas3d_light_ambient_set(light, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_specular_set(light, 0.2, 0.2, 0.2, 1.0); - - light_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_LIGHT)); - evas_canvas3d_node_light_set(light_node, light); - evas_canvas3d_node_position_set(light_node, 0.0, 0.0, MAX_CAMERA_DISTANCE); - evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - evas_canvas3d_node_member_add(root_node, light_node); -} - -static void -mesh_setup(void) -{ - /* Create a sphere mesh. */ - sphere_init(50); - - mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, evas); - evas_canvas3d_mesh_vertex_count_set(mesh, vertex_count); - evas_canvas3d_mesh_frame_add(mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, sizeof(vertex), &vertices[0].position); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, sizeof(vertex), &vertices[0].normal); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT, sizeof(vertex), &vertices[0].tangent); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, sizeof(vertex), &vertices[0].color); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, sizeof(vertex), &vertices[0].texcoord); - evas_canvas3d_mesh_index_data_set(mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - - material = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); - evas_canvas3d_mesh_frame_material_set(mesh, 0, material); - - texture_diffuse = efl_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); - evas_canvas3d_texture_source_set(texture_diffuse, map); - evas_canvas3d_texture_source_visible_set(texture_diffuse, EINA_FALSE); - - texture_normal = efl_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); - evas_canvas3d_texture_source_set(texture_normal, normal_map); - evas_canvas3d_texture_source_visible_set(texture_normal, EINA_FALSE); - - evas_canvas3d_material_texture_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, texture_diffuse); - evas_canvas3d_material_texture_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, texture_normal); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.1, 0.1, 0.1, 1.0); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.1, 0.1, 0.1, 1.0); - evas_canvas3d_material_shininess_set(material, 50.0); - - mesh_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH)); - evas_canvas3d_node_member_add(root_node, mesh_node); - evas_canvas3d_node_mesh_add(mesh_node, mesh); - evas_canvas3d_mesh_shader_mode_set(mesh, EVAS_CANVAS3D_SHADER_MODE_NORMAL_MAP); -} - -static void -hoversel_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - elm_map_source_set(map, ELM_MAP_SOURCE_TYPE_TILE, (char *)data); - zoom_factor_set(zoom_factor); -} - -static void -hoversel_setup(Evas_Object *parent) -{ - hoversel = elm_hoversel_add(parent); - - elm_hoversel_hover_parent_set(hoversel, parent); - elm_object_text_set(hoversel, "Map Sources"); - elm_hoversel_item_add(hoversel, "Mapnik", NULL, ELM_ICON_NONE, hoversel_cb, "Mapnik"); - elm_hoversel_item_add(hoversel, "CycleMap", NULL, ELM_ICON_NONE, hoversel_cb, "CycleMap"); - elm_hoversel_item_add(hoversel, "MapQuest", NULL, ELM_ICON_NONE, hoversel_cb, "MapQuest"); - - elm_object_part_content_set(parent, "elm.swallow.hoversel", hoversel); - evas_object_show(hoversel); -} - -static void -rotation_toggle_changed_cb(void *data EINA_UNUSED, - Evas_Object *obj, - void *event_info EINA_UNUSED) -{ - /* Stop rotating earth. */ - if (animator) - { - ecore_animator_del(animator); - animator = NULL; - } - if (elm_check_state_get(obj)) - { - /* Restart rotating earth. */ - animator = ecore_animator_add(animate_scene, mesh_node); - } -} - -static void -rotation_toggle_setup(Evas_Object *parent) -{ - rotation_toggle = elm_check_add(parent); - - elm_object_style_set(rotation_toggle, "toggle"); - elm_object_text_set(rotation_toggle, "Earth Rotation"); - elm_object_part_text_set(rotation_toggle, "on", "ON"); - elm_object_part_text_set(rotation_toggle, "off", "OFF"); - elm_check_state_set(rotation_toggle, EINA_TRUE); - - elm_object_part_content_set(parent, "elm.swallow.rotation_toggle", rotation_toggle); - evas_object_show(rotation_toggle); - - evas_object_smart_callback_add(rotation_toggle, "changed", rotation_toggle_changed_cb, NULL); -} - -static void -light_toggle_changed_cb(void *data EINA_UNUSED, - Evas_Object *obj, - void *event_info EINA_UNUSED) -{ - if (elm_check_state_get(obj)) - { - /* Set light position as the same as camera position. */ - evas_canvas3d_node_position_set(light_node, camera_pos.x, camera_pos.y, camera_pos.z); - evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, camera_up_vec.z); - } - else - { - /* Set light position to default position. */ - evas_canvas3d_node_position_set(light_node, 0.0, 0.0, MAX_CAMERA_DISTANCE); - evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - } -} - -static void -light_toggle_setup(Evas_Object *parent) -{ - light_toggle = elm_check_add(parent); - - elm_object_style_set(light_toggle, "toggle"); - elm_object_text_set(light_toggle, "Light on Camera"); - elm_object_part_text_set(light_toggle, "on", "ON"); - elm_object_part_text_set(light_toggle, "off", "OFF"); - elm_check_state_set(light_toggle, EINA_FALSE); - - elm_object_part_content_set(parent, "elm.swallow.light_toggle", light_toggle); - evas_object_show(light_toggle); - - evas_object_smart_callback_add(light_toggle, "changed", light_toggle_changed_cb, NULL); -} - - -static void -slider_changed_cb(void *data EINA_UNUSED, - Evas_Object *obj, - void *event_info EINA_UNUSED) -{ - double new_zoom_factor = ROUND(elm_slider_value_get(obj)); - - if (new_zoom_factor == zoom_factor) return; - - zoom_factor_set(new_zoom_factor); -} - -static void -zoom_slider_setup(Evas_Object *parent) -{ - zoom_slider = elm_slider_add(parent); - - elm_object_text_set(zoom_slider, "Zoom Factor"); - elm_slider_unit_format_set(zoom_slider, "X%1.1f"); - elm_slider_indicator_format_set(zoom_slider, "%1.1f"); - elm_slider_span_size_set(zoom_slider, 100); - elm_slider_min_max_set(zoom_slider, MIN_3D_ZOOM_FACTOR, MAX_3D_ZOOM_FACTOR); - - elm_object_part_content_set(parent, "elm.swallow.zoom_slider", zoom_slider); - evas_object_show(zoom_slider); - - evas_object_smart_callback_add(zoom_slider, "changed", slider_changed_cb, NULL); -} - -EAPI_MAIN int -elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) -{ - char buf[PATH_MAX]; - - elm_app_info_set(elm_main, "elementary", "examples/evas3d_map_example.edj"); - - elm_config_accel_preference_set("3d"); - - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); - - /* Add a window. */ - win = elm_win_util_standard_add("elm_map_evas3d", "Elm_Map_Evas3d"); - elm_win_autodel_set(win, EINA_TRUE); - - evas = evas_object_evas_get(win); - - /* Add a background. */ - bg = evas_object_rectangle_add(evas); - evas_object_color_set(bg, 0, 0, 0, 255); - evas_object_resize(bg, WIDTH, HEIGHT); - evas_object_show(bg); - - /* Add an image which shows a scene. */ - image = efl_add(EFL_CANVAS_SCENE3D_CLASS, evas); - evas_object_resize(image, WIDTH, HEIGHT); - evas_object_show(image); - - evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_DOWN, mouse_down_cb, NULL); - evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_MOVE, mouse_move_cb, NULL); - evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_UP, mouse_up_cb, NULL); - evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_WHEEL, mouse_wheel_cb, NULL); - - /* Add a scene object. */ - scene = efl_add(EVAS_CANVAS3D_SCENE_CLASS, evas); - - /* Add a root node for the scene. */ - root_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_NODE)); - - skybox_setup(); - texture_source_setup(); - camera_setup(); - light_setup(); - mesh_setup(); - - /* Set up scene. */ - evas_canvas3d_scene_root_node_set(scene, root_node); - evas_canvas3d_scene_camera_node_set(scene, camera_node); - evas_canvas3d_scene_size_set(scene, WIDTH, HEIGHT); - efl_canvas_scene3d_set(image, scene); - - /* Add a layout for controlers. */ - control_layout = elm_layout_add(win); - snprintf(buf, sizeof(buf), "%s/examples/evas3d_map_example.edj", elm_app_data_dir_get()); - elm_layout_file_set(control_layout, buf, "control_layout"); - evas_object_resize(control_layout, WIDTH, HEIGHT); - evas_object_show(control_layout); - - /* Set up controlers. */ - hoversel_setup(control_layout); - rotation_toggle_setup(control_layout); - light_toggle_setup(control_layout); - zoom_slider_setup(control_layout); - - /* Start rotating earth */ - animator = ecore_animator_add(animate_scene, mesh_node); - - evas_object_resize(win, WIDTH, HEIGHT); - evas_object_show(win); - - elm_run(); - sphere_fini(); - - return 0; -} -ELM_MAIN(); diff --git a/src/examples/elementary/evas3d_map_example.edc b/src/examples/elementary/evas3d_map_example.edc deleted file mode 100644 index 2d4573a788..0000000000 --- a/src/examples/elementary/evas3d_map_example.edc +++ /dev/null @@ -1,964 +0,0 @@ -#define FIXED_SIZE(_WIDTH, _HEIGHT) \ - min: _WIDTH _HEIGHT; max: _WIDTH _HEIGHT; fixed: 1 1; - -collections { -group { name: "control_layout"; - parts { - part { name: "base"; type: SPACER; - scale: 1; - description { state: "default" 0.0; - } - } - part { name: "control_bg"; type: SPACER; - scale: 1; - description { state: "default" 0.0; - min: 220 150; - max: 220 150; - fixed: 1 1; - align: 1.0 1.0; - rel1 { to: "base"; relative: 1.0 1.0; } - rel2 { to: "base"; relative: 1.0 1.0; } - } - } - part { name: "elm.swallow.hoversel"; type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - min: 200 20; - max: 200 20; - fixed: 1 1; - align: 0.0 0.0; - rel1 { to: "control_bg"; relative: 0.0 0.0; } - rel2 { to: "control_bg"; relative: 1.0 0.0; } - } - } - part { name: "hoversel_bottom_padding"; type: SPACER; - scale: 1; - description { state: "default" 0.0; - min: 200 10; - max: 200 10; - fixed: 1 1; - align: 0.0 0.0; - rel1 { to_x: "control_bg"; to_y: "elm.swallow.hoversel"; relative: 0.0 1.0; } - rel2 { to_x: "control_bg"; to_y: "elm.swallow.hoversel"; relative: 1.0 1.0; } - } - } - part { name: "elm.swallow.rotation_toggle"; type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - min: 200 30; - max: 200 30; - fixed: 1 1; - align: 0.0 0.0; - rel1 { to_x: "control_bg"; to_y: "hoversel_bottom_padding"; relative: 0.0 1.0; } - rel2 { to_x: "control_bg"; to_y: "hoversel_bottom_padding"; relative: 1.0 1.0; } - } - } - part { name: "elm.swallow.light_toggle"; type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - min: 200 30; - max: 200 30; - fixed: 1 1; - align: 0.0 0.0; - rel1 { to_x: "control_bg"; to_y: "elm.swallow.rotation_toggle"; relative: 0.0 1.0; } - rel2 { to_x: "control_bg"; to_y: "elm.swallow.rotation_toggle"; relative: 1.0 1.0; } - } - } - part { name: "elm.swallow.zoom_slider"; type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - min: 200 30; - max: 200 30; - fixed: 1 1; - align: 0.0 0.0; - rel1 { to_x: "control_bg"; to_y: "elm.swallow.light_toggle"; relative: 0.0 1.0; } - rel2 { to_x: "control_bg"; to_y: "elm.swallow.light_toggle"; relative: 1.0 1.0; } - } - } - } -} - -group { name: "elm/scroller/base/evas3d"; - data.item: "focus_highlight" "on"; - - parts { - program { - signal: "load"; source: ""; - script { - emit("reload", "elm"); - } - } -// vert bar //////////////////////////////////////////////////////////////// - part { name: "sb_vbar_show"; type: RECT; - description { state: "default" 0.0; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - part { name: "sb_vbar"; type: RECT; - scale: 1; - description { state: "default" 0.0; - fixed: 1 1; - min: 15 1; - align: 1.0 0.0; - rel1.relative: 1.0 0.0; - //rel1.offset: -1 0; - rel2.relative: 1.0 0.0; - rel2.to_y: "sb_hbar"; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - max: 0 99999; - } - } - part { name: "sb_vbar_base"; type: RECT; - clip_to: "sb_vbar"; - description { state: "default" 0.0; - color: 0 0 0 0; - rel1.relative: 0.0 1.0; - rel1.to: "sb_vbar_a1"; - rel2.relative: 1.0 0.0; - rel2.to: "sb_vbar_a2"; - fixed: 1 1; - } - } - part { name: "sb_vbar_p1"; type: RECT; - clip_to: "sb_vbar"; - description { state: "default" 0.0; - color: 0 0 0 0; - rel1.relative: 0.0 1.0; - rel1.to: "sb_vbar_a1"; - rel2.relative: 1.0 0.0; - rel2.to: "elm.dragable.vbar"; - fixed: 1 1; - } - } - part { name: "sb_vbar_p2"; type: RECT; - clip_to: "sb_vbar"; - description { state: "default" 0.0; - color: 0 0 0 0; - rel1.relative: 0.0 1.0; - rel1.to: "elm.dragable.vbar"; - rel2.relative: 1.0 0.0; - rel2.to: "sb_vbar_a2"; - fixed: 1 1; - } - } - part { name: "elm.dragable.vbar"; type: RECT; - clip_to: "sb_vbar"; - scale: 1; - dragable.x: 0 0 0; - dragable.y: 1 1 0; - dragable.confine: "sb_vbar_base"; - description { state: "default" 0.0; - fixed: 1 1; - min: 15 13; - rel1.relative: 0.5 0.5; - rel1.to: "sb_vbar_base"; - rel2.relative: 0.5 0.5; - rel2.to: "sb_vbar_base"; - color: 0 0 0 0; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "sb_vbar_a1"; type: RECT; - clip_to: "sb_vbar"; - description { state: "default" 0.0; - fixed: 1 1; - min: 15 15; - align: 0.5 0.0; - aspect: 1.0 1.0; aspect_preference: HORIZONTAL; - color: 0 0 0 0; - rel1.to: "sb_vbar"; - rel2.to: "sb_vbar"; - rel2.relative: 1.0 0.0; - //rel2.offset: -1 0; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - } - } - part { name: "sb_vbar_a2"; type: RECT; - clip_to: "sb_vbar"; - description { state: "default" 0.0; - fixed: 1 1; - min: 15 15; - align: 0.5 1.0; - aspect: 1.0 1.0; aspect_preference: HORIZONTAL; - color: 0 0 0 0; - rel1.to: "sb_vbar"; - //rel1.offset: 0 -1; - rel1.relative: 0.0 1.0; - rel2.to: "sb_vbar"; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - } - } - program { - signal: "elm,action,show,vbar"; source: "elm"; - action: STATE_SET "default" 0.0; - target: "sb_vbar"; - target: "sb_vbar_show"; - target: "elm.dragable.vbar"; - target: "sb_vbar_a1"; - target: "sb_vbar_a2"; - } - program { - signal: "elm,action,hide,vbar"; source: "elm"; - action: STATE_SET "hidden" 0.0; - target: "sb_vbar"; - target: "sb_vbar_show"; - target: "elm.dragable.vbar"; - target: "sb_vbar_a1"; - target: "sb_vbar_a2"; - } - program { - signal: "mouse,down,1*"; source: "sb_vbar_a1"; - action: STATE_SET "clicked" 0.0; - target: "arrow1_vbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_vbar_a1"; - action: DRAG_VAL_STEP 0.0 -1.0; - target: "elm.dragable.vbar"; - } - program { - signal: "mouse,up,1"; source: "sb_vbar_a1"; - action: STATE_SET "default" 0.0; - target: "arrow1_vbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_vbar_a2"; - action: STATE_SET "clicked" 0.0; - target: "arrow2_vbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_vbar_a2"; - action: DRAG_VAL_STEP 0.0 1.0; - target: "elm.dragable.vbar"; - } - program { - signal: "mouse,up,1"; source: "sb_vbar_a2"; - action: STATE_SET "default" 0.0; - target: "arrow2_vbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_vbar_p1"; - action: DRAG_VAL_PAGE 0.0 -1.0; - target: "elm.dragable.vbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_vbar_p2"; - action: DRAG_VAL_PAGE 0.0 1.0; - target: "elm.dragable.vbar"; - } - -// horiz bar ///////////////////////////////////////////////////////////// - part { name: "sb_hbar_show"; type: RECT; - description { state: "default" 0.0; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - part { name: "sb_hbar"; type: RECT; mouse_events: 0; - scale: 1; - description { state: "default" 0.0; - fixed: 1 1; - min: 1 15; - align: 0.0 1.0; - rel1.relative: 0.0 1.0; - //rel1.offset: 0 -1; - rel2.relative: 0.0 1.0; - rel2.to_x: "sb_vbar"; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - max: 99999 0; - } - } - part { name: "sb_hbar_base"; type: RECT; - clip_to: "sb_hbar"; - description { state: "default" 0.0; - color: 0 0 0 0; - rel1.relative: 1.0 0.0; - rel1.to: "sb_hbar_a1"; - rel2.relative: 0.0 1.0; - rel2.to: "sb_hbar_a2"; - fixed: 1 1; - } - } - part { name: "sb_hbar_p1"; type: RECT; - clip_to: "sb_hbar"; - description { state: "default" 0.0; - color: 0 0 0 0; - rel1.relative: 1.0 0.0; - rel1.to: "sb_hbar_a1"; - rel2.relative: 0.0 1.0; - rel2.to: "elm.dragable.hbar"; - fixed: 1 1; - } - } - part { name: "sb_hbar_p2"; type: RECT; - clip_to: "sb_hbar"; - description { state: "default" 0.0; - color: 0 0 0 0; - rel1.relative: 1.0 0.0; - rel1.to: "elm.dragable.hbar"; - rel2.relative: 0.0 1.0; - rel2.to: "sb_hbar_a2"; - fixed: 1 1; - } - } - part { name: "elm.dragable.hbar"; type: RECT; - clip_to: "sb_hbar"; - scale: 1; - dragable.x: 1 1 0; - dragable.y: 0 0 0; - dragable.confine: "sb_hbar_base"; - description { state: "default" 0.0; - fixed: 1 1; - min: 13 15; - rel1.relative: 0.5 0.5; - rel1.to: "sb_hbar_base"; - rel2.relative: 0.5 0.5; - rel2.to: "sb_hbar_base"; - color: 0 0 0 0; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "sb_hbar_a1"; type: RECT; - clip_to: "sb_hbar"; - description { state: "default" 0.0; - fixed: 1 1; - min: 15 15; - align: 0.0 0.5; - aspect: 1.0 1.0; aspect_preference: VERTICAL; - color: 0 0 0 0; - rel1.to: "sb_hbar"; - rel2.to: "sb_hbar"; - rel2.relative: 0.0 1.0; - //rel2.offset: 0 -1; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - } - } - part { name: "sb_hbar_a2"; type: RECT; - clip_to: "sb_hbar"; - description { state: "default" 0.0; - fixed: 1 1; - min: 15 15; - align: 1.0 0.5; - aspect: 1.0 1.0; aspect_preference: VERTICAL; - color: 0 0 0 0; - rel1.to: "sb_hbar"; - //rel1.offset: -1 0; - rel1.relative: 1.0 0.0; - rel2.to: "sb_hbar"; - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - min: 0 0; - } - } - program { - signal: "elm,action,show,hbar"; source: "elm"; - action: STATE_SET "default" 0.0; - target: "sb_hbar"; - target: "sb_hbar_show"; - target: "elm.dragable.hbar"; - target: "sb_hbar_a1"; - target: "sb_hbar_a2"; - } - program { - signal: "elm,action,hide,hbar"; source: "elm"; - action: STATE_SET "hidden" 0.0; - target: "sb_hbar"; - target: "sb_hbar_show"; - target: "elm.dragable.hbar"; - target: "sb_hbar_a1"; - target: "sb_hbar_a2"; - } - program { - signal: "mouse,down,1*"; source: "sb_hbar_a1"; - action: STATE_SET "clicked" 0.0; - target: "arrow1_hbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_hbar_a1"; - action: DRAG_VAL_STEP -1.0 0.0; - target: "elm.dragable.hbar"; - } - program { - signal: "mouse,up,1"; source: "sb_hbar_a1"; - action: STATE_SET "default" 0.0; - target: "arrow1_hbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_hbar_a2"; - action: STATE_SET "clicked" 0.0; - target: "arrow2_hbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_hbar_a2"; - action: DRAG_VAL_STEP 1.0 0.0; - target: "elm.dragable.hbar"; - } - program { - signal: "mouse,up,1"; source: "sb_hbar_a2"; - action: STATE_SET "default" 0.0; - target: "arrow2_hbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_hbar_p1"; - action: DRAG_VAL_PAGE -1.0 0.0; - target: "elm.dragable.hbar"; - } - program { - signal: "mouse,down,1*"; source: "sb_hbar_p2"; - action: DRAG_VAL_PAGE 1.0 0.0; - target: "elm.dragable.hbar"; - } - - part { name: "bg"; type: RECT; - description { state: "default" 0.0; - rel1.to: "elm.swallow.background"; - rel2.to: "elm.swallow.background"; -// color: 64 64 64 200; - color: 0 0 0 0; - color_class: "scroller_bg"; - } - } - part { name: "clipper"; type: RECT; - description { state: "default" 0.0; - rel1.to: "elm.swallow.background"; - rel2.to: "elm.swallow.background"; - } - } - part { name: "elm.swallow.background"; type: SWALLOW; - clip_to: "clipper"; - description { state: "default" 0.0; - //rel1.offset: 1 1; - rel2.relative: 0.0 0.0; - //rel2.offset: -2 -2; - rel2.to_x: "sb_vbar"; - rel2.to_y: "sb_hbar"; - } - } - part { name: "elm.swallow.content"; type: SWALLOW; - clip_to: "clipper"; - description { state: "default" 0.0; - //rel1.offset: 1 1; - rel2.relative: 0.0 0.0; - //rel2.offset: -2 -2; - rel2.to_x: "sb_vbar"; - rel2.to_y: "sb_hbar"; - } - } - part { name: "inset"; type: SPACER; - description { state: "default" 0.0; - rel1.to: "bg"; - //rel1.offset: -1 -1; - rel2.to: "bg"; - //rel2.offset: 0 0; - } - } - part { name: "shadow"; type: SPACER; - description { state: "default" 0.0; - rel1.to: "bg"; - rel2.to: "bg"; - } - } - part { name: "elm.swallow.overlay"; type: SWALLOW; - clip_to: "clipper"; - description { state: "default" 0.0; - rel1.to: "elm.swallow.content"; - rel2.to: "elm.swallow.content"; - } - } - part { name: "runner_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - rel1.to: "sb_vbar_base"; - rel2.to: "sb_vbar_base"; - min: 3 4; - max: 3 99999; - fixed: 1 1; - } - } - part { name: "runner_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - rel1.to: "sb_hbar_base"; - rel2.to: "sb_hbar_base"; - min: 4 3; - max: 99999 3; - fixed: 1 1; - } - } - part { name: "runner_vbar_clip"; type: RECT; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - min: 1 1; - max: 1 99999; - rel1.to: "runner_vbar"; - //rel1.offset: 0 1; - rel2.to: "runner_vbar"; - //rel2.offset: -1 -2; - fixed: 1 1; - } - } - part { name: "runner_hbar_clip"; type: RECT; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - min: 1 1; - max: 99999 1; - rel1.to: "runner_hbar"; - //rel1.offset: 1 0; - rel2.to: "runner_hbar"; - //rel2.offset: -2 -1; - fixed: 1 1; - } - } - - part { name: "arrow1_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - rel1.to: "sb_vbar_a1"; - rel2.to: "sb_vbar_a1"; - FIXED_SIZE(15, 15) - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "arrow2_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - rel1.to: "sb_vbar_a2"; - rel2.to: "sb_vbar_a2"; - FIXED_SIZE(15, 15) - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "shadow_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - //rel1.offset: -3 -2; - rel1.to: "base_vbar"; - //rel2.offset: 2 4; - rel2.to: "base_vbar"; - fixed: 1 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - //rel1.offset: -2 -2; - //rel2.offset: 1 1; - } - } - part { name: "glow_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - //rel1.offset: -3 -3; - rel1.to: "base_vbar"; - //rel2.offset: 2 2; - rel2.to: "base_vbar"; - fixed: 1 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "runner_glow_vbar"; type: SPACER; - clip_to: "runner_vbar_clip"; - description { state: "default" 0.0; - rel1.offset: 0 -30; - rel1.to_x: "runner_vbar_clip"; - rel1.to_y: "base_vbar"; - rel2.offset: -1 29; - rel2.to_x: "runner_vbar_clip"; - rel2.to_y: "base_vbar"; - fixed: 1 1; - } - } - part { name: "base_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - fixed: 1 1; - //rel1.offset: 2 0; - rel1.to: "elm.dragable.vbar"; - //rel2.offset: -3 -1; - rel2.to: "elm.dragable.vbar"; - min: 3 13; - fixed: 1 1; - } - } - part { name: "bevel_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - rel1.to: "base_vbar"; - rel2.to: "base_vbar"; - min: 3 3; - fixed: 1 1; - } - } - part { name: "center_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - rel1.to: "base_vbar"; - rel2.to: "base_vbar"; - FIXED_SIZE(3, 11) - } - } - part { name: "center_glow_vbar"; type: SPACER; - clip_to: "sb_vbar_show"; - description { state: "default" 0.0; - rel1.to: "center_vbar"; - rel2.to: "center_vbar"; - FIXED_SIZE(11, 17) - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - - part { name: "arrow1_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - rel1.to: "sb_hbar_a1"; - rel2.to: "sb_hbar_a1"; - FIXED_SIZE(15, 15) - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "arrow2_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - rel1.to: "sb_hbar_a2"; - rel2.to: "sb_hbar_a2"; - FIXED_SIZE(15, 15) - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "shadow_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - //rel1.offset: -3 -2; - rel1.to: "base_hbar"; - //rel2.offset: 2 4; - rel2.to: "base_hbar"; - fixed: 1 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - //rel1.offset: -2 -2; - //rel2.offset: 1 1; - } - } - part { name: "glow_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - //rel1.offset: -3 -3; - rel1.to: "base_hbar"; - //rel2.offset: 2 2; - rel2.to: "base_hbar"; - fixed: 1 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "runner_glow_hbar"; type: SPACER; - clip_to: "runner_hbar_clip"; - description { state: "default" 0.0; - rel1.offset: -30 0; - rel1.to_x: "base_hbar"; - rel1.to_y: "runner_hbar_clip"; - rel2.offset: 29 -1; - rel2.to_x: "base_hbar"; - rel2.to_y: "runner_hbar_clip"; - fixed: 1 1; - } - } - part { name: "base_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - fixed: 1 1; - //rel1.offset: 0 2; - rel1.to: "elm.dragable.hbar"; - //rel2.offset: -1 -3; - rel2.to: "elm.dragable.hbar"; - min: 13 3; - } - } - part { name: "bevel_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - rel1.to: "base_hbar"; - rel2.to: "base_hbar"; - min: 3 3; - fixed: 1 1; - } - } - part { name: "center_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - rel1.to: "base_hbar"; - rel2.to: "base_hbar"; - FIXED_SIZE(11, 3) - fixed: 1 1; - } - } - part { name: "center_glow_hbar"; type: SPACER; - clip_to: "sb_hbar_show"; - description { state: "default" 0.0; - rel1.to: "center_hbar"; - rel2.to: "center_hbar"; - FIXED_SIZE(17, 11) - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - } - } - part { name: "dim_effect"; type: RECT; mouse_events: 0; - description { state: "default" 0.0; - color: 0 0 0 0; - } - description { state: "effect" 0.0; - color: 50 50 50 255; - } - } - } - programs { - program { - signal: "mouse,down,1*"; source: "elm.dragable.vbar"; - action: STATE_SET "clicked" 0.0; - target: "elm.dragable.vbar"; - target: "shadow_vbar"; - target: "glow_vbar"; - target: "center_glow_vbar"; - } - program { - signal: "mouse,up,1"; source: "elm.dragable.vbar"; - action: STATE_SET "default" 0.0; - target: "elm.dragable.vbar"; - target: "shadow_vbar"; - target: "glow_vbar"; - target: "center_glow_vbar"; - } - program { - signal: "mouse,down,1*"; source: "elm.dragable.hbar"; - action: STATE_SET "clicked" 0.0; - target: "elm.dragable.hbar"; - target: "shadow_hbar"; - target: "glow_hbar"; - target: "center_glow_hbar"; - } - program { - signal: "mouse,up,1"; source: "elm.dragable.hbar"; - action: STATE_SET "default" 0.0; - target: "elm.dragable.hbar"; - target: "shadow_hbar"; - target: "glow_hbar"; - target: "center_glow_hbar"; - } - program { - signal: "elm,action,looping,left"; source: "elm"; - action: STATE_SET "effect" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - after: "looping,left,done"; - } - program { name: "looping,left,done"; - action: SIGNAL_EMIT "elm,looping,left,done" "elm"; - } - program { - signal: "elm,action,looping,left,end"; source: "elm"; - action: STATE_SET "default" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - } - program { - signal: "elm,action,looping,right"; source: "elm"; - action: STATE_SET "effect" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - after: "looping,right,done"; - } - program { name: "looping,right,done"; - action: SIGNAL_EMIT "elm,looping,right,done" "elm"; - } - program { - signal: "elm,action,looping,right,end"; source: "elm"; - action: STATE_SET "default" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - } - program { - signal: "elm,action,looping,up"; source: "elm"; - action: STATE_SET "effect" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - after: "looping,up,done"; - } - program { name: "looping,up,done"; - action: SIGNAL_EMIT "elm,looping,up,done" "elm"; - } - program { - signal: "elm,action,looping,up,end"; source: "elm"; - action: STATE_SET "default" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - } - program { - signal: "elm,action,looping,down"; source: "elm"; - action: STATE_SET "effect" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - after: "looping,down,done"; - } - program { name: "looping,down,done"; - action: SIGNAL_EMIT "elm,looping,down,done" "elm"; - } - program { - signal: "elm,action,looping,down,end"; source: "elm"; - action: STATE_SET "default" 0.0; - transition: LINEAR 0.3; - target: "dim_effect"; - } - } -} - -group { name: "elm/photocam/base/evas3d"; - inherit: "elm/scroller/base/evas3d"; - parts { - part { name: "busy_clip"; type: RECT; - description { state: "default" 0.0; - visible: 0; - color: 255 255 255 0; - } - description { state: "active" 0.0; - visible: 1; - color: 255 255 255 255; - } - } - part { name: "knob"; type: RECT; - mouse_events: 0; - clip_to: "busy_clip"; - scale: 1; - description { state: "default" 0.0; - min: 40 40; - max: 40 40; - align: 0.0 0.0; - rel1.offset: 3 3; - rel2.offset: 3 3; - fixed: 1 1; - visible: 0; - } - } - part { name: "knob_spinner"; type: RECT; - mouse_events: 0; - clip_to: "busy_clip"; - description { state: "default" 0.0; - fixed: 1 1; - rel1.to: "knob"; - rel2.to: "knob"; - map.on: 1; - map.smooth: 1; - map.rotation.center: "knob"; - visible: 0; - } - description { state: "spin" 0.0; - inherit: "default" 0.0; - map.rotation.z: 360; - } - } - } - programs { - program { name: "spin"; - signal: "elm,state,busy,start"; source: "elm"; - action: ACTION_STOP; - target: "spin"; - target: "spin0"; - target: "spin1"; - target: "spin2"; - target: "spin3"; - target: "spin4"; - after: "spin0"; - } - program { name: "spin0"; - action: STATE_SET "default" 0.0; - target: "knob_spinner"; - after: "spin1"; - } - program { name: "spin1"; - action: STATE_SET "spin" 0.0; - transition: LINEAR 1.0; - target: "knob_spinner"; - after: "spin2"; - } - program { name: "spin2"; - action: STATE_SET "default" 0.0; - target: "knob_spinner"; - after: "spin1"; - } - - program { - signal: "elm,state,busy,start"; source: "elm"; - action: STATE_SET "active" 0.0; - transition: SINUSOIDAL 0.25; - target: "busy_clip"; - } - - program { - signal: "elm,state,busy,stop"; source: "elm"; - action: STATE_SET "default" 0.0; - transition: SINUSOIDAL 1.0; - target: "busy_clip"; - after: "spin3"; - } - program { name: "spin3"; - action: ACTION_STOP; - target: "spin"; - target: "spin2"; - after: "spin4"; - } - program { name: "spin4"; - action: STATE_SET "default" 0.0; - target: "knob_spinner"; - } - } -} - -group { name: "elm/map/base/evas3d"; - inherit: "elm/photocam/base/evas3d"; -} -} diff --git a/src/examples/elementary/evas3d_object_on_button_example.c b/src/examples/elementary/evas3d_object_on_button_example.c deleted file mode 100644 index fe458eb454..0000000000 --- a/src/examples/elementary/evas3d_object_on_button_example.c +++ /dev/null @@ -1,288 +0,0 @@ -/* - * This example shows the mechanism of elementary widget adding (button) to the 3d scene object (cube) and - * illustrates the work of callback of event from mouse. - * - * Compile with: - * gcc -o evas3d_object_on_button_example evas3d_object_on_button_example.c -g `pkg-config --libs --cflags evas ecore eo elementary` - */ -#ifndef EFL_BETA_API_SUPPORT -# define EFL_BETA_API_SUPPORT -#endif - -#include <Eo.h> -#include <Evas.h> -#include <Ecore.h> -#include <Elementary.h> - -#define WIDTH 400 -#define HEIGHT 400 - -typedef struct _Scene_Data -{ - Eo *scene; - Eo *root_node; - Eo *camera_node; - Eo *light_node; - Eo *mesh_node; - - Eo *camera; - Eo *light; - Eo *mesh; - Eo *material; - Eo *texture; -} Scene_Data; - -Evas_Object *win = NULL; -static Evas *evas = NULL; -static Eo *image = NULL; -static Eo *btn = NULL; -static float d_angle = 0.5; - -static const float cube_vertices[] = -{ - /* Front */ - -1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, - 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, - -1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, - 1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, - - /* Back */ - 1.0, 1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, - -1.0, 1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, - 1.0, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - -1.0, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Left */ - -1.0, 1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, - -1.0, 1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, - -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, - -1.0, -1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Right */ - 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, - 1.0, 1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, - 1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, - 1.0, -1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Top */ - -1.0, 1.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, - 1.0, 1.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, - -1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Bottom */ - 1.0, -1.0, -1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, - -1.0, -1.0, -1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, -1.0, 1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, - -1.0, -1.0, 1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -}; - -static const unsigned short cube_indices[] = -{ - /* Front */ - 0, 1, 2, 2, 1, 3, - - /* Back */ - 4, 5, 6, 6, 5, 7, - - /* Left */ - 8, 9, 10, 10, 9, 11, - - /* Right */ - 12, 13, 14, 14, 13, 15, - - /* Top */ - 16, 17, 18, 18, 17, 19, - - /* Bottom */ - 20, 21, 22, 22, 21, 23 -}; - -static void -_stop_scene(void *data, - Evas *e EINA_UNUSED, - Evas_Object *eo EINA_UNUSED, - void *event_info) -{ - Evas_Event_Mouse_Down *ev = event_info; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Evas_Real s, t; - Scene_Data *d = (Scene_Data *)data; - - if (ev->button == 1) - { - Eina_Bool ret; - - evas_canvas3d_scene_color_pick_enable_set(d->scene, EINA_TRUE); - ret = evas_canvas3d_scene_pick(d->scene, ev->canvas.x, ev->canvas.y, &n, &m, &s, &t); - if (ret) - { - d_angle = 0.0; - elm_object_signal_emit(btn, "mouse,down,1", "event"); - evas_canvas3d_node_position_set(d->mesh_node, 0.0, 0.0, -0.2); - } - } -} - -static void -_play_scene(void *data, - Evas *e EINA_UNUSED, - Evas_Object *eo EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - Scene_Data *d = (Scene_Data *)data; - - d_angle = 0.5; - elm_object_signal_emit(btn, "mouse,up,1", "event"); - evas_canvas3d_node_position_set(d->mesh_node, 0.0, 0.0, 0.0); -} - - -static Eina_Bool -_animate_scene(void *data) -{ - static float angle = 0.0f; - Scene_Data *scene = (Scene_Data *)data; - - angle += d_angle; - - evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node, angle, 1.0, 1.0, 1.0); - - /* Rotate */ - if (angle > 360.0) angle -= 360.0f; - - return EINA_TRUE; -} - -static void -_camera_setup(Scene_Data *data) -{ - data->camera = efl_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); - - evas_canvas3d_camera_projection_perspective_set(data->camera, 20.0, 1.0, 2.0, 50.0); - - data->camera_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_CAMERA)); - evas_canvas3d_node_camera_set(data->camera_node, data->camera); - evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 15.0); - evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, -1.0, 0.0); - evas_canvas3d_node_member_add(data->root_node, data->camera_node); -} - -static void -_light_setup(Scene_Data *data) -{ - data->light = efl_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); - evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0); - - data->light_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_LIGHT)); - evas_canvas3d_node_light_set(data->light_node, data->light); - evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0); - evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - evas_canvas3d_node_member_add(data->root_node, data->light_node); -} -static void -_mesh_setup(Scene_Data *data) -{ - /* Setup material and texture as widget button. */ - data->material = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); - data->texture = efl_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas); - - evas_canvas3d_texture_source_set(data->texture, btn); - evas_canvas3d_texture_source_visible_set(data->texture, EINA_FALSE); - - evas_canvas3d_material_texture_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, data->texture); - evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0); - evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_shininess_set(data->material, 100.0); - - /* Setup mesh. */ - data->mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, evas); - evas_canvas3d_mesh_vertex_count_set(data->mesh, 24); - evas_canvas3d_mesh_frame_add(data->mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 12 * sizeof(float), &cube_vertices[ 3]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 12 * sizeof(float), &cube_vertices[ 6]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 12 * sizeof(float), &cube_vertices[10]); - evas_canvas3d_mesh_index_data_set(data->mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &cube_indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(data->mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(data->mesh, EVAS_CANVAS3D_SHADER_MODE_PHONG); - evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material); - evas_canvas3d_mesh_color_pick_enable_set(data->mesh, EINA_TRUE); - - data->mesh_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH)); - evas_canvas3d_node_member_add(data->root_node, data->mesh_node); - evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh); -} - -static void -_scene_setup(Scene_Data *data) -{ - data->scene = efl_add(EVAS_CANVAS3D_SCENE_CLASS, evas); - evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT); - evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0); - - data->root_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_NODE)); - - _camera_setup(data); - _light_setup(data); - _mesh_setup(data); - - evas_canvas3d_scene_root_node_set(data->scene, data->root_node); - evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node); -} - -int -elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) -{ - Scene_Data data; - - elm_config_accel_preference_set("3d"); - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); - - win = elm_win_util_standard_add("evas3d-object-button", "A button on the 3d object"); - elm_win_autodel_set(win, EINA_TRUE); - - evas = evas_object_evas_get(win); - - /* Add an image object for 3D scene rendering. */ - image = efl_add(EFL_CANVAS_SCENE3D_CLASS, evas); - efl_gfx_entity_size_set(image, EINA_SIZE2D(WIDTH, HEIGHT)); - efl_gfx_entity_visible_set(image, EINA_TRUE); - - btn = elm_button_add(win); - evas_object_resize(btn, (WIDTH * 2) / 3, (HEIGHT * 2) / 3); - elm_object_text_set(btn, "3D Button"); - elm_object_scale_set(btn, 3.0); - evas_object_show(btn); - - /* Set the image object as render target for 3D scene. */ - _scene_setup(&data); - evas_object_focus_set(image, EINA_TRUE); - efl_canvas_scene3d_set(image, data.scene); - - evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_DOWN, _stop_scene, &data); - evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_UP, _play_scene, &data); - - /* Add animation timer callback. */ - ecore_timer_add(0.016, _animate_scene, &data); - - evas_object_resize(win, WIDTH, HEIGHT); - evas_object_show(win); - - /* Enter main loop. */ - elm_run(); - - return 0; -} -ELM_MAIN() diff --git a/src/examples/elementary/evas3d_scene_on_button_example.c b/src/examples/elementary/evas3d_scene_on_button_example.c deleted file mode 100644 index 267e45b7e9..0000000000 --- a/src/examples/elementary/evas3d_scene_on_button_example.c +++ /dev/null @@ -1,280 +0,0 @@ -/* -* This example shows the mechanism of scene object adding (3D cube) to the widget button and -* illustrates the work of callback of event from mouse. -* -* Compile with: -* gcc -o evas3d_scene_on_button_example evas3d_scene_on_button_example.c -g `pkg-config --libs --cflags evas ecore eo elementary` -*/ -#ifndef EFL_BETA_API_SUPPORT -# define EFL_BETA_API_SUPPORT -#endif - -#define WIDTH 500 -#define HEIGHT 500 -#define d_w 100 -#define d_h 100 - - -#include <Eo.h> -#include <Evas.h> -#include <Ecore.h> -#include <Elementary.h> -#include <stdio.h> - -typedef struct _Scene_Data -{ - Eo *scene; - Eo *root_node; - Eo *camera_node; - Eo *light_node; - Eo *mesh_node; - - Eo *camera; - Eo *light; - Eo *mesh; - Eo *material; -} Scene_Data; - -Evas_Object *win = NULL; -Evas_Object *btn = NULL; -float d_angle = 0.5; -static Evas *evas = NULL; -static Eo *image = NULL; - -static const float cube_vertices[] = -{ - /* Front */ - -1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, - 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, - -1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, - 1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, - - /* Back */ - 1.0, 1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, - -1.0, 1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, - 1.0, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - -1.0, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Left */ - -1.0, 1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, - -1.0, 1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, - -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, - -1.0, -1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Right */ - 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, - 1.0, 1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, - 1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, - 1.0, -1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Top */ - -1.0, 1.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, - 1.0, 1.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, - -1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Bottom */ - 1.0, -1.0, -1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, - -1.0, -1.0, -1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, -1.0, 1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, - -1.0, -1.0, 1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -}; - -static const unsigned short cube_indices[] = -{ - /* Front */ - 0, 1, 2, 2, 1, 3, - - /* Back */ - 4, 5, 6, 6, 5, 7, - - /* Left */ - 8, 9, 10, 10, 9, 11, - - /* Right */ - 12, 13, 14, 14, 13, 15, - - /* Top */ - 16, 17, 18, 18, 17, 19, - - /* Bottom */ - 20, 21, 22, 22, 21, 23 -}; - -static Eina_Bool -_animate_scene(void *data) -{ - static float angle = 0.0f; - Scene_Data *scene = (Scene_Data *)data; - - angle += d_angle; - - evas_canvas3d_node_orientation_angle_axis_set(scene->mesh_node, angle, 1.0, 1.0, 1.0); - - /* Rotate */ - if (angle > 360.0) angle -= 360.0f; - - return EINA_TRUE; -} - -static void -_camera_setup(Scene_Data *data) -{ - data->camera = efl_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); - - evas_canvas3d_camera_projection_perspective_set(data->camera, 60.0, 1.0, 2.0, 50.0); - - data->camera_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_CAMERA)); - evas_canvas3d_node_camera_set(data->camera_node, data->camera); - evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 10.0); - evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - evas_canvas3d_node_member_add(data->root_node, data->camera_node); -} - -static void -_light_setup(Scene_Data *data) -{ - data->light = efl_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); - evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0); - - data->light_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_LIGHT)); - evas_canvas3d_node_light_set(data->light_node, data->light); - evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0); - evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - evas_canvas3d_node_member_add(data->root_node, data->light_node); -} -static void -_mesh_setup(Scene_Data *data) -{ - /* Setup material. */ - data->material = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); - - evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0); - evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_shininess_set(data->material, 100.0); - - /* Setup mesh. */ - data->mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, evas); - evas_canvas3d_mesh_vertex_count_set(data->mesh, 24); - evas_canvas3d_mesh_frame_add(data->mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 12 * sizeof(float), &cube_vertices[ 3]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 12 * sizeof(float), &cube_vertices[ 6]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 12 * sizeof(float), &cube_vertices[10]); - evas_canvas3d_mesh_index_data_set(data->mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &cube_indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(data->mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(data->mesh, EVAS_CANVAS3D_SHADER_MODE_PHONG); - evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material); - - data->mesh_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH)); - evas_canvas3d_node_member_add(data->root_node, data->mesh_node); - evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh); -} - -static void -_scene_setup(Scene_Data *data) -{ - data->scene = efl_add(EVAS_CANVAS3D_SCENE_CLASS, evas); - evas_canvas3d_scene_size_set(data->scene, WIDTH - d_w, HEIGHT - d_h); - evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0); - - data->root_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_NODE)); - - _camera_setup(data); - _light_setup(data); - _mesh_setup(data); - - evas_canvas3d_scene_root_node_set(data->scene, data->root_node); - evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node); -} - -static void -_stop_scene(void *data, - Evas *e EINA_UNUSED, - Evas_Object *eo EINA_UNUSED, - void *event_info) -{ - Evas_Event_Mouse_Down *ev = event_info; - Scene_Data *d = (Scene_Data *)data; - - evas_canvas3d_node_scale_set(d->mesh_node, 0.97, 0.97, 0.97); - - if (ev->button == 1) - { - if (evas_canvas3d_scene_exist(d->scene, (ev->canvas.x - (d_w / 2)), (ev->canvas.y - (d_h / 2)), d->mesh_node)) - { - d_angle = 0; - } - } -} - -static void -_play_scene(void *data, - Evas *e EINA_UNUSED, - Evas_Object *eo EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - Scene_Data *d = (Scene_Data *)data; - - d_angle = 0.5; - - evas_canvas3d_node_scale_set(d->mesh_node, 1.0, 1.0, 1.0); -} - -EAPI_MAIN int -elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) -{ - Scene_Data data; - - elm_config_accel_preference_set("3d"); - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); - - win = elm_win_util_standard_add("evas3d-scene-button", "3d object on the button"); - if (!win) return 0; - elm_win_autodel_set(win, EINA_TRUE); - - evas = evas_object_evas_get(win); - if (!evas) return 0; - - _scene_setup(&data); - - image = efl_add(EFL_CANVAS_SCENE3D_CLASS, evas); - efl_gfx_entity_visible_set(image, EINA_TRUE); - - /* Set the image object as render target for 3D scene. */ - efl_canvas_scene3d_set(image, data.scene); - - /* Setup scene to the widget button. */ - btn = elm_button_add(win); - elm_object_content_set(btn, image); - evas_object_resize(btn, (WIDTH - d_w), (HEIGHT - d_h)); - evas_object_move(btn, (d_w / 2), (d_h / 2)); - evas_object_show(btn); - - evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_DOWN, _stop_scene, - &data); - evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, _play_scene, - &data); - - /* Add animation timer callback. */ - ecore_timer_add(0.016, _animate_scene, &data); - - evas_object_resize(win, WIDTH, HEIGHT); - evas_object_show(win); - - /* Enter main loop. */ - elm_run(); - - return 0; -} -ELM_MAIN() diff --git a/src/examples/elementary/filter_example.c b/src/examples/elementary/filter_example.c index cc05b7d36f..29b86f0e5f 100644 --- a/src/examples/elementary/filter_example.c +++ b/src/examples/elementary/filter_example.c @@ -1,7 +1,7 @@ /** * gcc -g filter_example.c -o filter_example `pkg-config --cflags --libs elementary` */ -#define EFL_BETA_API_SUPPORT 1 +#define EFL_BETA_API_SUPPORT 1 #include <Elementary.h> typedef struct _Filter diff --git a/src/examples/elementary/gengrid_example.c b/src/examples/elementary/gengrid_example.c index b342f6c60e..37f2805ee5 100644 --- a/src/examples/elementary/gengrid_example.c +++ b/src/examples/elementary/gengrid_example.c @@ -418,8 +418,6 @@ elm_main(int argc EINA_UNUSED, Eina_Bool bounce; double h, v; - srand(time(NULL)); - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); elm_app_info_set(elm_main, "elementary", "images"); diff --git a/src/examples/elementary/image_webp_example_01.c b/src/examples/elementary/image_webp_example_01.c new file mode 100644 index 0000000000..24bc79ae72 --- /dev/null +++ b/src/examples/elementary/image_webp_example_01.c @@ -0,0 +1,38 @@ +//Compile with: +//gcc -g image_webp_example_01.c -o image_webp_example_01 `pkg-config --cflags --libs elementary` + +#include <Elementary.h> + +int +elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) +{ + Evas_Object *win, *image; + char buf[PATH_MAX]; + + elm_app_info_set(elm_main, "elementary", "images/static_webp_image.webp"); + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); + + win = elm_win_util_standard_add("WebP Image", "WebP Image"); + elm_win_autodel_set(win, EINA_TRUE); + + snprintf(buf, sizeof(buf), "%s/images/static_webp_image.webp", elm_app_data_dir_get()); + + image = elm_image_add(win); + if (!elm_image_file_set(image, buf, NULL)) + { + printf("error: could not load image \"%s\"\n", buf); + return -1; + } + + evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, image); + evas_object_show(image); + + evas_object_resize(win, 320, 320); + evas_object_show(win); + + elm_run(); + + return 0; +} +ELM_MAIN() diff --git a/src/examples/elementary/image_webp_example_02.c b/src/examples/elementary/image_webp_example_02.c new file mode 100644 index 0000000000..3bfaf4a71c --- /dev/null +++ b/src/examples/elementary/image_webp_example_02.c @@ -0,0 +1,41 @@ +//Compile with: +//gcc -g image_webp_example_02.c -o image_webp_example_02 `pkg-config --cflags --libs elementary` + +#include <Elementary.h> + +int +elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) +{ + Evas_Object *win, *image; + char buf[PATH_MAX]; + + elm_app_info_set(elm_main, "elementary", "images/animated_webp_image.webp"); + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); + + win = elm_win_util_standard_add("WebP Image", "WebP Image"); + elm_win_autodel_set(win, EINA_TRUE); + + snprintf(buf, sizeof(buf), "%s/images/animated_webp_image.webp", elm_app_data_dir_get()); + + image = elm_image_add(win); + if (!elm_image_file_set(image, buf, NULL)) + { + printf("error: could not load image \"%s\"\n", buf); + return -1; + } + + elm_image_animated_set(image, EINA_TRUE); + elm_image_animated_play_set(image, EINA_TRUE); + + evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, image); + evas_object_show(image); + + evas_object_resize(win, 320, 320); + evas_object_show(win); + + elm_run(); + + return 0; +} +ELM_MAIN() diff --git a/src/examples/elementary/menu_cxx_example_01.cc b/src/examples/elementary/menu_cxx_example_01.cc index dfc717ec81..f209f2f5a4 100644 --- a/src/examples/elementary/menu_cxx_example_01.cc +++ b/src/examples/elementary/menu_cxx_example_01.cc @@ -15,8 +15,6 @@ */ #include <Efl_Ui.hh> -#warning This example can not be implemented with EO APIs... FIXME - EAPI_MAIN int elm_main (int argc EINA_UNUSED, char *argv[] EINA_UNUSED) { diff --git a/src/examples/elementary/meson.build b/src/examples/elementary/meson.build index e88ddfe567..7abffa8a2f 100644 --- a/src/examples/elementary/meson.build +++ b/src/examples/elementary/meson.build @@ -46,6 +46,8 @@ examples = [ 'hoversel_example_01', 'icon_example_01', 'image_example_01', + 'image_webp_example_01', + 'image_webp_example_02', 'index_example_01', 'index_example_02', 'inwin_example', @@ -100,9 +102,6 @@ examples = [ 'web_example_02', 'win_example', 'track_example_01', - 'evas3d_object_on_button_example', - 'evas3d_scene_on_button_example', - 'evas3d_map_example', 'efl_thread_1', 'efl_thread_2', 'efl_thread_3', @@ -120,11 +119,12 @@ examples = [ 'efl_ui_slideshow_example', 'efl_ui_radio_example_01', 'efl_ui_grid_example_1', - 'efl_ui_grid_view_example_1' + 'efl_ui_grid_view_example_1', + 'efl_canvas_textblock_obstacles_example' ] foreach example : examples - executable(example, example + '.c', dependencies: [elementary, ecore, eio]) + executable(example, example + '.c', dependencies: [elementary, ecore, eio, m]) endforeach if get_option('bindings').contains('cxx') cxx_examples = [ @@ -193,6 +193,3 @@ executable('codegen_example', dependencies: [elementary], include_directories : include_directories('..') ) - -subdir('sphere_hunter') -subdir('performance') diff --git a/src/examples/elementary/performance/HowTo b/src/examples/elementary/performance/HowTo deleted file mode 100644 index 8417fa0f34..0000000000 --- a/src/examples/elementary/performance/HowTo +++ /dev/null @@ -1,13 +0,0 @@ -It is application for quick checking changes in Evas 3D. - -Dependences (tested on): - efl >= 1.13.0 elementary >= 1.13.0 - xserver-xorg-video-nouveau driver - OpenGL rendering acceleration for elemenatry -Main features: - effects shadow, fog, colorpick - fps (Be careful, don't use changing speed animation and stop animation during measuring). - load 3D models - navigation panel (by right click) - -Warnings: Until 3D destructor work properly, you can have lags after set a lot of 3D models or spheres with precision >=50 diff --git a/src/examples/elementary/performance/Tools.h b/src/examples/elementary/performance/Tools.h deleted file mode 100644 index c3cf8ca3a7..0000000000 --- a/src/examples/elementary/performance/Tools.h +++ /dev/null @@ -1,19 +0,0 @@ - -/*initialization navigation panel*/ -Evas_Object * -init_panel_camera_light(Evas_Object *win, Eo* camera_node, Eo* light_node, double posX, double posY); -/*free resources*/ -void -panel_camera_light_fini(Evas_Object *navigation); -/*initialization graphical objects*/ -Evas_Object * -init_graphical_window(Evas_Object *image); -/*Set step of range*/ -Eina_Bool -panel_camera_coord_step_set(Evas_Object *navigation, int step); -Eina_Bool -panel_camera_angle_step_set(Evas_Object *navigation, int step); -Eina_Bool -panel_light_coord_step_set(Evas_Object *navigation, int step); -Eina_Bool -panel_light_angle_step_set(Evas_Object *navigation, int step); diff --git a/src/examples/elementary/performance/background.png b/src/examples/elementary/performance/background.png Binary files differdeleted file mode 100644 index 190a74f631..0000000000 --- a/src/examples/elementary/performance/background.png +++ /dev/null diff --git a/src/examples/elementary/performance/camera_light.c b/src/examples/elementary/performance/camera_light.c deleted file mode 100644 index 98be8c24ef..0000000000 --- a/src/examples/elementary/performance/camera_light.c +++ /dev/null @@ -1,354 +0,0 @@ -#include "tools_private.h" - -Eina_Bool _alloc_memory(Axis_Key **ckey, Panel_Struct **pobj, Axis_Key **lkey) -{ - *ckey = calloc(1, sizeof(Axis_Key)); - *pobj = calloc(1, sizeof(Panel_Struct)); - *lkey = calloc(1, sizeof(Axis_Key)); - - if (!(*ckey) || !(*pobj) || !(*lkey)) - { - printf("Not enough memory - at %s line %d\n", __FILE__, __LINE__); - free(*ckey); - free(*pobj); - free(*lkey); - return EINA_FALSE; - } - - return EINA_TRUE; -} - -Evas_Object * -init_panel_camera_light(Evas_Object *win, Eo *camera_node, Eo *light_node, double posX, double posY) -{ - Evas_Object *nnavig = NULL, *bx_navigall = NULL; - Evas_Object *bx_navigcamup = NULL, *bx_navigcamlow = NULL, *bx_navigligthup = NULL, *bx_navigligthlow = NULL; - Evas_Object *spX = NULL, *spY = NULL, *spZ = NULL; - Evas_Object *spangle = NULL, *spaX = NULL, *spaY = NULL, *spaZ = NULL; - Evas_Object *splX = NULL, *splY = NULL, *splZ = NULL; - Evas_Object *splangle = NULL, *splaX = NULL, *splaY = NULL, *splaZ = NULL; - Evas_Object *separator = NULL; - Axis_Key *camera_xyz = NULL, *light_xyz = NULL; - Panel_Struct *pobject = NULL; - Evas_Real px = 0, py = 0, pz = 0; - - if (ELM_WIN_UNKNOWN == elm_win_type_get(win)) - { - printf("Not appropriate parent object - at %s line %d\n", __FILE__, __LINE__); - return NULL; - } - - if (!_alloc_memory(&camera_xyz, &pobject, &light_xyz)) return NULL; - - /*Navigation panel layout*/ - bx_navigall = elm_box_add(win); - elm_box_homogeneous_set(bx_navigall, EINA_TRUE); - evas_object_show(bx_navigall); - - bx_navigcamup = elm_box_add(win); - elm_box_horizontal_set(bx_navigcamup, EINA_TRUE); - elm_box_homogeneous_set(bx_navigcamup, EINA_TRUE); - elm_box_pack_end(bx_navigall, bx_navigcamup); - evas_object_show(bx_navigcamup); - bx_navigcamlow = elm_box_add(win); - elm_box_horizontal_set(bx_navigcamlow, EINA_TRUE); - elm_box_homogeneous_set(bx_navigcamlow, EINA_TRUE); - elm_box_pack_end(bx_navigall, bx_navigcamlow); - evas_object_show(bx_navigcamlow); - - separator = elm_separator_add(win); - elm_separator_horizontal_set(separator, EINA_TRUE); - elm_box_pack_end(bx_navigall, separator); - evas_object_show(separator); - - bx_navigligthup = elm_box_add(win); - elm_box_horizontal_set(bx_navigligthup, EINA_TRUE); - elm_box_homogeneous_set(bx_navigligthup, EINA_TRUE); - elm_box_pack_end(bx_navigall, bx_navigligthup); - evas_object_show(bx_navigligthup); - bx_navigligthlow = elm_box_add(win); - elm_box_horizontal_set(bx_navigligthlow, EINA_TRUE); - elm_box_homogeneous_set(bx_navigligthlow, EINA_TRUE); - elm_box_pack_end(bx_navigall, bx_navigligthlow); - evas_object_show(bx_navigligthlow); - - /*Set UI panel for changing camera and light*/ - /*Init sp camera by default*/ - spX = elm_spinner_add(win); - elm_spinner_editable_set(spX, EINA_TRUE); - elm_spinner_min_max_set(spX, -COORDRANGE, COORDRANGE); - elm_spinner_label_format_set(spX, "camera X: %1.0f"); - elm_spinner_step_set(spX, 1.0); - pobject->cspX = spX; - elm_box_pack_end(bx_navigcamup, spX); - evas_object_show(spX); - evas_object_smart_callback_add(spX, "changed", _camera_light_changeX_cb, camera_node); - - spY = elm_spinner_add(win); - elm_spinner_editable_set(spY, EINA_TRUE); - elm_spinner_min_max_set(spY, -COORDRANGE, COORDRANGE); - elm_spinner_label_format_set(spY, "camera Y: %1.0f"); - elm_spinner_step_set(spY, 1.0); - pobject->cspY = spY; - elm_box_pack_end(bx_navigcamup, spY); - evas_object_show(spY); - evas_object_smart_callback_add(spY, "changed", _camera_light_changeY_cb, camera_node); - - spZ = elm_spinner_add(win); - elm_spinner_editable_set(spZ, EINA_TRUE); - elm_spinner_min_max_set(spZ, -COORDRANGE, COORDRANGE); - elm_spinner_label_format_set(spZ, "camera Z: %1.0f"); - elm_spinner_step_set(spY, 1.0); - pobject->cspZ = spZ; - elm_box_pack_end(bx_navigcamup, spZ); - evas_object_show(spZ); - evas_object_smart_callback_add(spZ, "changed", _camera_light_changeZ_cb, camera_node); - - evas_canvas3d_node_position_get(camera_node, EVAS_CANVAS3D_SPACE_PARENT, &px, &py, &pz); - elm_spinner_value_set(spX, px); - elm_spinner_value_set(spY, py); - elm_spinner_value_set(spZ, pz); - - spangle = elm_spinner_add(win); - elm_spinner_editable_set(spangle, EINA_TRUE); - elm_spinner_min_max_set(spangle, 0.0, ANGLERANGE); - elm_spinner_label_format_set(spangle, "angle: %1.0f"); - elm_spinner_step_set(spangle, 1.0); - pobject->cspangle = spangle; - evas_object_data_set(spangle, axiskeys, camera_xyz); - elm_box_pack_end(bx_navigcamlow, spangle); - elm_spinner_value_set(spangle, 0.0); - evas_object_show(spangle); - evas_object_smart_callback_add(spangle, "changed", _camera_light_angle_change_cb, camera_node); - - spaX = elm_spinner_add(win); - elm_spinner_min_max_set(spaX, 0.0, 1.0); - elm_spinner_label_format_set(spaX, "axisX: %1.0f"); - elm_spinner_step_set(spaX, 1.0); - elm_box_pack_end(bx_navigcamlow, spaX); - evas_object_show(spaX); - evas_object_smart_callback_add(spaX, "changed", _camera_light_axisX_change_cb, spangle); - - spaY = elm_spinner_add(win); - elm_spinner_min_max_set(spaY, 0.0, 1.0); - elm_spinner_label_format_set(spaY, "axisY: %1.0f"); - elm_spinner_step_set(spaY, 1.0); - elm_box_pack_end(bx_navigcamlow, spaY); - evas_object_show(spaY); - evas_object_smart_callback_add(spaY, "changed", _camera_light_axisY_change_cb, spangle); - - spaZ = elm_spinner_add(win); - elm_spinner_min_max_set(spaZ, 0.0, 1.0); - elm_spinner_label_format_set(spaZ, "axisZ: %1.0f"); - elm_spinner_step_set(spaZ, 1.0); - elm_box_pack_end(bx_navigcamlow, spaZ); - evas_object_show(spaZ); - evas_object_smart_callback_add(spaZ, "changed", _camera_light_axisZ_change_cb, spangle); - - /*Init spl light by default*/ - splX = elm_spinner_add(win); - elm_spinner_editable_set(splX, EINA_TRUE); - elm_spinner_min_max_set(splX, -COORDRANGE, COORDRANGE); - elm_spinner_label_format_set(splX, "light X: %1.0f"); - elm_spinner_step_set(splX, 1.0); - pobject->lspX = splX; - elm_box_pack_end(bx_navigligthup, splX); - evas_object_show(splX); - evas_object_smart_callback_add(splX, "changed", _camera_light_changeX_cb, light_node); - - splY = elm_spinner_add(win); - elm_spinner_editable_set(splY, EINA_TRUE); - elm_spinner_min_max_set(splY, -COORDRANGE, COORDRANGE); - elm_spinner_label_format_set(splY, "light Y: %1.0f"); - elm_spinner_step_set(splY, 1.0); - pobject->lspY = splY; - elm_box_pack_end(bx_navigligthup, splY); - evas_object_show(splY); - evas_object_smart_callback_add(splY, "changed", _camera_light_changeY_cb, light_node); - - splZ = elm_spinner_add(win); - elm_spinner_editable_set(splZ, EINA_TRUE); - elm_spinner_min_max_set(splZ, -COORDRANGE, COORDRANGE); - elm_spinner_label_format_set(splZ, "light Z: %1.0f"); - elm_spinner_step_set(splY, 1.0); - pobject->lspZ = splZ; - elm_box_pack_end(bx_navigligthup, splZ); - evas_object_show(splZ); - evas_object_smart_callback_add(splZ, "changed", _camera_light_changeZ_cb, light_node); - - evas_canvas3d_node_position_get(light_node, EVAS_CANVAS3D_SPACE_PARENT, &px, &py, &pz); - elm_spinner_value_set(splX, px); - elm_spinner_value_set(splY, py); - elm_spinner_value_set(splZ, pz); - - splangle = elm_spinner_add(win); - elm_spinner_editable_set(splangle, EINA_TRUE); - elm_spinner_min_max_set(splangle, 0.0, ANGLERANGE); - elm_spinner_label_format_set(splangle, "angle: %1.0f"); - elm_spinner_step_set(splangle, 1.0); - pobject->lspangle = splangle; - evas_object_data_set(splangle, axiskeys, light_xyz); - elm_box_pack_end(bx_navigligthlow, splangle); - elm_spinner_value_set(splangle, 0.0); - evas_object_show(splangle); - evas_object_smart_callback_add(splangle, "changed", _camera_light_angle_change_cb, light_node); - - splaX = elm_spinner_add(win); - elm_spinner_min_max_set(splaX, 0.0, 1.0); - elm_spinner_label_format_set(splaX, "axisX: %1.0f"); - elm_spinner_step_set(splaX, 1.0); - elm_box_pack_end(bx_navigligthlow, splaX); - evas_object_show(splaX); - evas_object_smart_callback_add(splaX, "changed", _camera_light_axisX_change_cb, splangle); - - splaY = elm_spinner_add(win); - elm_spinner_min_max_set(splaY, 0.0, 1.0); - elm_spinner_label_format_set(splaY, "axisY: %1.0f"); - elm_spinner_step_set(splaY, 1.0); - elm_box_pack_end(bx_navigligthlow, splaY); - evas_object_show(splaY); - evas_object_smart_callback_add(splaY, "changed", _camera_light_axisY_change_cb, splangle); - - splaZ = elm_spinner_add(win); - elm_spinner_min_max_set(splaZ, 0.0, 1.0); - elm_spinner_label_format_set(splaZ, "axisZ: %1.0f"); - elm_spinner_step_set(splaZ, 1.0); - elm_box_pack_end(bx_navigligthlow, splaZ); - evas_object_show(splaZ); - evas_object_smart_callback_add(spaZ, "changed", _camera_light_axisZ_change_cb, splangle); - - nnavig = elm_notify_add(win); - elm_object_content_set(nnavig, bx_navigall); - elm_notify_align_set(nnavig, posX, posY); - evas_object_data_set(nnavig, pb, pobject); - - return nnavig; -} - -static void -_camera_light_changeX_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - Evas_Real x, y, z; - - if ((Eo*)data) - { - evas_canvas3d_node_position_get((Eo*)data, EVAS_CANVAS3D_SPACE_PARENT, NULL, &y, &z); - x = elm_spinner_value_get(obj); - evas_canvas3d_node_position_set((Eo*)data, x, y, z); - } -} -static void -_camera_light_changeY_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - Evas_Real x, y, z; - - if ((Eo*)data) - { - evas_canvas3d_node_position_get((Eo*)data, EVAS_CANVAS3D_SPACE_PARENT, &x, NULL, &z); - y = elm_spinner_value_get(obj); - evas_canvas3d_node_position_set((Eo*)data, x, y, z); - } -} -static void -_camera_light_changeZ_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - Evas_Real x, y, z; - - if ((Eo*)data) - { - evas_canvas3d_node_position_get((Eo*)data, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, NULL); - z = elm_spinner_value_get(obj); - evas_canvas3d_node_position_set((Eo*)data, x, y, z); - } -} -static void -_camera_light_angle_change_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - Axis_Key *key = evas_object_data_get(obj, axiskeys); - Evas_Real aw = 0; - if ((Eo*)data) - { - aw = elm_spinner_value_get(obj); - aw = cos(aw * M_PI / 360.0); - evas_canvas3d_node_orientation_set(((Eo*)data), key->x, key->y, key->z, aw); - } -} -static void -_camera_light_axisX_change_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - Evas_Object *fsa = (Evas_Object*)data; - Axis_Key *key = evas_object_data_get(fsa, axiskeys); - if (key) - key->x = elm_spinner_value_get(obj); -} -static void -_camera_light_axisY_change_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - Evas_Object *fsa = (Evas_Object*)data; - Axis_Key *key = evas_object_data_get(fsa, axiskeys); - if (key) - key->y = elm_spinner_value_get(obj); -} -static void -_camera_light_axisZ_change_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - Evas_Object *fsa = (Evas_Object*)data; - Axis_Key *key = evas_object_data_get(fsa, axiskeys); - if (key) - key->z = elm_spinner_value_get(obj); -} - -Eina_Bool -panel_camera_coord_step_set(Evas_Object *navigation, int step) -{ - Panel_Struct *pobject = NULL; - - pobject = evas_object_data_get(navigation, pb); - elm_spinner_step_set(pobject->cspX, step); - elm_spinner_step_set(pobject->cspY, step); - elm_spinner_step_set(pobject->cspZ, step); - return EINA_TRUE; -} - -Eina_Bool -panel_camera_angle_step_set(Evas_Object *navigation, int step) -{ - Panel_Struct *pobject = NULL; - - pobject = evas_object_data_get(navigation, pb); - elm_spinner_step_set(pobject->cspangle, step); - return EINA_TRUE; -} - -Eina_Bool -panel_light_coord_step_set(Evas_Object *navigation, int step) -{ - Panel_Struct *pobject = NULL; - - pobject = evas_object_data_get(navigation, pb); - elm_spinner_step_set(pobject->lspX, step); - elm_spinner_step_set(pobject->lspY, step); - elm_spinner_step_set(pobject->lspZ, step); - return EINA_TRUE; -} - -Eina_Bool -panel_light_angle_step_set(Evas_Object *navigation, int step) -{ - Panel_Struct *pobject = NULL; - - pobject = evas_object_data_get(navigation, pb); - elm_spinner_step_set(pobject->lspangle, step); - return EINA_TRUE; -} - -void panel_camera_light_fini(Evas_Object *navigation) -{ - Panel_Struct *pobject = evas_object_data_get(navigation, pb); - Axis_Key *ckey = evas_object_data_get(pobject->cspangle, axiskeys); - Axis_Key *lkey = evas_object_data_get(pobject->lspangle, axiskeys); - free(pobject); - free(ckey); - free(lkey); -} - diff --git a/src/examples/elementary/performance/graphical.c b/src/examples/elementary/performance/graphical.c deleted file mode 100644 index d68d865a80..0000000000 --- a/src/examples/elementary/performance/graphical.c +++ /dev/null @@ -1,622 +0,0 @@ -#ifndef EFL_BETA_API_SUPPORT -# define EFL_BETA_API_SUPPORT -#endif - -#include <math.h> -#include <stdlib.h> -#include <time.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <Eo.h> -#include <Evas.h> -#include <Ecore.h> -#include <Ecore_Evas.h> -#include <Eina.h> - -#include "graphical_struct.h" - -#define FOG_COLOR 0.5, 0.5, 0.5 -#define FOG_FACTOR 0.1 - -static inline vec3 -_normalize(const vec3 *v) -{ - double l = sqrt(v->x * v->x + v->y * v->y + v->z * v->z); - vec3 vec; - - vec.x = v->x / l; - vec.y = v->y / l; - vec.z = v->z / l; - - return vec; -} -static void -_sphere_count(int prec, float type_init) -{ - int i, j; - - globalGraphical.vertex_count = (prec + 1) * (prec + 1); - - /* Allocate buffer. */ - if (globalGraphical.places) free(globalGraphical.places); - globalGraphical.places = malloc(sizeof(place) * globalGraphical.vertex_count); - - for (i = 0; i <= prec; i++) - { - double lati = M_PI * (type_init + (double)i * (1 - 2 * type_init) / (double)prec); - double y = cos(lati); - double r = fabs(sin(lati)); - - for (j = 0; j <= prec; j++) - { - double longi = (M_PI * 2.0 * j) / (prec + 1); - place *v = &globalGraphical.places[i * (prec + 1) + j]; - v->position.x = r * sin(longi); - v->position.y = y; - v->position.z = r * cos(longi); - } - } -} -static void -_sphere_init(int prec) -{ - int i, j; - unsigned short *index; - - globalGraphical.vertex_count = (prec + 1) * (prec + 1); - globalGraphical.index_count = prec * prec * 6; - - /* Allocate buffer. */ - if (globalGraphical.vertices) free(globalGraphical.vertices); - if (globalGraphical.indices) free(globalGraphical.indices); - - globalGraphical.vertices = malloc(sizeof(vertex) * globalGraphical.vertex_count); - globalGraphical.indices = malloc(sizeof(unsigned short) * globalGraphical.index_count); - - for (i = 0; i <= prec; i++) - { - double lati = (M_PI * (double)i) / (double)prec; - double y = cos(lati); - double r = fabs(sin(lati)); - - for (j = 0; j <= prec; j++) - { - double longi = (M_PI * 2.0 * j) / prec; - vertex *v = &globalGraphical.vertices[i * (prec + 1) + j]; - - if (j == 0 || j == prec) v->position.x = 0.0; - else v->position.x = r * sin(longi); - - v->position.y = y; - - if (j == 0 || j == prec) v->position.z = r; - else v->position.z = r * cos(longi); - - v->normal = v->position; - - if (v->position.x > 0.0) - { - v->tangent.x = -v->normal.y; - v->tangent.y = v->normal.x; - v->tangent.z = v->normal.z; - } - else - { - v->tangent.x = v->normal.y; - v->tangent.y = -v->normal.x; - v->tangent.z = v->normal.z; - } - - v->color.x = v->position.x; - v->color.y = v->position.y; - v->color.z = v->position.z; - v->color.w = 1.0; - - if (j == prec) v->texcoord.x = 1.0; - else if (j == 0) v->texcoord.x = 0.0; - else v->texcoord.x = (double)j / (double)prec; - - if (i == prec) v->texcoord.y = 1.0; - else if (i == 0) v->texcoord.y = 0.0; - else v->texcoord.y = 1.0 - (double)i / (double)prec; - } - } - - index = &globalGraphical.indices[0]; - - for (i = 0; i < prec; i++) - { - for (j = 0; j < prec; j++) - { - *index++ = i * (prec + 1) + j; - *index++ = i * (prec + 1) + j + 1; - *index++ = (i + 1) * (prec + 1) + j; - - *index++ = (i + 1) * (prec + 1) + j; - *index++ = i * (prec + 1) + j + 1; - *index++ = (i + 1) * (prec + 1) + j + 1; - } - } - - for (i = 0; i < globalGraphical.index_count; i += 3) - { - vertex *v0 = &globalGraphical.vertices[globalGraphical.indices[i + 0]]; - vertex *v1 = &globalGraphical.vertices[globalGraphical.indices[i + 1]]; - vertex *v2 = &globalGraphical.vertices[globalGraphical.indices[i + 2]]; - - vec3 e1, e2; - float du1, du2, dv1, dv2, f; - vec3 tangent; - - e1.x = v1->position.x - v0->position.x; - e1.y = v1->position.y - v0->position.y; - e1.z = v1->position.z - v0->position.z; - - e2.x = v2->position.x - v0->position.x; - e2.y = v2->position.y - v0->position.y; - e2.z = v2->position.z - v0->position.z; - - du1 = v1->texcoord.x - v0->texcoord.x; - dv1 = v1->texcoord.y - v0->texcoord.y; - - du2 = v2->texcoord.x - v0->texcoord.x; - dv2 = v2->texcoord.y - v0->texcoord.y; - - f = 1.0 / (du1 * dv2 - du2 * dv1); - - tangent.x = f * (dv2 * e1.x - dv1 * e2.x); - tangent.y = f * (dv2 * e1.y - dv1 * e2.y); - tangent.z = f * (dv2 * e1.z - dv1 * e2.z); - - v0->tangent = tangent; - } - - for (i = 0; i <= prec; i++) - { - for (j = 0; j <= prec; j++) - { - if (j == prec) - { - vertex *v = &globalGraphical.vertices[i * (prec + 1) + j]; - v->tangent = globalGraphical.vertices[i * (prec + 1)].tangent; - } - } - } -} -/*FIXME Need to be from bounding of root_node*/ -void _init_bounding() -{ - - float cube_vertices[] = - { - /* Front */ - -50.0, 1.0, 50.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, - 50.0, 1.0, 50.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, - -50.0, -1.0, 50.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, - 50.0, -1.0, 50.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, - - /* Back */ - 50.0, 1.0, -50.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, - -50.0, 1.0, -50.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, - 50.0, -1.0, -50.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - -50.0, -1.0, -50.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Left */ - -50.0, 1.0, -50.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, - -50.0, 1.0, 50.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, - -50.0, -1.0, -50.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, - -50.0, -1.0, 50.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Right */ - 50.0, 1.0, 50.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, - 50.0, 1.0, -50.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, - 50.0, -1.0, 50.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, - 50.0, -1.0, -50.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Top */ - -50.0, 1.0, -50.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, - 50.0, 1.0, -50.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, - -50.0, 1.0, 50.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 50.0, 1.0, 50.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Bottom */ - 50.0, -1.0, -50.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, - -50.0, -1.0, -50.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 50.0, -1.0, 50.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, - -50.0, -1.0, 50.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, - }; - - unsigned short cube_indices[] = - { - /* Front */ - 0, 1, 2, 2, 1, 3, - - /* Back */ - 4, 5, 6, 6, 5, 7, - - /* Left */ - 8, 9, 10, 10, 9, 11, - - /* Right */ - 12, 13, 14, 14, 13, 15, - - /* Top */ - 16, 17, 18, 18, 17, 19, - - /* Bottom */ - 20, 21, 22, 22, 21, 23 - }; - - globalGraphical.material_box = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, globalGraphical.evas); - - evas_canvas3d_material_enable_set(globalGraphical.material_box, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(globalGraphical.material_box, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(globalGraphical.material_box, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_color_set(globalGraphical.material_box, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_material_color_set(globalGraphical.material_box, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0); - evas_canvas3d_material_color_set(globalGraphical.material_box, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_shininess_set(globalGraphical.material_box, 100.0); - - /* Setup mesh. */ - globalGraphical.mesh_box = efl_add(EVAS_CANVAS3D_MESH_CLASS, globalGraphical.evas); - evas_canvas3d_mesh_vertex_count_set(globalGraphical.mesh_box, 24); - evas_canvas3d_mesh_frame_add(globalGraphical.mesh_box, 0); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh_box, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh_box, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 12 * sizeof(float), &cube_vertices[ 3]); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh_box, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 12 * sizeof(float), &cube_vertices[ 6]); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh_box, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 12 * sizeof(float), &cube_vertices[10]); - evas_canvas3d_mesh_index_data_copy_set(globalGraphical.mesh_box, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &cube_indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(globalGraphical.mesh_box, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(globalGraphical.mesh_box, EVAS_CANVAS3D_SHADER_MODE_PHONG); - evas_canvas3d_mesh_frame_material_set(globalGraphical.mesh_box, 0, globalGraphical.material_box); - - globalGraphical.mesh_nodebox = - efl_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH), evas_canvas3d_node_position_set(efl_added, 0, -30.0, 0.0)); - evas_canvas3d_node_member_add(globalGraphical.root_node, globalGraphical.mesh_nodebox); - evas_canvas3d_node_mesh_add(globalGraphical.mesh_nodebox, globalGraphical.mesh_box); -} -static void -_change_scene_setup() -{ - Eo *node = NULL, *m = NULL; - Eina_List *l = NULL; - int i = 0; - int quantity = (globalGraphical.count + 1) * (globalGraphical.count + 1); - evas_canvas3d_camera_projection_perspective_set(globalGraphical.camera, globalGraphical.angle, 1.0, 2.0, 1000); - - EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node) - { - evas_canvas3d_node_member_del(globalGraphical.root_node, node); - globalGraphical.list_nodes = eina_list_remove(globalGraphical.list_nodes, node); - /*efl_del(node);Unless evas_canvas3d_destructors work properly*/ - } - eina_list_free(globalGraphical.list_nodes); - eina_list_free(l); - - - EINA_LIST_FOREACH (globalGraphical.list_meshes, l, m) - { - globalGraphical.list_meshes = eina_list_remove(globalGraphical.list_meshes, m); - /*efl_del(m); Unless evas_canvas3d_destructors work properly*/ - } - eina_list_free(globalGraphical.list_meshes); - eina_list_free(l); - - /* Add the mesh with target precision */ - _sphere_init(globalGraphical.precision); - for (i = 0; i < quantity; i++) - { - globalGraphical.mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, globalGraphical.evas); - if (!globalGraphical.model_path) - { - evas_canvas3d_mesh_vertex_count_set(globalGraphical.mesh, globalGraphical.vertex_count); - evas_canvas3d_mesh_frame_add(globalGraphical.mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, sizeof(vertex), &globalGraphical.vertices[0].position); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, sizeof(vertex), &globalGraphical.vertices[0].normal); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT, sizeof(vertex), &globalGraphical.vertices[0].tangent); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, sizeof(vertex), &globalGraphical.vertices[0].color); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, sizeof(vertex), &globalGraphical.vertices[0].texcoord); - evas_canvas3d_mesh_index_data_copy_set(globalGraphical.mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, globalGraphical.index_count, &globalGraphical.indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(globalGraphical.mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(globalGraphical.mesh, EVAS_CANVAS3D_SHADER_MODE_PHONG); - } - else - { - efl_file_simple_load(globalGraphical.mesh, globalGraphical.model_path, NULL); - evas_canvas3d_mesh_frame_material_set(globalGraphical.mesh, 0, globalGraphical.material); - evas_canvas3d_mesh_shader_mode_set(globalGraphical.mesh, EVAS_CANVAS3D_SHADER_MODE_PHONG); - } - - if (globalGraphical.flags.fog_enable) - { - evas_canvas3d_mesh_fog_enable_set(globalGraphical.mesh, EINA_TRUE); - evas_canvas3d_mesh_fog_color_set(globalGraphical.mesh, FOG_COLOR, FOG_FACTOR); - } - else - { - evas_canvas3d_mesh_fog_enable_set(globalGraphical.mesh, EINA_FALSE); - } - if (globalGraphical.flags.colorpick_enable) - evas_canvas3d_mesh_color_pick_enable_set(globalGraphical.mesh, EINA_TRUE); - else - evas_canvas3d_mesh_color_pick_enable_set(globalGraphical.mesh, EINA_FALSE); - - if (globalGraphical.flags.blend_enable) - { - evas_canvas3d_mesh_blending_enable_set(globalGraphical.mesh, EINA_TRUE); - evas_canvas3d_mesh_blending_func_set(globalGraphical.mesh, EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA, EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA); - } - else - evas_canvas3d_mesh_blending_enable_set(globalGraphical.mesh, EINA_FALSE); - - evas_canvas3d_mesh_frame_material_set(globalGraphical.mesh, 0, globalGraphical.material); - globalGraphical.list_meshes = eina_list_append(globalGraphical.list_meshes, globalGraphical.mesh); - } - - /*Add target count nodes*/ - _sphere_count(globalGraphical.count, 0.2); - for (i = 0; i < quantity; i++) - { - globalGraphical.mesh_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH), evas_canvas3d_node_position_set(efl_added, globalGraphical.places[i].position.x * 20, globalGraphical.places[i].position.y * 20, globalGraphical.places[i].position.z * 20)); - if (globalGraphical.model_path) - evas_canvas3d_node_scale_set(globalGraphical.mesh_node, 0.2, 0.2, 0.2); - evas_canvas3d_node_member_add(globalGraphical.root_node, globalGraphical.mesh_node); - evas_canvas3d_node_mesh_add(globalGraphical.mesh_node, (Eo*)eina_list_nth(globalGraphical.list_meshes, i)); - globalGraphical.list_nodes = eina_list_append(globalGraphical.list_nodes, globalGraphical.mesh_node); - } - - - if (!globalGraphical.flags.fps_enable) - ecore_animator_frametime_set(1.0 / (globalGraphical.speed)); - else - ecore_animator_frametime_set(0.0001); - - if (globalGraphical.flags.shadow_enable) - evas_canvas3d_scene_shadows_enable_set(globalGraphical.scene, EINA_TRUE); - else - evas_canvas3d_scene_shadows_enable_set(globalGraphical.scene, EINA_FALSE); - - if (globalGraphical.flags.colorpick_enable) - { - evas_canvas3d_scene_color_pick_enable_set(globalGraphical.scene, EINA_TRUE); - } - else - evas_canvas3d_scene_color_pick_enable_set(globalGraphical.scene, EINA_FALSE); -} - -static void -_init_scene(Evas_Object *img) -{ - int i, x, y, w, h; - int quantity = (globalGraphical.count + 1) * (globalGraphical.count + 1); - /*Allocate memory - eina_mempool*/ - - /* Add a scene object .*/ - globalGraphical.scene = efl_add(EVAS_CANVAS3D_SCENE_CLASS, globalGraphical.evas); - - /* Add the root node for the scene. */ - globalGraphical.root_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_NODE)); - - /* Add the camera. */ - globalGraphical.camera = efl_add(EVAS_CANVAS3D_CAMERA_CLASS, globalGraphical.evas); - evas_canvas3d_camera_projection_perspective_set(globalGraphical.camera, globalGraphical.angle, 1.0, 2.0, 1000.0); - - globalGraphical.camera_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_CAMERA)); - evas_canvas3d_node_camera_set(globalGraphical.camera_node, globalGraphical.camera); - evas_canvas3d_node_position_set(globalGraphical.camera_node, 0.0, 0.0, 25.0); - evas_canvas3d_node_look_at_set(globalGraphical.camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - evas_canvas3d_node_member_add(globalGraphical.root_node, globalGraphical.camera_node); - - globalGraphical.light = efl_add(EVAS_CANVAS3D_LIGHT_CLASS, globalGraphical.evas); - evas_canvas3d_light_ambient_set(globalGraphical.light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_diffuse_set(globalGraphical.light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_specular_set(globalGraphical.light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_projection_perspective_set(globalGraphical.light, globalGraphical.angle / 5, 1.0, 1.0, 1000.0); - evas_canvas3d_light_spot_cutoff_set(globalGraphical.light, globalGraphical.angle / 15); - - globalGraphical.light_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_LIGHT)); - evas_canvas3d_node_light_set(globalGraphical.light_node, globalGraphical.light); - evas_canvas3d_node_position_set(globalGraphical.light_node, 0.0, 100.0, 1.0); - evas_canvas3d_node_look_at_set(globalGraphical.light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - evas_canvas3d_node_member_add(globalGraphical.root_node, globalGraphical.light_node); - - - globalGraphical.material = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, globalGraphical.evas); - globalGraphical.texture = efl_add(EVAS_CANVAS3D_TEXTURE_CLASS, globalGraphical.evas); - efl_file_simple_load(globalGraphical.texture, "target_texture.png", NULL); - evas_canvas3d_texture_filter_set(globalGraphical.texture, EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR, EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR); - evas_canvas3d_texture_wrap_set(globalGraphical.texture, EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT); - evas_canvas3d_material_texture_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, globalGraphical.texture); - evas_canvas3d_material_texture_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, globalGraphical.texture); - evas_canvas3d_material_enable_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_enable_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE); - evas_canvas3d_material_color_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1.0, 0.2, 0.2, 0.2); - evas_canvas3d_material_color_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1.0, 0.0, 0.0, 0.2); - evas_canvas3d_material_color_set(globalGraphical.material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 0.2); - /* Add the mesh with target precision */ - _sphere_init(globalGraphical.precision); - - for (i = 0; i < quantity; i++) - { - globalGraphical.mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, globalGraphical.evas); - if (!globalGraphical.model_path) - { - evas_canvas3d_mesh_vertex_count_set(globalGraphical.mesh, globalGraphical.vertex_count); - evas_canvas3d_mesh_frame_add(globalGraphical.mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, sizeof(vertex), &globalGraphical.vertices[0].position); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, sizeof(vertex), &globalGraphical.vertices[0].normal); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT, sizeof(vertex), &globalGraphical.vertices[0].tangent); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, sizeof(vertex), &globalGraphical.vertices[0].color); - evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, sizeof(vertex), &globalGraphical.vertices[0].texcoord); - evas_canvas3d_mesh_index_data_copy_set(globalGraphical.mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, globalGraphical.index_count, &globalGraphical.indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(globalGraphical.mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(globalGraphical.mesh, EVAS_CANVAS3D_SHADER_MODE_PHONG); - } - else - { - efl_file_simple_load(globalGraphical.mesh, globalGraphical.model_path, NULL); - evas_canvas3d_mesh_frame_material_set(globalGraphical.mesh, 0, globalGraphical.material); - evas_canvas3d_mesh_shader_mode_set(globalGraphical.mesh, EVAS_CANVAS3D_SHADER_MODE_PHONG); - } - evas_canvas3d_mesh_frame_material_set(globalGraphical.mesh, 0, globalGraphical.material); - globalGraphical.list_meshes = eina_list_append(globalGraphical.list_meshes, globalGraphical.mesh); - } - - /*Add target count meshes*/ - _sphere_count(globalGraphical.count, 0.2); - - for (i = 0; i < quantity; i++) - { - globalGraphical.mesh_node = - efl_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH), evas_canvas3d_node_position_set(efl_added, globalGraphical.places[i].position.x * 20, globalGraphical.places[i].position.y * 20, globalGraphical.places[i].position.z * 20)); - if (globalGraphical.model_path) - evas_canvas3d_node_scale_set(globalGraphical.mesh_node, 0.2, 0.2, 0.2); - evas_canvas3d_node_member_add(globalGraphical.root_node, globalGraphical.mesh_node); - evas_canvas3d_node_mesh_add(globalGraphical.mesh_node, (Eo*)eina_list_nth(globalGraphical.list_meshes, i)); - globalGraphical.list_nodes = eina_list_append(globalGraphical.list_nodes, globalGraphical.mesh_node); - } - - _init_bounding(); - evas_object_geometry_get(img, &x, &y, &w, &h); - evas_canvas3d_scene_root_node_set(globalGraphical.scene, globalGraphical.root_node); - evas_canvas3d_scene_camera_node_set(globalGraphical.scene, globalGraphical.camera_node); - evas_canvas3d_scene_size_set(globalGraphical.scene, w, h); - - ecore_animator_frametime_set(1.0 / (globalGraphical.speed)); -} - -static Eina_Bool -_xml_attr_data(void *data EINA_UNUSED, const char *key, const char *value) -{ - char *format = NULL, *tmp = NULL, *a = NULL; - int i; - - if (!strcmp("path", key)) - { - if (!strcmp("none", value)) - { - globalGraphical.model_path = NULL; - } - else - { - globalGraphical.model_path = strdup(value);/*Don't forget update UI*/ - tmp = strdup(globalGraphical.model_path); - a = strrchr(tmp,'.'); - if (!a) - { - free(tmp); - return EINA_FALSE; - } - format = malloc(sizeof (char) * (strlen(a) - 1)); - for (i = 0; i <= (int)strlen(a) - 1; i++) - format[i] = a[i + 1]; - if (strcmp(format, "md2") && strcmp(format, "obj") && strcmp(format, "ply")) - { - printf("\nUnsupported fromat file\n"); - globalGraphical.model_path = NULL; - } - free(format); - free(tmp); - } - } - else if (!strcmp("count", key)) - globalGraphical.count = atoi(value); - else if (!strcmp("speed", key)) - globalGraphical.speed = atoi(value); - else if (!strcmp("precision", key)) - globalGraphical.precision = atoi(value); - else if (!strcmp("angle", key)) - globalGraphical.angle = atoi(value); - - return EINA_TRUE; -} - -static Eina_Bool -_xml_get_data(void *data EINA_UNUSED, Eina_Simple_XML_Type type, const char *content, - unsigned offset EINA_UNUSED, unsigned length) -{ - char str[512]; - switch (type) - { - case EINA_SIMPLE_XML_OPEN: - { - if (!strncmp("modelpath", content, strlen("modelpath"))) - { - const char *tags = eina_simple_xml_tag_attributes_find(content, length); - eina_simple_xml_attributes_parse(tags, length - (tags - content), _xml_attr_data, str); - } - else if (!strncmp("modelcount", content, strlen("modelcount"))) - { - const char *tags = eina_simple_xml_tag_attributes_find(content, length); - eina_simple_xml_attributes_parse(tags, length - (tags - content), _xml_attr_data, str); - } - else if (!strncmp("animspeed", content, strlen("animspeed"))) - { - const char *tags = eina_simple_xml_tag_attributes_find(content, length); - eina_simple_xml_attributes_parse(tags, length - (tags - content), _xml_attr_data, str); - } - else if (!strncmp("sphereprecision", content, strlen("sphereprecision"))) - { - const char *tags = eina_simple_xml_tag_attributes_find(content, length); - eina_simple_xml_attributes_parse(tags, length - (tags - content), _xml_attr_data, str); - } - else if (!strncmp("perspective", content, strlen("perspective"))) - { - const char *tags = eina_simple_xml_tag_attributes_find(content, length); - eina_simple_xml_attributes_parse(tags, length - (tags - content), _xml_attr_data, str); - } - } - default: - break; - } - - return EINA_TRUE; -} - -static void _init_graphical() -{ - Eina_File *config = NULL; - char *buffer = NULL; - config = eina_file_open("initial_config.xml", EINA_FALSE); - /*Set default values*/ - globalGraphical.count = 1; - globalGraphical.speed = 10; - globalGraphical.precision = 100; - globalGraphical.angle = 120; - globalGraphical.img = NULL; - globalGraphical.init_scene = _init_scene; - globalGraphical.change_scene_setup = _change_scene_setup; - globalGraphical.flags.shadow_enable = EINA_FALSE; - globalGraphical.flags.fog_enable = EINA_FALSE; - globalGraphical.flags.colorpick_enable = EINA_FALSE; - globalGraphical.flags.blend_enable = EINA_FALSE; - globalGraphical.flags.fps_enable = EINA_FALSE; - globalGraphical.model_path = NULL; - - if (!config) - printf("Could not open initial_config.xml, count=4, speed=10, precision=100, perspective=120"); - else - { - buffer = (char*)(eina_file_map_all(config, EINA_FILE_RANDOM)); - eina_simple_xml_parse(buffer, eina_file_size_get(config), EINA_TRUE, _xml_get_data, NULL); - eina_file_close(config); - } -} -Evas_Object * -init_graphical_window(Evas_Object *img) -{ - _init_graphical(); - globalGraphical.evas = evas_object_evas_get(img); - _init_scene(img); - efl_canvas_scene3d_set(img, globalGraphical.scene); - - return img; -} - diff --git a/src/examples/elementary/performance/graphical_struct.h b/src/examples/elementary/performance/graphical_struct.h deleted file mode 100644 index a38806d94f..0000000000 --- a/src/examples/elementary/performance/graphical_struct.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef GRAPHICAL_STRUCT_H -#define GRAPHICAL_STRUCT_H - -typedef struct _vec4 -{ - float x; - float y; - float z; - float w; -} vec4; - -typedef struct _vec3 -{ - float x; - float y; - float z; -} vec3; - -typedef struct _vec2 -{ - float x; - float y; -} vec2; -typedef struct _vertex -{ - vec3 position; - vec3 normal; - vec3 tangent; - vec4 color; - vec3 texcoord; -} vertex; - -typedef struct _place -{ - vec3 position; -} place; - -typedef struct _Flags_Change -{ - Eina_Bool fog_enable; - Eina_Bool shadow_enable; - Eina_Bool colorpick_enable; - Eina_Bool blend_enable; - Eina_Bool fps_enable; -} Changes; - -typedef struct _Graphical -{ - Evas *evas; - Evas_Object *img; - Eo *scene; - Eo *root_node; - Eo *light_node; - Eo *light; - Eo *camera_node; - Eo *camera; - Eo *mesh_node; - Eo *mesh; - Eo *material; - Eo *material_box; - Eo *texture; - Eo *mesh_box; - Eo *mesh_nodebox; - Eo *texture_box; - - Eina_List *list_nodes; - Eina_List *list_meshes; - - const char *model_path; - - void (*init_scene)(); - void (*change_scene_setup)(); - - vertex *vertices; - place *places; - unsigned short *indices; - int index_count; - int vertex_count; - - int count; - int speed; - int precision; - int angle; - - Changes flags; - -} Graphical; - -extern Graphical globalGraphical; -#endif diff --git a/src/examples/elementary/performance/initial_config.xml b/src/examples/elementary/performance/initial_config.xml deleted file mode 100644 index b058b60aa8..0000000000 --- a/src/examples/elementary/performance/initial_config.xml +++ /dev/null @@ -1,11 +0,0 @@ -<!--Use it for initial loading --> -<?xml version="1.0" encoding="UTF-8"?> -<approot> - <defvalues> - <modelpath path="none"></modelpath> - <modelcount count="2"></modelcount> - <animspeed speed="100"></animspeed> - <sphereprecision precision="10"></sphereprecision> - <perspective angle="120"></perspective> - </defvalues> -</approot> diff --git a/src/examples/elementary/performance/layout.edc b/src/examples/elementary/performance/layout.edc deleted file mode 100644 index 52430d4018..0000000000 --- a/src/examples/elementary/performance/layout.edc +++ /dev/null @@ -1,170 +0,0 @@ -collections { - group { name: "new/layout/0"; - broadcast_signal: 0; - parts { - part { name: "area.bg"; - type: SPACER; - description { state: "default" 0; - align: 0.0 0.0; - min: 1000 600; - } - } - part { name: "area.controls"; - type: SPACER; - description { state: "default" 0; - align: 0.0 0.0; - min: 800 110; - max: -1 110; - rel1 { - to: "area.bg"; - } - rel2 { - to: "area.bg"; - } - } - } - part { name: "area.content"; - type: SPACER; - description { state: "default" 0; - align: 0.0 0.0; - rel1 { - to: "area.bg"; - } - rel2 { - to: "area.bg"; - } - } - } - part { name: "padding.controls.rel1"; - type: SPACER; - description { state: "default" 0; - align: 0 0; - max: 5 5; - rel1 { - to: "area.controls"; - } - rel2 { - to: "area.controls"; - } - } - } - part { name: "padding.controls.rel2"; - type: SPACER; - description { state: "default" 0; - align: 1 1; - min: 5 5; - max: 5 5; - fixed: 1 1; - rel1 { - to: "area.controls"; - } - rel2 { - relative: 1 0; - to: "area.content"; - } - } - } - part { name: "swallow.content"; - type: SWALLOW; - description { state: "default" 0; - align: 0 0; - min: 800 600; - rel1 { - to: "area.content"; - } - rel2 { - to: "area.content"; - } - } - } - part { name: "swallow.btn.startexit"; - type: SWALLOW; - description { state: "default" 0; - align: 0 0; - min: 800 50; - max: -1 50; - fixed: 1 1; - rel1 { - relative: 1 1; - to: "padding.controls.rel1"; - } - rel2 { - relative: 0 0; - offset: 0 0; - to: "padding.controls.rel2"; - } - } - } - part { name: "swallow.controls.btn"; - type: SWALLOW; - description { state: "default" 0; - align: 0 0; - min: 800 20; - max: -1 20; - fixed: 1 1; - rel1 { - relative: 0 1; - to: "padding1"; - } - rel2 { - relative: 0 0; - to: "padding.controls.rel2"; - } - } - } - part { name: "new_features"; - type: SWALLOW; - description { state: "default" 0; - align: 0 0; - min: 800 20; - max: -1 20; - fixed: 1 1; - rel1 { - relative: 0 1; - offset: -1 -1; - to: "padding5"; - } - rel2 { - relative: 0 0; - to: "padding.controls.rel2"; - } - } - } - part { name: "padding1"; - type: SPACER; - description { state: "default" 0; - align: 0 0; - min: 0 5; - max: -1 5; - fixed: 1 1; - rel1 { - relative: 1 1; - to_x: "padding.controls.rel1"; - to_y: "swallow.btn.startexit"; - } - rel2 { - relative: 0 0; - to: "padding.controls.rel2"; - } - } - } - part { name: "padding5"; - type: SPACER; - description { state: "default" 0; - align: 0 0; - min: 0 5; - max: -1 5; - fixed: 1 1; - rel1 { - relative: 0 1; - to: "swallow.controls.btn"; - } - rel2 { - relative: 0 1; - to: "padding.controls.rel2"; - } - } - } - } - } -} diff --git a/src/examples/elementary/performance/meson.build b/src/examples/elementary/performance/meson.build deleted file mode 100644 index cd209955a8..0000000000 --- a/src/examples/elementary/performance/meson.build +++ /dev/null @@ -1,31 +0,0 @@ -examples = [ - 'performance.c', - 'camera_light.c', - 'graphical.c', -] - -edc_files = [ - 'layout.edc' -] - -themes = [] - -foreach edc_file : edc_files - themes += custom_target('edje_cc_' + edc_file, - depends : edje_depends, - input : edc_file, - output : '@BASENAME@.edj', - command : edje_cc_exe + ['-beta', - '-id', meson.current_source_dir(), - '-fd', meson.current_source_dir(), - '-sd', meson.current_source_dir(), - '-vd', meson.current_source_dir(), - '-dd', meson.current_source_dir(), - '-md', meson.current_source_dir(), - '-td', meson.current_source_dir(), - '@INPUT@', '@OUTPUT@'], - ) -endforeach - -executable(example, [examples] + themes, dependencies: [elementary, ecore]) - diff --git a/src/examples/elementary/performance/performance.c b/src/examples/elementary/performance/performance.c deleted file mode 100644 index 75f330ccc4..0000000000 --- a/src/examples/elementary/performance/performance.c +++ /dev/null @@ -1,953 +0,0 @@ -/** - * Example for testing performance of Evas 3D library - * - * Program should be runned with 4 parameters: - * 1 - count parameter (NP) - * 2 - speed parameter (SP) - * 3 - precision parameter (PP) - * 4 - camera parameter (CP) - * - * NP sets number of spheres. Count of spheres is (NP+1)^2. - * SP sets speed of rotation. One revolution of root node takes 1200/SP seconds. It is count of calculation of position per second. - * PP sets number of sphere's vertices. Count of vertices is (NP+1)^2. - * CP sets camera's perspective angle in degrees. - * - * Right click of mouse show/hide navigation panel - * - * @verbatim - * Just use script ./run with key -a: enable automation testing, -l: change which only in local repository, -p: disable navigation panel - * @endverbatim - */ - -/*enable automation test*/ -#ifdef ENABLE_ATPORT - #include "at_port.h" -#endif - -#include <math.h> -#include <stdlib.h> -#include <time.h> -#include <stdio.h> -#include <stdlib.h> - -#ifndef EFL_BETA_API_SUPPORT -# define EFL_BETA_API_SUPPORT -#endif - -#include <Eo.h> -#include <Evas.h> -#include <Ecore.h> -#include <Ecore_Evas.h> -#include <Elementary.h> - -#include "Tools.h" - -#include "graphical_struct.h" - -#define WIDTH 1000 -#define HEIGHT 600 - -Graphical globalGraphical; - -/*Variable for fps*/ -int fps_frames = 0; - -Eina_Slstr * _value_int_to_char(int value, const char *description) -{ - if (description) - return eina_slstr_printf("%s %d", description, value); - return eina_slstr_printf("%d", value); -} - -static Eina_Bool -_timer_update(void *data EINA_UNUSED) -{ - printf(" frame rate = %f fps\n", fps_frames / 10.0); - fps_frames = 0; - return EINA_TRUE; -} -static Eina_Bool -_animate_scene(void *data) -{ - Eina_List *l; - Evas_Canvas3D_Node *node; - - static float angle = 0.0f; - angle += 0.03; - - evas_canvas3d_node_look_at_set((Evas_Canvas3D_Node *)data, EVAS_CANVAS3D_SPACE_PARENT, 8 * sin(angle), 0.0, 8 * cos(angle), EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - - EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node) - { - evas_canvas3d_node_orientation_angle_axis_set(node, 10 * angle, 1.0, 1.0, 0.0); - } - - /* Rotate */ - if (angle > 360.0) angle -= 360.0f; - - fps_frames++; - - return EINA_TRUE; -} - - -static void -_on_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, - void *event_info) -{ - Evas_Event_Mouse_Down *ev = event_info; - Evas_Coord x, y, w, h; - Evas_Coord obj_x, obj_y; - int scene_w, scene_h; - Evas_Real scene_x, scene_y; - Evas_Real s, t; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Mesh *m; - Eina_Bool pick; - clock_t time; - float diff_sec; - if (ev->button == 3) - { - if (evas_object_visible_get((Evas_Object*)data)) - evas_object_hide((Evas_Object*)data); - else - evas_object_show((Evas_Object*)data); - } - else - { - evas_object_geometry_get(obj, &x, &y, &w, &h); - - obj_x = ev->canvas.x - x; - obj_y = ev->canvas.y - y; - - evas_canvas3d_scene_size_get(globalGraphical.scene, &scene_w, &scene_h); - - scene_x = obj_x * scene_w / (Evas_Real)w; - scene_y = obj_y * scene_h / (Evas_Real)h; - - time = clock(); - if (globalGraphical.flags.colorpick_enable) - { - pick = evas_canvas3d_scene_color_pick_enable_set(globalGraphical.scene, EINA_TRUE); - pick = evas_canvas3d_scene_pick(globalGraphical.scene, ev->canvas.x, ev->canvas.y, &n, &m, NULL, NULL); - time = clock() - time; - diff_sec = ((float)time) / CLOCKS_PER_SEC / 10; - if (pick) - { - printf("Boom! Color pick time expended for pick: %2.7f \n", diff_sec); - if (n != globalGraphical.mesh_nodebox) - evas_canvas3d_node_scale_set(n, 0.5, 0.5, 0.5); - } - } - else - { - pick = evas_canvas3d_scene_color_pick_enable_set(globalGraphical.scene, EINA_FALSE); - pick = evas_canvas3d_scene_pick(globalGraphical.scene, scene_x, scene_y, &n, &m, &s, &t); - time = clock() - time; - diff_sec = ((float)time) / CLOCKS_PER_SEC / 10; - if (pick) - { - printf("Boom! Geometry pick time expended for pick: %2.7f, TexCoord (%f, %f)\n", diff_sec, s, t); - if (n != globalGraphical.mesh_nodebox) - evas_canvas3d_node_scale_set(n, 0.5, 0.5, 0.5); - } - } - } -} -static void -_btnstart_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - globalGraphical.change_scene_setup(); -} - -static void -_btnexit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - elm_exit(); -} - -static void -_btnstop_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - const char *status = NULL; - status = elm_object_text_get(obj); - if (status != NULL && !strcmp(status, "Stop")) - { - elm_object_text_set(obj, "Start"); - ecore_animator_freeze((Ecore_Animator *)data); - } - else - { - elm_object_text_set(obj, "Stop"); - ecore_animator_thaw((Ecore_Animator *)data); - } -} -static void -_node_orientation_change_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_Object_Item *it; - Eina_List *l; - Evas_Canvas3D_Node *node; - it = elm_flipselector_selected_item_get((Evas_Object*)data); - const char *str = elm_object_item_text_get(it); - if (str && !strcmp(str, "root node")) - evas_canvas3d_node_orientation_angle_axis_set(globalGraphical.root_node, 15, 1.0, 1.0, 1.0); - else - { - EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node) - { - evas_canvas3d_node_orientation_angle_axis_set((Eo*)node, 15, 1.0, 1.0, 1.0); - } - } -} -static void -_node_position_change_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_Object_Item *it; - Eina_List *l; - Evas_Canvas3D_Node *node; - it = elm_flipselector_selected_item_get((Evas_Object*)data); - const char *str = elm_object_item_text_get(it); - if (str && !strcmp(str, "root node")) - evas_canvas3d_node_position_set(globalGraphical.root_node, 10.0, 1.0, 1.0); - else - { - EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node) - { - evas_canvas3d_node_position_set((Eo*)node, 1.0, 1.0, 1.0); - } - } -} -static void -_node_scale_change_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_Object_Item *it; - Eina_List *l; - Evas_Canvas3D_Node *node; - it = elm_flipselector_selected_item_get((Evas_Object*)data); - const char *str = elm_object_item_text_get(it); - if (str && !strcmp(str, "root node")) - evas_canvas3d_node_scale_set(globalGraphical.root_node, 1.0, 1.0, 1.0); - else - { - EINA_LIST_FOREACH (globalGraphical.list_nodes, l, node) - { - evas_canvas3d_node_scale_set((Eo*)node, 1.0, 1.0, 1.0); - } - } -} -static void -_countdec10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - int tmp; - - globalGraphical.count -= 10; - if (globalGraphical.count < 0) tmp = globalGraphical.count = 0; - else - tmp = ((globalGraphical.count + 1) * (globalGraphical.count + 1)); - - buf = _value_int_to_char(((tmp <= 1) ? 0 : tmp), "quantity:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_countdec_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - int tmp; - - globalGraphical.count--; - if (globalGraphical.count < 0) tmp = globalGraphical.count = 0; - else - tmp = ((globalGraphical.count + 1) * (globalGraphical.count + 1)); - buf = _value_int_to_char(((tmp <= 1) ? 0 : tmp), "quantity:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_countinc_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.count++; - - buf = _value_int_to_char(((globalGraphical.count + 1) * (globalGraphical.count + 1)), "quantity:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_countinc10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.count += 10; - - buf = _value_int_to_char(((globalGraphical.count + 1) * (globalGraphical.count + 1)), "quantity:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_speeddec10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.speed -= 10; - if (globalGraphical.speed <= 0) globalGraphical.speed = 10; - - buf = _value_int_to_char(globalGraphical.speed, "speed:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_speeddec_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.speed--; - if (globalGraphical.speed <= 0) globalGraphical.speed = 10; - - buf = _value_int_to_char(globalGraphical.speed, "speed:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_speedinc_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.speed++; - - buf = _value_int_to_char(globalGraphical.speed, "speed:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_speedinc10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.speed += 10; - - buf = _value_int_to_char(globalGraphical.speed, "speed:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_precisiondec10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.precision -= 10; - if (globalGraphical.precision <= 0) globalGraphical.precision = 10; - - buf = _value_int_to_char(globalGraphical.precision, "precision:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_precisiondec_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.precision--; - if (globalGraphical.precision <= 0) globalGraphical.precision = 10; - - buf = _value_int_to_char(globalGraphical.precision, "precision:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_precisioninc_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.precision++; - - buf = _value_int_to_char(globalGraphical.precision, "precision:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_precisioninc10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.precision += 10; - - buf = _value_int_to_char(globalGraphical.precision, "precision:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_angledec10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.angle -= 10; - if (globalGraphical.angle <= 0) globalGraphical.angle = 10; - - buf = _value_int_to_char(globalGraphical.angle, "angle:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_angledec_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.angle--; - if (globalGraphical.angle <= 0) globalGraphical.angle = 10; - - buf = _value_int_to_char(globalGraphical.angle, "angle:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_angleinc_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.angle++; - if (globalGraphical.angle >= 180) globalGraphical.angle = 180; - - buf = _value_int_to_char(globalGraphical.angle, "angle:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_angleinc10_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Eina_Slstr *buf; - - globalGraphical.angle += 10; - if (globalGraphical.angle >= 180) globalGraphical.angle = 180; - - buf = _value_int_to_char(globalGraphical.angle, "angle:"); - elm_object_text_set((Evas_Object*)data, buf); -} - -static void -_shadow_enable(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - if (elm_check_state_get(obj)) - globalGraphical.flags.shadow_enable = EINA_TRUE; - else - globalGraphical.flags.shadow_enable = EINA_FALSE; -} - -static void -_colorpick_enable(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - if (elm_check_state_get(obj)) - globalGraphical.flags.colorpick_enable = EINA_TRUE; - else - globalGraphical.flags.colorpick_enable = EINA_FALSE; -} - -static void -_fog_enable(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - if (elm_check_state_get(obj)) - globalGraphical.flags.fog_enable = EINA_TRUE; - else - globalGraphical.flags.fog_enable = EINA_FALSE; -} - -static void -_blend_enable(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - if (elm_check_state_get(obj)) - globalGraphical.flags.blend_enable = EINA_TRUE; - else - globalGraphical.flags.blend_enable = EINA_FALSE; -} - -static void -_cb_fps_enable(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - if (elm_check_state_get(obj)) - { - globalGraphical.flags.fps_enable = EINA_TRUE; - ecore_timer_thaw((Ecore_Timer *)data); - fps_frames = 0; - } - else - { - globalGraphical.flags.fps_enable = EINA_FALSE; - ecore_timer_freeze((Ecore_Timer *)data); - fps_frames = 0; - } -} - -static void -_load_mesh(void *data EINA_UNUSED, Evas_Object *obj, void *event_info) -{ - char *format = NULL, *a = NULL; - char name[FILENAME_MAX]; - int i = 0, j = 0; - if (event_info) - { - char *tmp = NULL; - tmp = strdup(event_info); - /*Get filename in backward*/ - for (i = strlen(tmp) - 1; i >= 0; i--, j++) - { - if (tmp[i] != '/') - name[j] = tmp[i]; - else - { - name[j] = '\0'; - break; - } - } - free(tmp); - tmp = NULL; - j = 0; - /*Reverse filename*/ - tmp = strdup(name); - for (i = strlen(tmp) - 1; i >= 0 ; i--, j++) - name[j] = tmp[i]; - - free(tmp); - free(a); - tmp = NULL; - a = NULL; - /*Get extension of file*/ - tmp = strdup(event_info); - a = strrchr(tmp,'.'); - if (!a) - { - free(tmp); - return; - } - format = malloc(sizeof (char) * (strlen(a) - 1)); - for (i = 0; i <= (int)strlen(a) - 1; i++) - format[i] = a[i + 1]; - if (!strcmp(format, "md2")) - { - globalGraphical.model_path = event_info; - elm_object_text_set(obj, name); - } - else if (!strcmp(format, "obj")) - { - globalGraphical.model_path = event_info; - elm_object_text_set(obj, name); - } - else if (!strcmp(format, "ply")) - { - globalGraphical.model_path = event_info; - elm_object_text_set(obj, name); - } - else - { - printf("\nUnsupported fromat file\n"); - globalGraphical.model_path = NULL; - elm_object_text_set(obj, "load"); - } - free(format); - free(tmp); - } - else - { - globalGraphical.model_path = NULL; - elm_object_text_set(obj, "load"); - } -} - -EAPI_MAIN - int elm_main(int argc, char **argv) -{ - Evas *evas = NULL; - Evas_Object *win = NULL, *bg = NULL, *image = NULL; - Ecore_Animator *timer = NULL; - Evas_Object *layout = NULL; - Evas_Object *btnstart = NULL, *btnexit = NULL, *btnstop = NULL; - Evas_Object *startexitbox = NULL,*testbox = NULL, *controlbox = NULL, *newfeaturesbox = NULL; - Evas_Object *countdec10 = NULL, *countinc = NULL, *countdec = NULL, *countinc10 = NULL; - Evas_Object *speeddec10 = NULL, *speedinc = NULL, *speeddec = NULL, *speedinc10 = NULL; - Evas_Object *precisiondec10 = NULL, *precisioninc = NULL, *precisiondec = NULL, *precisioninc10 = NULL; - Evas_Object *vcount = NULL, *vspeed = NULL, *vprecision = NULL, *vangle = NULL; - Evas_Object *angledec10 = NULL, *angleinc = NULL, *angledec = NULL, *angleinc10 = NULL; - Evas_Object *cb_shadow = NULL, *cb_colorpick = NULL, *cb_fog = NULL, *cb_blend = NULL, *cb_fps = NULL; - Evas_Object *fs_bt = NULL; - Evas_Object *navigation = NULL; - Evas_Object *fs_node = NULL, *bt_orientation = NULL, *bt_position = NULL, *bt_scale = NULL; - Ecore_Timer *fps_timer = NULL; - Eina_Slstr *buf; - -#ifdef ENABLE_ATPORT - at_port_h mf_at_port = NULL; -#endif - - if (!elm_init(argc, argv)) return 1; - - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); - win = elm_win_add(NULL, "3D Performance", ELM_WIN_BASIC); - evas_object_resize(win, WIDTH, HEIGHT); - elm_win_autodel_set(win, EINA_TRUE); - evas_object_show(win); - -#ifdef ENABLE_ATPORT - at_port_create(&(mf_at_port), win); - if(mf_at_port != NULL) - { - at_port_enable(mf_at_port); - } -#endif - - bg = elm_bg_add(win); - evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_bg_file_set(bg, "background.png", NULL); - elm_win_resize_object_add(win, bg); - evas_object_show(bg); - - layout = elm_layout_add(win); - evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_win_resize_object_add(win, layout); - elm_layout_file_set(layout, "layout.edj", "new/layout/0"); - evas_object_show(layout); - - startexitbox = elm_box_add(win); - elm_box_horizontal_set(startexitbox, EINA_TRUE); - elm_object_part_content_set(layout, "swallow.btn.startexit", startexitbox); - evas_object_size_hint_weight_set(startexitbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(startexitbox, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_homogeneous_set(startexitbox, EINA_TRUE); - evas_object_show(startexitbox); - - evas = evas_object_evas_get(win); - image = efl_add(EFL_CANVAS_SCENE3D_CLASS, evas); - - btnstart = elm_button_add(win); - elm_object_text_set(btnstart, "Apply"); - evas_object_size_hint_weight_set(btnstart, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(btnstart, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(startexitbox, btnstart); - evas_object_show(btnstart); - evas_object_smart_callback_add(btnstart, "clicked", _btnstart_cb, image); - - testbox = elm_box_add(win); - elm_box_horizontal_set(testbox, EINA_TRUE); - elm_box_homogeneous_set(testbox, EINA_TRUE); - elm_box_pack_end(startexitbox, testbox); - evas_object_show(testbox); - - btnstop = elm_button_add(win); - elm_object_text_set( btnstop, "Stop"); - elm_box_pack_end(testbox, btnstop); - evas_object_size_hint_weight_set(btnstop, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(btnstop, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(btnstop); - - fs_node = elm_flipselector_add(win); - elm_box_pack_end(testbox, fs_node); - elm_flipselector_item_append(fs_node, "root node", NULL, NULL); - elm_flipselector_item_append(fs_node, "mesh node", NULL, NULL); - evas_object_size_hint_weight_set(btnstop, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(btnstop, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(fs_node); - - bt_orientation = elm_button_add(win); - elm_object_text_set(bt_orientation, "Orientation"); - elm_box_pack_end(testbox, bt_orientation); - evas_object_size_hint_weight_set(bt_orientation, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bt_orientation, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(bt_orientation); - evas_object_smart_callback_add(bt_orientation, "clicked", _node_orientation_change_cb, fs_node); - - bt_position = elm_button_add(win); - elm_object_text_set(bt_position, "Position"); - elm_box_pack_end(testbox, bt_position); - evas_object_size_hint_weight_set(bt_position, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bt_position, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(bt_position); - evas_object_smart_callback_add(bt_position, "clicked", _node_position_change_cb, fs_node); - - bt_scale = elm_button_add(win); - elm_object_text_set(bt_scale, "Scale"); - elm_box_pack_end(testbox, bt_scale); - evas_object_size_hint_weight_set(bt_scale, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bt_scale, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(bt_scale); - evas_object_smart_callback_add(bt_scale, "clicked", _node_scale_change_cb, fs_node); - - btnexit = elm_button_add(win); - elm_object_text_set(btnexit, "Exit"); - elm_box_pack_end(startexitbox, btnexit); - evas_object_size_hint_weight_set(btnexit, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(btnexit, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(btnexit); - evas_object_smart_callback_add(btnexit, "clicked", _btnexit_cb, NULL); - - controlbox = elm_box_add(win); - elm_box_horizontal_set(controlbox, EINA_TRUE); - elm_object_part_content_set(layout, "swallow.controls.btn", controlbox); - evas_object_size_hint_weight_set(controlbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(controlbox, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(controlbox); - - vcount = elm_label_add(win); - buf = _value_int_to_char(121, "quantity:"); - elm_object_text_set(vcount, buf); - - countdec10 = elm_button_add(win); - elm_object_text_set(countdec10, "<<"); - elm_box_pack_end(controlbox, countdec10); - evas_object_size_hint_weight_set(countdec10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(countdec10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(countdec10); - evas_object_smart_callback_add(countdec10, "clicked", _countdec10_cb, vcount); - - countdec = elm_button_add(win); - elm_object_text_set(countdec, "<"); - elm_box_pack_end(controlbox, countdec); - evas_object_size_hint_weight_set(countdec, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(countdec, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(countdec); - evas_object_smart_callback_add(countdec, "clicked", _countdec_cb, vcount); - - elm_box_pack_end(controlbox, vcount); - evas_object_show(vcount); - - countinc = elm_button_add(win); - elm_object_text_set(countinc, ">"); - elm_box_pack_end(controlbox, countinc); - evas_object_size_hint_weight_set(countinc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(countinc, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(countinc); - evas_object_smart_callback_add(countinc, "clicked", _countinc_cb, vcount); - - countinc10 = elm_button_add(win); - elm_object_text_set(countinc10, ">>"); - elm_box_pack_end(controlbox, countinc10); - evas_object_size_hint_weight_set(countinc10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(countinc10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(countinc10); - evas_object_smart_callback_add(countinc10, "clicked", _countinc10_cb, vcount); - - vspeed = elm_label_add(win); - buf = _value_int_to_char(30, "speed:"); - elm_object_text_set(vspeed, buf); - - speeddec10 = elm_button_add(win); - elm_object_text_set(speeddec10, "<<"); - elm_box_pack_end(controlbox, speeddec10); - evas_object_size_hint_weight_set(speeddec10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(speeddec10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(speeddec10); - evas_object_smart_callback_add(speeddec10, "clicked", _speeddec10_cb, vspeed); - - speeddec = elm_button_add(win); - elm_object_text_set(speeddec, "<"); - elm_box_pack_end(controlbox, speeddec); - evas_object_size_hint_weight_set(speeddec, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(speeddec, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(speeddec); - evas_object_smart_callback_add(speeddec, "clicked", _speeddec_cb, vspeed); - - elm_box_pack_end(controlbox, vspeed); - evas_object_show(vspeed); - - speedinc = elm_button_add(win); - elm_object_text_set(speedinc, ">"); - elm_box_pack_end(controlbox, speedinc); - evas_object_size_hint_weight_set(speedinc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(speedinc, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(speedinc); - evas_object_smart_callback_add(speedinc, "clicked", _speedinc_cb, vspeed); - - speedinc10 = elm_button_add(win); - elm_object_text_set(speedinc10, ">>"); - elm_box_pack_end(controlbox, speedinc10); - evas_object_size_hint_weight_set(speedinc10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(speedinc10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(speedinc10); - evas_object_smart_callback_add(speedinc10, "clicked", _speedinc10_cb, vspeed); - - vprecision = elm_label_add(win); - buf = _value_int_to_char(100, "precision:"); - elm_object_text_set(vprecision, buf); - - precisiondec10 = elm_button_add(win); - elm_object_text_set(precisiondec10, "<<"); - elm_box_pack_end(controlbox, precisiondec10); - evas_object_size_hint_weight_set(precisiondec10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(precisiondec10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(precisiondec10); - evas_object_smart_callback_add(precisiondec10, "clicked", _precisiondec10_cb, vprecision); - - precisiondec = elm_button_add(win); - elm_object_text_set(precisiondec, "<"); - elm_box_pack_end(controlbox, precisiondec); - evas_object_size_hint_weight_set(precisiondec, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(precisiondec, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(precisiondec); - evas_object_smart_callback_add(precisiondec, "clicked", _precisiondec_cb, vprecision); - - elm_box_pack_end(controlbox, vprecision); - evas_object_show(vprecision); - - precisioninc = elm_button_add(win); - elm_object_text_set(precisioninc, ">"); - elm_box_pack_end(controlbox, precisioninc); - evas_object_size_hint_weight_set(precisioninc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(precisioninc, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(precisioninc); - evas_object_smart_callback_add(precisioninc, "clicked", _precisioninc_cb, vprecision); - - precisioninc10 = elm_button_add(win); - elm_object_text_set(precisioninc10, ">>"); - elm_box_pack_end(controlbox, precisioninc10); - evas_object_size_hint_weight_set(precisioninc10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(precisioninc10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(precisioninc10); - evas_object_smart_callback_add(precisioninc10, "clicked", _precisioninc10_cb, vprecision); - - vangle = elm_label_add(win); - buf = _value_int_to_char(120, "angle:"); - elm_object_text_set(vangle, buf); - - angledec10 = elm_button_add(win); - elm_object_text_set(angledec10, "<<"); - elm_box_pack_end(controlbox, angledec10); - evas_object_size_hint_weight_set(angledec10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(angledec10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(angledec10); - evas_object_smart_callback_add(angledec10, "clicked", _angledec10_cb, vangle); - - angledec = elm_button_add(win); - elm_object_text_set(angledec, "<"); - elm_box_pack_end(controlbox, angledec); - evas_object_size_hint_weight_set(angledec, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(angledec, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(angledec); - evas_object_smart_callback_add(angledec, "clicked", _angledec_cb, vangle); - - elm_box_pack_end(controlbox, vangle); - evas_object_show(vangle); - - angleinc = elm_button_add(win); - elm_object_text_set(angleinc, ">"); - elm_box_pack_end(controlbox, angleinc); - evas_object_size_hint_weight_set(angleinc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(angleinc, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(angleinc); - evas_object_smart_callback_add(angleinc, "clicked", _angleinc_cb, vangle); - - angleinc10 = elm_button_add(win); - elm_object_text_set(angleinc10, ">>"); - elm_box_pack_end(controlbox, angleinc10); - evas_object_size_hint_weight_set(angleinc10, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(angleinc10, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(angleinc10); - evas_object_smart_callback_add(angleinc10, "clicked", _angleinc10_cb, vangle); - - newfeaturesbox = elm_box_add(win); - elm_box_horizontal_set(newfeaturesbox, EINA_TRUE); - elm_object_part_content_set(layout, "new_features", newfeaturesbox); - evas_object_size_hint_align_set(newfeaturesbox, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(newfeaturesbox); - - cb_shadow = elm_check_add(win); - elm_object_text_set(cb_shadow, "shadow"); - elm_check_state_set(cb_shadow, EINA_FALSE); - evas_object_size_hint_align_set(cb_shadow, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_smart_callback_add(cb_shadow, "changed", _shadow_enable, NULL); - elm_box_pack_end(newfeaturesbox, cb_shadow); - evas_object_show(cb_shadow); - - cb_fog = elm_check_add(win); - elm_object_text_set(cb_fog, "fog"); - elm_check_state_set(cb_fog, EINA_FALSE); - evas_object_size_hint_align_set(cb_fog, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_smart_callback_add(cb_fog, "changed", _fog_enable, NULL); - elm_box_pack_end(newfeaturesbox, cb_fog); - evas_object_show(cb_fog); - - cb_colorpick = elm_check_add(win); - elm_object_text_set(cb_colorpick, "colorpick"); - elm_check_state_set(cb_colorpick, EINA_FALSE); - evas_object_size_hint_align_set(cb_colorpick, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_smart_callback_add(cb_colorpick, "changed", _colorpick_enable, NULL); - elm_box_pack_end(newfeaturesbox, cb_colorpick); - evas_object_show(cb_colorpick); - - cb_blend = elm_check_add(win); - elm_object_text_set(cb_blend, "blend"); - elm_check_state_set(cb_blend, EINA_FALSE); - evas_object_size_hint_align_set(cb_blend, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_smart_callback_add(cb_blend, "changed", _blend_enable, NULL); - elm_box_pack_end(newfeaturesbox, cb_blend); -#ifndef LOCAL_REPOSITORY - elm_object_disabled_set(cb_blend, EINA_TRUE); -#endif - evas_object_show(cb_blend); - - cb_fps = elm_check_add(win); - elm_object_text_set(cb_fps, "fps"); - elm_check_state_set(cb_fps, EINA_FALSE); - evas_object_size_hint_align_set(cb_fps, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(newfeaturesbox, cb_fps); - evas_object_show(cb_fps); - - /*Select model file*/ - fs_bt = elm_fileselector_button_add(win); - elm_fileselector_path_set(fs_bt, "."); - elm_object_text_set(fs_bt, "load"); - elm_fileselector_button_inwin_mode_set(fs_bt, EINA_TRUE); - evas_object_size_hint_align_set(fs_bt, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(newfeaturesbox, fs_bt); - evas_object_show(fs_bt); - evas_object_smart_callback_add(fs_bt, "file,chosen", _load_mesh, NULL); - - elm_object_part_content_set(layout, "swallow.content", image); - evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(image); - evas_render(evas); //make edje do recalculation - image = init_graphical_window(image); - - /*Update data for count, speed, precision, angle*/ - buf = _value_int_to_char((globalGraphical.count + 1) * (globalGraphical.count + 1), "quantity:"); - elm_object_text_set(vcount, buf); - buf = _value_int_to_char(globalGraphical.speed, "speed:"); - elm_object_text_set(vspeed, buf); - buf = _value_int_to_char(globalGraphical.precision, "precision:"); - elm_object_text_set(vprecision, buf); - buf = _value_int_to_char(globalGraphical.angle, "angle:"); - elm_object_text_set(vangle, buf); - if (globalGraphical.model_path) - evas_object_smart_callback_call(fs_bt, "file,chosen", (void *)globalGraphical.model_path); - - /*Create navigation panel*/ -#ifndef DISABLE_NAVIGATION_PANEL - navigation = init_panel_camera_light(win, globalGraphical.camera_node, globalGraphical.light_node, 1.0, 0.5); - panel_camera_coord_step_set(navigation, 5); - panel_camera_angle_step_set(navigation, 5); - panel_light_coord_step_set(navigation, 5); - panel_light_angle_step_set(navigation, 5); -#endif - - evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_DOWN, - _on_mouse_down, navigation); - - ecore_animator_frametime_set(1.0 / (globalGraphical.speed)); - timer = ecore_animator_add(_animate_scene, globalGraphical.light_node); - fps_timer = ecore_timer_add(10, _timer_update, NULL); - ecore_timer_freeze(fps_timer); - evas_object_smart_callback_add(cb_fps, "changed", _cb_fps_enable, (void *)fps_timer); - - evas_object_smart_callback_add(btnstop, "clicked", _btnstop_cb, timer); - - elm_run(); - elm_shutdown(); - -#ifndef DISABLE_NAVIGATION_PANEL - panel_camera_light_fini(navigation); -#endif - return 0; -} -ELM_MAIN() - diff --git a/src/examples/elementary/performance/target_texture.png b/src/examples/elementary/performance/target_texture.png Binary files differdeleted file mode 100644 index 3bcf58b3fe..0000000000 --- a/src/examples/elementary/performance/target_texture.png +++ /dev/null diff --git a/src/examples/elementary/performance/tools_private.h b/src/examples/elementary/performance/tools_private.h deleted file mode 100644 index 40d6f12afc..0000000000 --- a/src/examples/elementary/performance/tools_private.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef EFL_BETA_API_SUPPORT -# define EFL_BETA_API_SUPPORT -#endif - -#include <math.h> -#include <stdlib.h> -#include <time.h> -#include <stdio.h> -#include <stdlib.h> - -#include <Eo.h> -#include <Evas.h> -#include <Ecore.h> -#include <Ecore_Evas.h> -#include <Elementary.h> - -#define COORDRANGE 1000 -#define ANGLERANGE 360 -#define axiskeys "xyz" -#define pb "panel_struct" - -typedef struct _Panel_Struct -{ - Evas_Object *cspX, *cspY, *cspZ; - Evas_Object *cspangle; - Evas_Object *lspX, *lspY, *lspZ; - Evas_Object *lspangle; -} Panel_Struct; - -typedef struct _Axis_Key -{ - float x; - float y; - float z; -} Axis_Key; - -/*callbacks*/ -static void -_camera_light_changeX_cb(void *data, Evas_Object *obj, void *event_info); -static void -_camera_light_changeY_cb(void *data, Evas_Object *obj, void *event_info); -static void -_camera_light_changeZ_cb(void *data, Evas_Object *obj, void *event_info); -static void -_camera_light_angle_change_cb(void *data, Evas_Object *obj, void *event_info); -static void -_camera_light_axisX_change_cb(void *data, Evas_Object *obj, void *event_info); -static void -_camera_light_axisY_change_cb(void *data, Evas_Object *obj, void *event_info); -static void -_camera_light_axisZ_change_cb(void *data, Evas_Object *obj, void *event_info); diff --git a/src/examples/elementary/progressbar_example.c b/src/examples/elementary/progressbar_example.c index f6d2538dc0..c33b049959 100644 --- a/src/examples/elementary/progressbar_example.c +++ b/src/examples/elementary/progressbar_example.c @@ -117,7 +117,7 @@ _on_changed(void *data, Evas_Object *label = (Evas_Object *)data; val = elm_progressbar_value_get(obj); - if (val == 0) + if (EINA_DBL_EQ(val, 0)) { tstart = 0; elm_object_text_set(label, "ETA: N/A"); diff --git a/src/examples/elementary/sphere_hunter/EFL_defeat.png b/src/examples/elementary/sphere_hunter/EFL_defeat.png Binary files differdeleted file mode 100644 index 0839bce226..0000000000 --- a/src/examples/elementary/sphere_hunter/EFL_defeat.png +++ /dev/null diff --git a/src/examples/elementary/sphere_hunter/EFL_victory.png b/src/examples/elementary/sphere_hunter/EFL_victory.png Binary files differdeleted file mode 100644 index c5dc2ca831..0000000000 --- a/src/examples/elementary/sphere_hunter/EFL_victory.png +++ /dev/null diff --git a/src/examples/elementary/sphere_hunter/evas_3d_sphere_hunter.c b/src/examples/elementary/sphere_hunter/evas_3d_sphere_hunter.c deleted file mode 100644 index 5120154715..0000000000 --- a/src/examples/elementary/sphere_hunter/evas_3d_sphere_hunter.c +++ /dev/null @@ -1,858 +0,0 @@ -/* -* Catch all the cubes to score 10 points and win. -* w - up -* s - down -* a - left -* d - right -* space - jump -* key Up - scale + -* key Down - scale - -* n - normal scale -* TODO: add more levels. -* -* Compile with: -* edje_cc sphere_hunter.edc -* gcc -o evas_3d_sphere_hunter evas_3d_sphere_hunter.c -g `pkg-config --libs --cflags evas ecore elementary eina eo` -lm -*/ -#ifndef EFL_BETA_API_SUPPORT -# define EFL_BETA_API_SUPPORT -#endif - -#include <Elementary.h> -#include <Ecore.h> -#include <Evas.h> -#include <Eina.h> -#include <stdio.h> -#include <math.h> -#include <Eo.h> - -#define WIDTH 700 -#define HEIGHT 800 -#define ANGLE_IT 0.006 -#define GE -0.1 -#define KE 1 - -typedef struct _Scene_Data -{ - Eo *root_node; - Eo *camera_node; - Eo *light_node; - Eo *mesh_node_ball; - - Eina_List *items; - - Eo *scene; - Eo *camera; - Eo *light; - Eo *mesh_cube; - Eo *material_cube; - Eo *mesh_ball; - Eo *material_ball; -} Scene_Data; - -typedef struct _vec4 -{ - float x; - float y; - float z; - float w; -} vec4; - -typedef struct _vec3 -{ - float x; - float y; - float z; -} vec3; - -typedef struct _vec2 -{ - float x; - float y; -} vec2; - -typedef struct _vertex -{ - vec3 position; - vec3 normal; - vec3 tangent; - vec4 color; - vec3 texcoord; -} vertex; - -Evas_Object *win = NULL; -Evas_Object *layout = NULL; -Evas_Object *text = NULL; -Evas_Object *btn_restart = NULL; -Evas_Object *btn_quit = NULL; -Eina_List *nodes = NULL; - -Ecore_Animator *anim_cube = NULL; -Ecore_Animator *anim_camera = NULL; -Ecore_Animator *anim_ball = NULL; -Evas *evas = NULL; -Eo *image = NULL; - - -Evas_Real ball_position_x = 0.0; -Evas_Real ball_position_y = -1.0; -Evas_Real ball_position_z = 0.0; -Evas_Real ball_vel_x = 0.0; -Evas_Real ball_vel_y = 0.0; -Evas_Real ball_vel_z = 0.0; -Evas_Real ball_ac_x = 0.0; -Evas_Real ball_ac_y = GE; -Evas_Real ball_ac_z = 0.0; -Evas_Real plane_alpha_x = 0.0; -Evas_Real plane_alpha_z = 0.0; -Eina_Bool reload = EINA_TRUE; -Eina_Bool jump = EINA_FALSE; -Eina_Bool game = EINA_TRUE; - -vertex *vertices = NULL; -int score = 0; -int vertex_count = 0; -int index_count = 0; -unsigned short *indices = NULL; -float camera_y = 40.0; -float camera_z = 70.0; -int hight = 1; - - -static const float cube_vertices[] = -{ - /* Front */ - -1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, - 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, - -1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, - 1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, - - /* Back */ - 1.0, 1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, - -1.0, 1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, - 1.0, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - -1.0, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Left */ - -1.0, 1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, - -1.0, 1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, - -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, - -1.0, -1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Right */ - 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, - 1.0, 1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, - 1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, - 1.0, -1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, - - /* Top */ - -1.0, 1.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, - 1.0, 1.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, - -1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, - - /* Bottom */ - 1.0, -1.0, -1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, - -1.0, -1.0, -1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, -1.0, 1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, - -1.0, -1.0, 1.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -}; - -static const unsigned short cube_indices[] = -{ - /* Front */ - 0, 1, 2, 2, 1, 3, - - /* Back */ - 4, 5, 6, 6, 5, 7, - - /* Left */ - 8, 9, 10, 10, 9, 11, - - /* Right */ - 12, 13, 14, 14, 13, 15, - - /* Top */ - 16, 17, 18, 18, 17, 19, - - /* Bottom */ - 20, 21, 22, 22, 21, 23 -}; - -static void -_sphere_fini() -{ - free(vertices); - free(indices); -} - -static void -_sphere_init(int precision) -{ - int i, j; - unsigned short *idx; - - vertex_count = (precision + 1) * (precision + 1); - index_count = precision * precision * 6; - - /* Allocate buffer. */ - vertices = malloc(sizeof(vertex) * vertex_count); - indices = malloc(sizeof(unsigned short) * index_count); - - /* Calculate vertices position of the sphere mesh by using - splitting of sphere by latitude and longitude. */ - for (i = 0; i <= precision; i++) - { - double lati, y, r; - - lati = (M_PI * (double)i) / (double)precision; - y = cos(lati); - r = fabs(sin(lati)); - - for (j = 0; j <= precision; j++) - { - double longi; - vertex *v; - - longi = (M_PI * 2.0 * j) / precision; - v = &vertices[(i * (precision + 1)) + j]; - - if ((j == 0) || (j == precision)) v->position.x = 0.0; - else v->position.x = r * sin(longi); - - v->position.y = y; - - if ((j == 0) || (j == precision)) v->position.z = r; - else v->position.z = r * cos(longi); - - v->normal = v->position; - - if (v->position.x > 0.0) - { - v->tangent.x = -v->normal.y; - v->tangent.y = v->normal.x; - v->tangent.z = v->normal.z; - } - else - { - v->tangent.x = v->normal.y; - v->tangent.y = -v->normal.x; - v->tangent.z = v->normal.z; - } - - v->color.x = v->position.x; - v->color.y = v->position.y; - v->color.z = v->position.z; - v->color.w = 1.0; - - if (j == precision) v->texcoord.x = 1.0; - else if (j == 0) v->texcoord.x = 0.0; - else v->texcoord.x = (double)j / (double)precision; - - if (i == precision) v->texcoord.y = 1.0; - else if (i == 0) v->texcoord.y = 0.0; - - else v->texcoord.y = 1.0 - ((double)i / (double)precision); - } - } - - idx = &indices[0]; - - /* Calculate and fill in the buffer of indices, - prepare stage for gl triangulation. */ - for (i = 0; i < precision; i++) - { - for (j = 0; j < precision; j++) - { - *idx++ = (i * (precision + 1)) + j; - *idx++ = (i * (precision + 1)) + j + 1; - *idx++ = ((i + 1) * (precision + 1)) + j; - - *idx++ = ((i + 1) * (precision + 1)) + j; - *idx++ = (i * (precision + 1)) + j + 1; - *idx++ = ((i + 1) * (precision + 1)) + j + 1; - } - } - - /* Triangulation of sphere mesh in appliance with buffer of indices. */ - for (i = 0; i < index_count; i += 3) - { - vec3 e1, e2; - float du1, du2, dv1, dv2, f; - vec3 tangent; - - vertex *v0 = &vertices[indices[i + 0]]; - vertex *v1 = &vertices[indices[i + 1]]; - vertex *v2 = &vertices[indices[i + 2]]; - - e1.x = v1->position.x - v0->position.x; - e1.y = v1->position.y - v0->position.y; - e1.z = v1->position.z - v0->position.z; - - e2.x = v2->position.x - v0->position.x; - e2.y = v2->position.y - v0->position.y; - e2.z = v2->position.z - v0->position.z; - - du1 = v1->texcoord.x - v0->texcoord.x; - dv1 = v1->texcoord.y - v0->texcoord.y; - - du2 = v2->texcoord.x - v0->texcoord.x; - dv2 = v2->texcoord.y - v0->texcoord.y; - - f = 1.0 / ((du1 * dv2) - (du2 * dv1)); - - tangent.x = f * ((dv2 * e1.x) - (dv1 * e2.x)); - tangent.y = f * ((dv2 * e1.y) - (dv1 * e2.y)); - tangent.z = f * ((dv2 * e1.z) - (dv1 * e2.z)); - - v0->tangent = tangent; - } - - /* Coupling between vertices by calculation of tangent parametr correct value. */ - for (i = 0; i <= precision; i++) - { - for (j = 0; j <= precision; j++) - { - if (j == precision) - { - vertex *v; - v = &vertices[(i * (precision + 1)) + j]; - v->tangent = vertices[i * (precision + 1)].tangent; - } - } - } -} - -static void -_restart_level(void *data, Evas_Object *btn EINA_UNUSED, void *ev EINA_UNUSED) -{ - Eina_List *l = NULL; - Eo *item = NULL; - Scene_Data *scene = (Scene_Data *)data; - - EINA_LIST_FOREACH(scene->items, l, item) - { - evas_canvas3d_node_member_del(scene->root_node, item); - scene->items = eina_list_remove_list(scene->items, l); - } - - EINA_LIST_FOREACH(nodes, l, item) - scene->items = eina_list_append(scene->items, item); - - EINA_LIST_FOREACH(scene->items, l, item) - evas_canvas3d_node_member_add(scene->root_node, item); - - ball_position_x = 0.0; - ball_position_y = -1.0; - ball_position_z = 0.0; - ball_vel_x = 0.0; - ball_vel_y = 0.0; - ball_vel_z = 0.0; - ball_ac_x = 0.0; - ball_ac_y = GE; - ball_ac_z = 0.0; - plane_alpha_x = 0.0; - plane_alpha_z = 0.0; - score = 0; - - reload = EINA_TRUE; - game = EINA_TRUE; -} - -static void -_key_down(void *data, - Evas *e EINA_UNUSED, - Evas_Object *eo EINA_UNUSED, - void *event_info) -{ - Evas_Event_Key_Down *ev = event_info; - Scene_Data *scene = (Scene_Data *)data; - - if (reload) - { - if (!strcmp(ev->key, "w")) - { - plane_alpha_z -= ANGLE_IT; - ball_ac_z = sin(plane_alpha_z); - } - if (!strcmp(ev->key, "s")) - { - plane_alpha_z += ANGLE_IT; - ball_ac_z = sin(plane_alpha_z); - } - if (!strcmp(ev->key, "d")) - { - plane_alpha_x += ANGLE_IT; - ball_ac_x = sin(plane_alpha_x); - } - if (!strcmp(ev->key, "a")) - { - plane_alpha_x -= ANGLE_IT; - ball_ac_x = sin(plane_alpha_x); - } - if (!strcmp(ev->key, "space")) - { - ball_vel_y += KE; - ball_position_y += 0.1; - jump = EINA_TRUE; - ++hight; - } - if (!strcmp(ev->key, "Up")) - { - if (camera_y > 26.5) - { - camera_y -= 0.5; - camera_z -= 0.5 * (7.0 / 4.0); - } - } - if (!strcmp(ev->key, "Down")) - { - if (camera_y < 100.0) - { - camera_y += 0.5; - camera_z += 0.5 * (7.0 / 4.0); - } - } - if (!strcmp(ev->key, "n")) - { - camera_y = 40.0; - camera_z = 70.0; - } - if (!strcmp(ev->key, "Return")) - { - elm_layout_signal_emit(btn_restart, "elm,anim,activate", "elm"); - _restart_level(scene, NULL, NULL); - } - } -} - -static void -_quit_game(void *data EINA_UNUSED, Evas_Object *btn EINA_UNUSED, void *ev EINA_UNUSED) -{ - elm_exit(); -} - -static void -_camera_setup(Scene_Data *data) -{ - data->camera = efl_add(EVAS_CANVAS3D_CAMERA_CLASS, evas); - evas_canvas3d_camera_projection_perspective_set(data->camera, 50.0, 1.0, 1.0, 1000.0); - - data->camera_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_CAMERA)); - evas_canvas3d_node_camera_set(data->camera_node, data->camera); - evas_canvas3d_node_position_set(data->camera_node, 0.0, 40, 70); - evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - - evas_canvas3d_node_member_add(data->root_node, data->camera_node); -} - -static Eina_Bool -_animate_camera(void *data) -{ - Scene_Data *scene = (Scene_Data *)data; - - evas_canvas3d_node_position_set(scene->camera_node, 0.0, camera_y, camera_z); - - return EINA_TRUE; -} - -static void -_light_setup(Scene_Data *data) -{ - data->light = efl_add(EVAS_CANVAS3D_LIGHT_CLASS, evas); - - evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_light_projection_perspective_set(data->light, 100.0, 1.0, 1.0, 1000.0); - - data->light_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_LIGHT)); - evas_canvas3d_node_light_set(data->light_node, data->light); - evas_canvas3d_node_position_set(data->light_node, 0.1, 25.0, 0.1); - evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0); - - evas_canvas3d_node_member_add(data->root_node, data->light_node); -} - -static void -_mesh_cube_setup(Scene_Data *data) -{ - data->mesh_cube = efl_add(EVAS_CANVAS3D_MESH_CLASS, evas); - data->material_cube = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); - evas_canvas3d_material_enable_set(data->material_cube, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material_cube, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material_cube, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_color_set(data->material_cube, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_material_color_set(data->material_cube, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0); - evas_canvas3d_material_color_set(data->material_cube, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_shininess_set(data->material_cube, 50.0); - - evas_canvas3d_mesh_vertex_count_set(data->mesh_cube, 24); - evas_canvas3d_mesh_frame_add(data->mesh_cube, 0); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_cube, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_cube, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 12 * sizeof(float), &cube_vertices[ 3]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_cube, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 12 * sizeof(float), &cube_vertices[ 6]); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_cube, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 12 * sizeof(float), &cube_vertices[10]); - evas_canvas3d_mesh_index_data_set(data->mesh_cube, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &cube_indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(data->mesh_cube, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(data->mesh_cube, EVAS_CANVAS3D_SHADER_MODE_PHONG); - evas_canvas3d_mesh_frame_material_set(data->mesh_cube, 0, data->material_cube); - -} -static void -_create_bondar(Scene_Data *data, Evas_Real scale_x, Evas_Real scale_y, Evas_Real scale_z, Evas_Real x, Evas_Real y, Evas_Real z, Eina_Bool color) -{ - Eo *mesh = NULL; - Eo *node = NULL; - Eo *material = NULL; - - mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, evas); - material = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); - node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH)); - - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_shininess_set(material, 50.0); - - if (color) - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.0, 0.7, 1.0, 1.0); - else - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.0, 1.0, 1.0, 1.0); - - evas_canvas3d_mesh_vertex_count_set(mesh, 24); - evas_canvas3d_mesh_frame_add(mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 12 * sizeof(float), &cube_vertices[ 3]); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 12 * sizeof(float), &cube_vertices[ 6]); - evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 12 * sizeof(float), &cube_vertices[10]); - evas_canvas3d_mesh_index_data_set(mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, 36, &cube_indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(mesh, EVAS_CANVAS3D_SHADER_MODE_PHONG); - evas_canvas3d_mesh_frame_material_set(mesh, 0, material); - - evas_canvas3d_node_member_add(data->root_node, node); - - evas_canvas3d_node_mesh_add(node, mesh); - evas_canvas3d_node_position_set(node, x, y, z); - evas_canvas3d_node_scale_set(node, scale_x, scale_y, scale_z); - -} -static void -_create_cubes(Scene_Data *data, Evas_Real r, int count) -{ - int i; - Evas_Real alpha; - Evas_Real d_alpha; - - data->items = NULL; - d_alpha = 360 / (double)count; - - for (i = 0; i < count; i++) - { - Eo *node = NULL; - - alpha = d_alpha * i * M_PI / 180; - node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH)); - - evas_canvas3d_node_mesh_add(node, data->mesh_cube); - evas_canvas3d_node_position_set(node, r * sin(alpha), 2.0 + (r / 4 * sin(alpha)), r * cos(alpha)); - evas_canvas3d_node_scale_set(node, 1.0, 1.0, 1.0); - - evas_canvas3d_node_member_add(data->root_node, node); - - data->items = eina_list_append(data->items, node); - } -} - -static void -_mesh_ball_setup(Scene_Data *data) -{ - _sphere_init(100); - - data->mesh_ball = efl_add(EVAS_CANVAS3D_MESH_CLASS, evas); - data->material_ball = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas); - data->mesh_node_ball = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_MESH)); - - /* Setup material for ball. */ - evas_canvas3d_material_enable_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - evas_canvas3d_material_enable_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE); - evas_canvas3d_material_color_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0); - evas_canvas3d_material_color_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0); - evas_canvas3d_material_color_set(data->material_ball, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0); - evas_canvas3d_material_shininess_set(data->material_ball, 50.0); - - /* Setup mesh for ball. */ - evas_canvas3d_mesh_vertex_count_set(data->mesh_ball, vertex_count); - evas_canvas3d_mesh_frame_add(data->mesh_ball, 0); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_ball, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, sizeof(vertex), &vertices[0].position); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_ball, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, sizeof(vertex), &vertices[0].normal); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_ball, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT, sizeof(vertex), &vertices[0].tangent); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_ball, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, sizeof(vertex), &vertices[0].color); - evas_canvas3d_mesh_frame_vertex_data_set(data->mesh_ball, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, sizeof(vertex), &vertices[0].texcoord); - evas_canvas3d_mesh_index_data_set(data->mesh_ball, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &indices[0]); - evas_canvas3d_mesh_vertex_assembly_set(data->mesh_ball, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_shader_mode_set(data->mesh_ball, EVAS_CANVAS3D_SHADER_MODE_PHONG); - evas_canvas3d_mesh_frame_material_set(data->mesh_ball, 0, data->material_ball); - - evas_canvas3d_node_member_add(data->root_node, data->mesh_node_ball); - - evas_canvas3d_node_mesh_add(data->mesh_node_ball, data->mesh_ball); -} - -static void -_scene_setup(Scene_Data *data, Evas_Real r, int count) -{ - Eina_List *l = NULL; - Eo *item = NULL; - data->scene = efl_add(EVAS_CANVAS3D_SCENE_CLASS, evas); - - /* Add the root node for the scene. */ - data->root_node = efl_add(EVAS_CANVAS3D_NODE_CLASS, evas, evas_canvas3d_node_type_set(efl_added, EVAS_CANVAS3D_NODE_TYPE_NODE)); - - evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT); - evas_canvas3d_scene_shadows_enable_set(data->scene, EINA_TRUE); - evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0); - - _camera_setup(data); - _light_setup(data); - _mesh_ball_setup(data); - _mesh_cube_setup(data); - - _create_cubes(data, r, count); - _create_bondar(data, 20.0, 0.001, 20.0, 0.0, -2.0, 0.0, 1); - _create_bondar(data, 0.5, 0.5, 20.5, -20.0, -1.5, 0.0, 0); - _create_bondar(data, 0.5, 0.5, 20.5, 20.0, -1.5, 0.0, 0); - _create_bondar(data, 20.5, 0.5, 0.5, 0.0, -1.5, -20.0, 0); - _create_bondar(data, 20.5, 0.5, 0.5, 0.0, -1.5, 20.0, 0); - - EINA_LIST_FOREACH(data->items, l, item) - nodes = eina_list_append(nodes, item); - - evas_canvas3d_scene_root_node_set(data->scene, data->root_node); - evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node); -} - -char score_buffer[32]; - -static char * -_score_get(int sc) -{ - if (sc >= 0 && sc <= 10) - { - eina_convert_itoa(sc, score_buffer); - return score_buffer; - } - return "0"; -} - -static Eina_Bool -_animate_ball(void *data) -{ - Scene_Data *scene = (Scene_Data *)data; - Eina_List *l = NULL; - Eo *node = NULL; - Evas_Real x, y, z; - Evas_Real xx, yy, zz; - Evas_Real d_x, d_y, d_z; - int i = 9; - - if (scene->items && game) - { - ball_vel_x = ball_ac_x; - ball_vel_z = ball_ac_z; - ball_position_x += ball_vel_x; - ball_position_z += ball_vel_z; - } - - if (reload == EINA_TRUE) - elm_object_signal_emit(layout, "play", "efl_game"); - - evas_canvas3d_node_position_set(scene->mesh_node_ball, ball_position_x, ball_position_y, ball_position_z); - - if ((ball_position_x < -21.0) || (ball_position_x > 21.0) || (ball_position_z < -21.0) || (ball_position_z > 21.0)) - { - ball_position_y -= 2.0; - ball_vel_x = 0; - ball_vel_z = 0; - game = EINA_FALSE; - - if (ball_position_y <= -200.0) - { - ball_position_x = 0.0; - ball_position_y = -1.0; - ball_position_z = 0.0; - - elm_object_signal_emit(layout, "defeat", "efl_game"); - reload = EINA_FALSE; - } - } - else if ((ball_position_x >= 18.5) && (ball_position_x <= 21.5)) - { - ball_position_y = 0.0; - } - else if ((ball_position_z >= 18.5) && (ball_position_z <= 21.5)) - { - ball_position_y = 0.0; - } - else if ((ball_position_x <= -18.5) && (ball_position_x >= -21.5)) - { - ball_position_y = 0.0; - } - else if ((ball_position_z <= -18.5) && (ball_position_z >= -21.5)) - { - ball_position_y = 0.0; - } - else if (ball_position_y > -1.0) - { - ball_vel_y += ball_ac_y; - ball_position_y += ball_vel_y; - } - else - { - ball_vel_y = 0; - ball_position_y = -1.0; - if (jump) - { - ball_position_y = -0.9; - ball_vel_y += (1.0 / 5 * hight); - jump = EINA_FALSE; - hight = 1; - } - } - - evas_canvas3d_node_position_get(scene->mesh_node_ball, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z); - - EINA_LIST_FOREACH(scene->items, l, node) - { - evas_canvas3d_node_position_get(node, EVAS_CANVAS3D_SPACE_PARENT, &xx, &yy, &zz); - - d_x = xx - x; - d_y = yy - y; - d_z = zz - z; - - if (d_x < 2.0 && d_x > -2.0 && d_y < 2.0 && d_y > -2.0 && d_z < 2.0 && d_z > -2.0) - { - evas_canvas3d_node_member_del(scene->root_node, node); - scene->items = eina_list_remove_list(scene->items, l); - - i--; - score++; - } - } - if (!scene->items) - { - elm_object_signal_emit(layout, "victory", "efl_game"); - ball_vel_x = 0; - ball_vel_z = 0; - reload = EINA_FALSE; - } - - evas_object_text_text_set(text, _score_get(score)); - - return EINA_TRUE; -} - -static Eina_Bool -_animate_cubes(void *data) -{ - static float angle = 0.0f; - Eina_List *l = NULL; - Eo *cube = NULL; - - Scene_Data *scene = (Scene_Data *)data; - - angle += 0.5; - - EINA_LIST_FOREACH(scene->items, l, cube) - evas_canvas3d_node_orientation_angle_axis_set(cube, angle, 1.0, 1.0, 1.0); - - /* Rotate */ - if (angle > 360.0) - angle -= 360.0f; - - return EINA_TRUE; -} - -EAPI_MAIN int -elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) -{ - Scene_Data data; - Eina_Bool r = EINA_TRUE; - - elm_config_accel_preference_set("3d"); - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); - - win = elm_win_util_standard_add("__WIN__", "Sphere Hunter"); - elm_win_autodel_set(win, EINA_TRUE); - - layout = elm_layout_add(win); - elm_layout_file_set(layout, "sphere_hunter.edj", "game"); - evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, layout); - - text = evas_object_text_add(win); - evas_object_text_font_set(text, "Sans", 75); - elm_layout_content_set(layout, "swallow.score_text", text); - evas_object_show(text); - - btn_restart = elm_button_add(win); - elm_layout_content_set(layout, "swallow.reload", btn_restart); - elm_object_text_set(btn_restart, "R E S T A R T L E V E L"); - evas_object_show(btn_restart); - - btn_quit = elm_button_add(win); - elm_layout_content_set(layout, "swallow.exit", btn_quit); - elm_object_text_set(btn_quit, "E X I T"); - evas_object_show(btn_quit); - - evas = evas_object_evas_get(win); - - _scene_setup(&data, 10.0, 10); - - image = efl_add(EFL_CANVAS_SCENE3D_CLASS, evas); - efl_gfx_entity_visible_set(image, EINA_TRUE); - efl_canvas_scene3d_set(image, data.scene); - - evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL); - - elm_layout_content_set(layout, "swallow.scene", image); - evas_object_show(layout); - - r &= evas_object_key_grab(win, "w", 0, 0, EINA_TRUE); - r &= evas_object_key_grab(win, "s", 0, 0, EINA_TRUE); - r &= evas_object_key_grab(win, "d", 0, 0, EINA_TRUE); - r &= evas_object_key_grab(win, "a", 0, 0, EINA_TRUE); - r &= evas_object_key_grab(win, "n", 0, 0, EINA_TRUE); - r &= evas_object_key_grab(win, "Up", 0, 0, EINA_TRUE); - r &= evas_object_key_grab(win, "Down", 0, 0, EINA_TRUE); - r &= evas_object_key_grab(win, "space", 0, 0, EINA_TRUE); - - elm_object_focus_set(layout, EINA_TRUE); - evas_object_event_callback_add(win, EVAS_CALLBACK_KEY_DOWN, _key_down, &data); - evas_object_smart_callback_add(btn_restart, "clicked", _restart_level, &data); - evas_object_smart_callback_add(btn_quit, "clicked", _quit_game, NULL); - - ecore_animator_frametime_set(0.008); - anim_cube = ecore_animator_add(_animate_cubes, &data); - anim_camera = ecore_animator_add(_animate_camera, &data); - anim_ball = ecore_animator_add(_animate_ball, &data); - - evas_object_show(win); - - elm_run(); - - ecore_animator_del(anim_cube); - ecore_animator_del(anim_camera); - ecore_animator_del(anim_ball); - - _sphere_fini(); - - return 0; -} -ELM_MAIN() diff --git a/src/examples/elementary/sphere_hunter/meson.build b/src/examples/elementary/sphere_hunter/meson.build deleted file mode 100644 index 4ef08822ea..0000000000 --- a/src/examples/elementary/sphere_hunter/meson.build +++ /dev/null @@ -1,31 +0,0 @@ -examples = [ - 'evas_3d_sphere_hunter' -] - -edc_files = [ - 'sphere_hunter.edc' -] - -themes = [] - -foreach edc_file : edc_files - themes += custom_target('edje_cc_' + edc_file, - depends : edje_depends, - input : edc_file, - output : '@BASENAME@.edj', - command : edje_cc_exe + ['-beta', - '-id', elementary_img_data, - '-id', meson.current_source_dir(), - '-fd', meson.current_source_dir(), - '-sd', meson.current_source_dir(), - '-vd', meson.current_source_dir(), - '-dd', meson.current_source_dir(), - '-md', meson.current_source_dir(), - '-td', meson.current_source_dir(), - '@INPUT@', '@OUTPUT@'], - ) -endforeach - -foreach example : examples - executable(example, [example + '.c'] + themes, dependencies: [elementary, ecore]) -endforeach diff --git a/src/examples/elementary/sphere_hunter/score.jpg b/src/examples/elementary/sphere_hunter/score.jpg Binary files differdeleted file mode 100644 index 49039a42c8..0000000000 --- a/src/examples/elementary/sphere_hunter/score.jpg +++ /dev/null diff --git a/src/examples/elementary/sphere_hunter/sphere_hunter.edc b/src/examples/elementary/sphere_hunter/sphere_hunter.edc deleted file mode 100644 index b0e20b4d22..0000000000 --- a/src/examples/elementary/sphere_hunter/sphere_hunter.edc +++ /dev/null @@ -1,251 +0,0 @@ -collections { - group { - name: "game"; - min: 704 800; - images { - image: "score.jpg" COMP; - image: "img/bg_glow_in.png" COMP; - image: "img/vgrad_med.png" COMP; - image: "EFL_victory.png" COMP; - image: "EFL_defeat.png" COMP; - image: "img/screen_circular_shadow.png" COMP; - } - parts { - part { - name: "bg"; - type: SPACER; - description { - state: "default" 0.0; - min: 704 800; - } - } - part { - name: "sp_left"; - type: SPACER; - description { - state: "default" 0.0; - min: 2 50; - max: 2 50; - align: 0.0 0.0; - } - } - part { - name: "sp_right"; - type: SPACER; - description { - state: "default" 0.0; - min: 2 50; - max: 2 50; - align: 1.0 1.0; - } - } - part { - name: "swallow.reload"; - type: SWALLOW; - description { - state: "default" 0.0; - align: 0.5 0.0; - min: 704 50; - max: 9999 50; - } - } - part { - name: "swallow.exit"; - type: SWALLOW; - description { - state: "default" 0.0; - align: 0.5 1.0; - min: 704 50; - max: 9999 50; - } - } - part { - name: "scene_bg"; - type: RECT; - description { - state: "default" 0.0; - color: 0 200 200 255; - rel1.to: "sp_left"; - rel1.relative: 1.0 1.0; - rel2.to: "sp_right"; - rel2.relative: 0.0 0.0; - } - } - part { - name: "swallow.scene"; - type: SWALLOW; - description { - state: "default" 0.0; - min: 700 700; - max: 1024 1024; - rel1.to: "scene_bg"; - rel2.to: "scene_bg"; - } - } - part { - name: "score_bg"; - type: SPACER; - description { - state: "default" 0.0; - min: 150 200; - max: 150 200; - align: 0.0 0.0; - rel1.to: "scene_bg"; - rel2.to: "scene_bg"; - } - } - part { - name: "score_img"; - type: IMAGE; - description { - state: "default" 0.0; - min: 150 75; - max: 150 75; - align: 0.5 0.0; - image.normal: "score.jpg"; - rel1.to: "score_bg"; - rel2.to: "score_bg"; - } - } - part { - name: "score_border"; - type: IMAGE; - description { - state: "default" 0.0; - align: 0.5 0.0; - min: 150 75; - max: 150 75; - image.normal: "img/bg_glow_in.png"; - rel1.to: "score_bg"; - rel2.to: "score_bg"; - } - } - part { - name: "score"; - type: RECT; - description { - state: "default" 0.0; - min: 150 125; - max: 150 125; - align: 0.0 1.0; - color: 0 200 200 255; - rel1.to: "score_bg"; - rel2.to: "score_bg"; - } - } - part { - name: "swallow.score_text"; - type: SWALLOW; - description { - state: "default" 0.0; - min: 90 125; - max: 90 125; - rel1.to: "score"; - rel2.to: "score"; - } - } - part { - name: "score_text_border"; - type: IMAGE; - description { - state: "default" 0.0; - min: 150 125; - max: 150 125; - image.normal: "img/bg_glow_in.png"; - rel1.to: "score"; - rel2.to: "score"; - } - } - part { - name: "score_vgrad"; - type: IMAGE; - description { - state: "default" 0.0; - min: 150 5; - max: 150 5; - align: 1.0 1.0; - image.normal: "img/vgrad_med.png"; - rel1.to: "score_img"; - rel2.to: "score_img"; - } - } - part { - name: "scene_border"; - type: IMAGE; - description { - state: "default" 0.0; - min: 700 700; - max: 700 700; - visible: 0; - image.normal: "img/screen_circular_shadow.png"; - rel1.to: "scene_bg"; - rel2.to: "scene_bg"; - } - description { - state: "play" 0.0; - inherit: "default"; - visible: 1; - } - } - part { - name: "image"; - type: IMAGE; - description { - state: "default" 0.0; - min: 600 250; - max: 600 250; - align: 0.5 0.45; - visible: 0; - } - description { - state: "victory" 0.0; - inherit: "default"; - visible: 1; - image.normal: "EFL_victory.png"; - } - description { - state: "defeat" 0.0; - inherit: "default"; - visible: 1; - image.normal: "EFL_defeat.png"; - } - } - } - programs { - program { - name: "victory"; - signal: "victory"; - source: "efl_game"; - action: STATE_SET "victory" 0.0; - target: "image"; - after: "shadow_off"; - } - program { - name: "defeat"; - signal: "defeat"; - source: "efl_game"; - action: STATE_SET "defeat" 0.0; - target: "image"; - after: "shadow_off"; - } - program { - name: "game"; - signal: "play"; - source: "efl_game"; - action: STATE_SET "default" 0.0; - target: "image"; - after: "shadow_on"; - } - program { - name: "shadow_on"; - action: STATE_SET "default" 0.0; - target: "scene_border"; - } - program { - name: "shadow_off"; - action: STATE_SET "play" 0.0; - target: "scene_border"; - } - } - } -} diff --git a/src/examples/elementary/toolbar_cxx_example_01.cc b/src/examples/elementary/toolbar_cxx_example_01.cc index d6ecc44e79..87fdb1c4ec 100644 --- a/src/examples/elementary/toolbar_cxx_example_01.cc +++ b/src/examples/elementary/toolbar_cxx_example_01.cc @@ -20,8 +20,6 @@ #include "config.h" #endif -#warning This example requires yet unfinished EO APIs - #ifndef EFL_BETA_API_SUPPORT #define EFL_BETA_API_SUPPORT #endif diff --git a/src/examples/elementary/transit_example_03.c b/src/examples/elementary/transit_example_03.c index a183201350..cea2d5b624 100644 --- a/src/examples/elementary/transit_example_03.c +++ b/src/examples/elementary/transit_example_03.c @@ -152,13 +152,13 @@ _cb_tween_changed(void *data, Evas_Object *obj, void *event EINA_UNUSED) double val = 0.0; val = elm_spinner_value_get(obj); - if (val == 1.0) + if (EINA_DBL_EQ(val, 1.0)) *mode = ELM_TRANSIT_TWEEN_MODE_LINEAR; - else if (val == 2.0) + else if (EINA_DBL_EQ(val, 2.0)) *mode = ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL; - else if (val == 3.0) + else if (EINA_DBL_EQ(val, 3.0)) *mode = ELM_TRANSIT_TWEEN_MODE_DECELERATE; - else if (val == 4.0) + else if (EINA_DBL_EQ(val, 4.0)) *mode = ELM_TRANSIT_TWEEN_MODE_ACCELERATE; } |