summaryrefslogtreecommitdiff
path: root/src/examples/elementary
diff options
context:
space:
mode:
Diffstat (limited to 'src/examples/elementary')
-rw-r--r--src/examples/elementary/.gitignore1
-rw-r--r--src/examples/elementary/bg_example_03.c8
-rw-r--r--src/examples/elementary/calendar_cxx_example_04.cc2
-rw-r--r--src/examples/elementary/calendar_cxx_example_05.cc2
-rw-r--r--src/examples/elementary/efl_canvas_textblock_obstacles_example.c273
-rw-r--r--src/examples/elementary/efl_ui_slideshow_example.c4
-rw-r--r--src/examples/elementary/evas3d_map_example.c1211
-rw-r--r--src/examples/elementary/evas3d_map_example.edc964
-rw-r--r--src/examples/elementary/evas3d_object_on_button_example.c288
-rw-r--r--src/examples/elementary/evas3d_scene_on_button_example.c280
-rw-r--r--src/examples/elementary/filter_example.c2
-rw-r--r--src/examples/elementary/gengrid_example.c2
-rw-r--r--src/examples/elementary/image_webp_example_01.c38
-rw-r--r--src/examples/elementary/image_webp_example_02.c41
-rw-r--r--src/examples/elementary/menu_cxx_example_01.cc2
-rw-r--r--src/examples/elementary/meson.build13
-rw-r--r--src/examples/elementary/performance/HowTo13
-rw-r--r--src/examples/elementary/performance/Tools.h19
-rw-r--r--src/examples/elementary/performance/background.pngbin177255 -> 0 bytes
-rw-r--r--src/examples/elementary/performance/camera_light.c354
-rw-r--r--src/examples/elementary/performance/graphical.c622
-rw-r--r--src/examples/elementary/performance/graphical_struct.h90
-rw-r--r--src/examples/elementary/performance/initial_config.xml11
-rw-r--r--src/examples/elementary/performance/layout.edc170
-rw-r--r--src/examples/elementary/performance/meson.build31
-rw-r--r--src/examples/elementary/performance/performance.c953
-rw-r--r--src/examples/elementary/performance/target_texture.pngbin2123166 -> 0 bytes
-rw-r--r--src/examples/elementary/performance/tools_private.h51
-rw-r--r--src/examples/elementary/progressbar_example.c2
-rw-r--r--src/examples/elementary/sphere_hunter/EFL_defeat.pngbin88373 -> 0 bytes
-rw-r--r--src/examples/elementary/sphere_hunter/EFL_victory.pngbin108064 -> 0 bytes
-rw-r--r--src/examples/elementary/sphere_hunter/evas_3d_sphere_hunter.c858
-rw-r--r--src/examples/elementary/sphere_hunter/meson.build31
-rw-r--r--src/examples/elementary/sphere_hunter/score.jpgbin51305 -> 0 bytes
-rw-r--r--src/examples/elementary/sphere_hunter/sphere_hunter.edc251
-rw-r--r--src/examples/elementary/toolbar_cxx_example_01.cc2
-rw-r--r--src/examples/elementary/transit_example_03.c8
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
deleted file mode 100644
index 190a74f631..0000000000
--- a/src/examples/elementary/performance/background.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 3bcf58b3fe..0000000000
--- a/src/examples/elementary/performance/target_texture.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0839bce226..0000000000
--- a/src/examples/elementary/sphere_hunter/EFL_defeat.png
+++ /dev/null
Binary files differ
diff --git a/src/examples/elementary/sphere_hunter/EFL_victory.png b/src/examples/elementary/sphere_hunter/EFL_victory.png
deleted file mode 100644
index c5dc2ca831..0000000000
--- a/src/examples/elementary/sphere_hunter/EFL_victory.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 49039a42c8..0000000000
--- a/src/examples/elementary/sphere_hunter/score.jpg
+++ /dev/null
Binary files differ
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;
}