cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=175c8cbd63244ba3c50c9f41301e7fedb0427a21
commit 175c8cbd63244ba3c50c9f41301e7fedb0427a21 Author: Bogdan Devichev <b.devic...@samsung.com> Date: Fri Feb 20 12:02:08 2015 +0100 evas: Evas_3D - add creation of folder for saving and usage of PACKAGE_DATA_DIR to every example of Evas_3D. Reviewers: cedric, Hermet, raster Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D2003 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/examples/evas/Makefile.am | 3 ++ src/examples/evas/evas-3d-aabb.c | 13 +++++-- src/examples/evas/evas-3d-colorpick.c | 16 +++++++-- src/examples/evas/evas-3d-common.h | 6 ++-- src/examples/evas/evas-3d-cube2.c | 10 +++++- src/examples/evas/evas-3d-eet.c | 21 +++++++++--- src/examples/evas/evas-3d-frustum.c | 13 +++++-- src/examples/evas/evas-3d-md2.c | 13 +++++-- src/examples/evas/evas-3d-mmap-set.c | 13 +++++-- src/examples/evas/evas-3d-moon-space.c | 16 +++++++-- src/examples/evas/evas-3d-obj.c | 62 +++++++++++++++++++++------------- src/examples/evas/evas-3d-pick.c | 10 +++++- src/examples/evas/evas-3d-ply.c | 39 ++++++++++++++------- src/examples/evas/evas-3d-shadows.c | 13 +++++-- 14 files changed, 187 insertions(+), 61 deletions(-) diff --git a/src/examples/evas/Makefile.am b/src/examples/evas/Makefile.am index b6700a1..9cb4284 100644 --- a/src/examples/evas/Makefile.am +++ b/src/examples/evas/Makefile.am @@ -32,6 +32,7 @@ ECORE_EVAS_COMMON_CPPFLAGS = \ -I$(top_srcdir)/src/lib/eo \ -I$(top_srcdir)/src/lib/evas \ -I$(top_srcdir)/src/lib/ecore \ +-I$(top_srcdir)/src/lib/ecore_file \ -I$(top_srcdir)/src/lib/ecore_input \ -I$(top_srcdir)/src/lib/ecore_evas \ -I$(top_builddir)/src/lib/efl \ @@ -39,6 +40,7 @@ ECORE_EVAS_COMMON_CPPFLAGS = \ -I$(top_builddir)/src/lib/eo \ -I$(top_builddir)/src/lib/evas \ -I$(top_builddir)/src/lib/ecore \ +-I$(top_builddir)/src/lib/ecore_file \ -I$(top_srcdir)/src/lib/ecore_input \ -I$(top_builddir)/src/lib/ecore_evas \ -DPACKAGE_EXAMPLES_DIR=\".\" \ @@ -49,6 +51,7 @@ $(top_builddir)/src/lib/efl/libefl.la \ $(top_builddir)/src/lib/eina/libeina.la \ $(top_builddir)/src/lib/eo/libeo.la \ $(top_builddir)/src/lib/ecore/libecore.la \ +$(top_builddir)/src/lib/ecore_file/libecore_file.la \ $(top_builddir)/src/lib/ecore_input/libecore_input.la \ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la \ $(top_builddir)/src/lib/evas/libevas.la \ diff --git a/src/examples/evas/evas-3d-aabb.c b/src/examples/evas/evas-3d-aabb.c index 722796c..ef3e079 100644 --- a/src/examples/evas/evas-3d-aabb.c +++ b/src/examples/evas/evas-3d-aabb.c @@ -6,6 +6,12 @@ * Compile with "gcc -o evas-3d-aabb evas-3d-aabb.c `pkg-config --libs --cflags efl evas ecore ecore-evas eo`" */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -18,6 +24,9 @@ #define WIDTH 400 #define HEIGHT 400 +static const char *model_path = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/sonic.md2"; +static const char *image_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/sonic.png"; + Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; Eo *background = NULL; @@ -228,13 +237,13 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - efl_file_set(EVAS_3D_MODEL_FOLDER"sonic.md2", NULL), + efl_file_set(model_path, NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); texture = eo_add(EVAS_3D_TEXTURE_CLASS, evas); eo_do(texture, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"sonic.png", NULL), + evas_3d_texture_file_set(image_path, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_NEAREST, EVAS_3D_TEXTURE_FILTER_NEAREST), evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT, diff --git a/src/examples/evas/evas-3d-colorpick.c b/src/examples/evas/evas-3d-colorpick.c index 2dce999..6ca3376 100644 --- a/src/examples/evas/evas-3d-colorpick.c +++ b/src/examples/evas/evas-3d-colorpick.c @@ -11,6 +11,12 @@ */ //TODO new resources +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -27,6 +33,10 @@ #define ANIMATION_COUNT 3 #define MAX_PATH 128 +static const char *model_path = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/M15.obj"; +static const char *image1_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/M15.png"; +static const char *image2_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/M15_1.png"; + Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; Evas_Object *image = NULL, *bg = NULL; @@ -444,9 +454,9 @@ int main(int argc, char **argv) if (!row) row = 2; if (!col) col = 5; - if (!model) model = EVAS_3D_MODEL_FOLDER"M15.obj"; - if (!texture1) texture1 = EVAS_3D_IMAGE_FOLDER"M15.png"; - if (!texture2) texture2 = EVAS_3D_IMAGE_FOLDER"M15_1.png"; + if (!model) model = (char *)model_path; + if (!texture1) texture1 = (char *)image1_path; + if (!texture2) texture2 = (char *)image2_path; fprintf(stdout, "row - %d, col - %d, model - %s, texture1 - %s, texture2 - %s\n", row, col, model, texture1, texture2); diff --git a/src/examples/evas/evas-3d-common.h b/src/examples/evas/evas-3d-common.h index 065b544..4304b3d 100644 --- a/src/examples/evas/evas-3d-common.h +++ b/src/examples/evas/evas-3d-common.h @@ -1,3 +1,3 @@ -#define EVAS_3D_IMAGE_FOLDER "resources/images/" -#define EVAS_3D_MODEL_FOLDER "resources/models/" -#define EVAS_3D_SAVED_FILES "saved_files/" +#define EVAS_3D_IMAGE_FOLDER "/resources/images" +#define EVAS_3D_MODEL_FOLDER "/resources/models" +#define EVAS_3D_SAVED_FILES "/saved_files" diff --git a/src/examples/evas/evas-3d-cube2.c b/src/examples/evas/evas-3d-cube2.c index 38a2d4e..3009520 100644 --- a/src/examples/evas/evas-3d-cube2.c +++ b/src/examples/evas/evas-3d-cube2.c @@ -1,3 +1,9 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -10,6 +16,8 @@ #define WIDTH 400 #define HEIGHT 400 +static const char *normal_map_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/normal_lego.png"; + typedef struct _Scene_Data { Eo *scene; @@ -231,7 +239,7 @@ _mesh_setup(Scene_Data *data) evas_3d_texture_data_set(EVAS_3D_COLOR_FORMAT_RGBA, EVAS_3D_PIXEL_FORMAT_8888, 4, 4, &pixels1[0])); eo_do(data->texture_normal, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"normal_lego.png", NULL)); + evas_3d_texture_file_set(normal_map_path, NULL)); eo_do(data->material0, evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, data->texture0)); diff --git a/src/examples/evas/evas-3d-eet.c b/src/examples/evas/evas-3d-eet.c index b6966bb..c7139a8 100644 --- a/src/examples/evas/evas-3d-eet.c +++ b/src/examples/evas/evas-3d-eet.c @@ -9,10 +9,16 @@ * Show it in right side. * * @verbatim -* gcc -o evas-3d-eet evas-3d-eet.c `pkg-config --libs --cflags efl eina evas ecore ecore-evas eo` +* gcc -o evas-3d-eet evas-3d-eet.c `pkg-config --libs --cflags efl eina evas ecore ecore-evas ecore-file eo` * @endverbatim */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -25,6 +31,9 @@ #define WIDTH 1024 #define HEIGHT 1024 +static const char *input_model_path = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/sonic.md2"; +static const char *output_model_path = PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES "/saved_Sonic_EET.eet"; + Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; Eo *background = NULL; @@ -152,7 +161,7 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - efl_file_set(EVAS_3D_MODEL_FOLDER"sonic.md2", NULL), + efl_file_set(input_model_path, NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); @@ -169,10 +178,14 @@ main(void) 0.50, 0.00, 0.50, 0.30), evas_3d_material_shininess_set(50.0)); - eo_do(mesh, efl_file_save(EVAS_3D_SAVED_FILES"saved_Sonic_EET.eet", NULL, NULL)); + if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES)) + fprintf(stderr, "Failed to create folder %s\n\n", + PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES); + + eo_do(mesh, efl_file_save(output_model_path, NULL, NULL)); eo_do(mesh2, - efl_file_set(EVAS_3D_SAVED_FILES"saved_Sonic_EET.eet", NULL), + efl_file_set(output_model_path, NULL), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas, diff --git a/src/examples/evas/evas-3d-frustum.c b/src/examples/evas/evas-3d-frustum.c index 75c936a..90b8a6a 100644 --- a/src/examples/evas/evas-3d-frustum.c +++ b/src/examples/evas/evas-3d-frustum.c @@ -11,6 +11,12 @@ * Compile with "gcc -o evas-3d-frustum evas-3d-frustum.c `pkg-config --libs --cflags efl evas ecore ecore-evas eo` -lm" */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -24,6 +30,9 @@ #define WIDTH 800 #define HEIGHT 600 +static const char *image_eagle_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/eagle.png"; +static const char *eagle_path = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/eagle.md2"; + typedef struct _Scene_Data { Eo *root_node; @@ -453,7 +462,7 @@ _mesh_setup_model(Scene_Data *data) data->texture_model = eo_add(EVAS_3D_TEXTURE_CLASS, evas); eo_do(data->texture_model, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"eagle.png", NULL), + evas_3d_texture_file_set(image_eagle_path, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_NEAREST, EVAS_3D_TEXTURE_FILTER_NEAREST), evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT, EVAS_3D_WRAP_MODE_REPEAT)); @@ -470,7 +479,7 @@ _mesh_setup_model(Scene_Data *data) evas_3d_material_shininess_set(100.0)); eo_do(data->mesh_model, - efl_file_set(EVAS_3D_MODEL_FOLDER"eagle.md2", NULL), + efl_file_set(eagle_path, NULL), evas_3d_mesh_frame_material_set(0, data->material_model), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_DIFFUSE)); } diff --git a/src/examples/evas/evas-3d-md2.c b/src/examples/evas/evas-3d-md2.c index 76546cd..5a9309e 100644 --- a/src/examples/evas/evas-3d-md2.c +++ b/src/examples/evas/evas-3d-md2.c @@ -1,3 +1,9 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -10,6 +16,9 @@ #define WIDTH 400 #define HEIGHT 400 +static const char *model_path = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/sonic.md2"; +static const char *image_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/sonic.png"; + Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; Eo *background = NULL; @@ -121,13 +130,13 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - efl_file_set(EVAS_3D_MODEL_FOLDER"sonic.md2", NULL), + efl_file_set(model_path, NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); texture = eo_add(EVAS_3D_TEXTURE_CLASS, evas); eo_do(texture, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"sonic.png", NULL), + evas_3d_texture_file_set(image_path, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_NEAREST, EVAS_3D_TEXTURE_FILTER_NEAREST), evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT, diff --git a/src/examples/evas/evas-3d-mmap-set.c b/src/examples/evas/evas-3d-mmap-set.c index 501046d..923654e 100644 --- a/src/examples/evas/evas-3d-mmap-set.c +++ b/src/examples/evas/evas-3d-mmap-set.c @@ -10,6 +10,12 @@ * @endverbatim */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -25,8 +31,8 @@ #define HEIGHT 1000 #define LOAD_AND_ADD_MESH(extention, number) \ - extention##_file = \ - eina_file_open(EVAS_3D_MODEL_FOLDER"mesh_for_mmap."#extention, 0); \ + snprintf(buffer, PATH_MAX, "%s%s", template_path, #extention); \ + extention##_file = eina_file_open(buffer , 0); \ mesh_##extention = eo_add(EVAS_3D_MESH_CLASS, evas); \ eo_do(mesh_##extention, \ evas_3d_mesh_mmap_set(extention##_file, NULL), \ @@ -48,6 +54,8 @@ initial_node_data[number * 10 + 9]));\ ecore_timer_add(0.01, _animate_##extention, node_##extention); +static const char *template_path = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/mesh_for_mmap."; + Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; Eo *background = NULL; @@ -160,6 +168,7 @@ _on_canvas_resize(Ecore_Evas *ee) int main(void) { + char buffer[PATH_MAX]; Eina_File *obj_file, *ply_file, *eet_file, *md2_file; //Unless Evas 3D supports Software renderer, we set gl backened forcely. diff --git a/src/examples/evas/evas-3d-moon-space.c b/src/examples/evas/evas-3d-moon-space.c index 87d8bb1..cbe4a92 100644 --- a/src/examples/evas/evas-3d-moon-space.c +++ b/src/examples/evas/evas-3d-moon-space.c @@ -16,6 +16,12 @@ * gcc -o evas-3d-moon-space evas-3d-moon-space.c -g `pkg-config --libs --cflags evas ecore ecore-evas eo` -lm */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -30,6 +36,10 @@ #define WIDTH 1024 #define HEIGHT 1024 +static const char *bg_image = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/bg_space.jpg"; +static const char *moon_image = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/moon.png"; +static const char *earth_image = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/EarthDiffuse.png"; + typedef struct _Scene_Data { Eo *texture_diffuse_moon; @@ -448,7 +458,7 @@ _mesh_setup(Scene_Data *data) /* Setup material and texture for planet. */ eo_do(data->texture_diffuse_planet, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"EarthDiffuse.png", NULL), + evas_3d_texture_file_set(earth_image, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_LINEAR, EVAS_3D_TEXTURE_FILTER_LINEAR)); eo_do(data->material_planet, @@ -463,7 +473,7 @@ _mesh_setup(Scene_Data *data) /* Setup material and texture for moon. */ eo_do(data->texture_diffuse_moon, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"moon.png", NULL), + evas_3d_texture_file_set(moon_image, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_LINEAR, EVAS_3D_TEXTURE_FILTER_LINEAR)); eo_do(data->material_moon, @@ -733,7 +743,7 @@ main(void) /* Add evas objects. */ background = evas_object_image_filled_add(evas); - evas_object_image_file_set(background, EVAS_3D_IMAGE_FOLDER"bg_space.jpg", NULL), + evas_object_image_file_set(background, bg_image, NULL), evas_object_resize(background, WIDTH, HEIGHT), evas_object_show(background); diff --git a/src/examples/evas/evas-3d-obj.c b/src/examples/evas/evas-3d-obj.c index b0203d3..bccbea2 100644 --- a/src/examples/evas/evas-3d-obj.c +++ b/src/examples/evas/evas-3d-obj.c @@ -9,10 +9,16 @@ * If material was not set it will be not saved. * * @verbatim -* gcc -o evas-3d-obj evas-3d-obj.c `pkg-config --libs --cflags efl evas ecore ecore-evas eo` +* gcc -o evas-3d-obj evas-3d-obj.c `pkg-config --libs --cflags efl evas ecore ecore-evas ecore-file eo` * @endverbatim */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -37,27 +43,28 @@ #define GRID_SIZE 6 #define NUMBER_OF_MESHES 8 -#define ADD_OBJ_MESH(path, Y, Z, num, shade_mode, name_of_material) \ - mesh[num] = eo_add(EVAS_3D_MESH_CLASS, evas); \ - eo_do(mesh[num], \ - efl_file_set(path".obj", NULL), \ - evas_3d_mesh_frame_material_set(0, name_of_material), \ - evas_3d_mesh_shade_mode_set(shade_mode)); \ - mesh_node[num] = eo_add(EVAS_3D_NODE_CLASS, evas, \ - evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH)); \ - eo_do(root_node, \ - evas_3d_node_member_add(mesh_node[num])); \ - eo_do(mesh_node[num], \ - evas_3d_node_mesh_add(mesh[num]), \ - evas_3d_node_position_set(0, Y, Z)); \ - -#define ADD_OBJ_MESH_AND_SAVED_COPY(path, Y, Z, num, shade_mode, name_of_material) \ - ADD_OBJ_MESH(EVAS_3D_MODEL_FOLDER"sweet_"#path, \ - Y, Z, num, shade_mode, name_of_material) \ - eo_do(mesh[num], efl_file_save(EVAS_3D_SAVED_FILES"saved_"#path".obj", \ - NULL, NULL)); \ - ADD_OBJ_MESH(EVAS_3D_SAVED_FILES"saved_"#path, \ - Y + COPY_OFFSET, Z, num + 4, shade_mode, name_of_material) +#define ADD_OBJ_MESH(path, Y, Z, num, shade_mode, name_of_material) \ + mesh[num] = eo_add(EVAS_3D_MESH_CLASS, evas); \ + snprintf(full_file_path, PATH_MAX, "%s%s", path, ".obj"); \ + eo_do(mesh[num], \ + efl_file_set(full_file_path, NULL), \ + evas_3d_mesh_frame_material_set(0, name_of_material), \ + evas_3d_mesh_shade_mode_set(shade_mode)); \ + mesh_node[num] = eo_add(EVAS_3D_NODE_CLASS, evas, \ + evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH)); \ + eo_do(root_node, \ + evas_3d_node_member_add(mesh_node[num])); \ + eo_do(mesh_node[num], \ + evas_3d_node_mesh_add(mesh[num]), \ + evas_3d_node_position_set(0, Y, Z)); \ + +#define ADD_OBJ_MESH_AND_SAVED_COPY(path, Y, Z, num, shade_mode, name_of_material)\ + snprintf(buffer, PATH_MAX, "%s%s", input_template, #path); \ + ADD_OBJ_MESH(buffer, Y, Z, num, shade_mode, name_of_material) \ + snprintf(buffer, PATH_MAX, "%s%s%s", output_template, #path, ".obj"); \ + eo_do(mesh[num], efl_file_save(buffer, NULL, NULL)); \ + snprintf(buffer, PATH_MAX, "%s%s", output_template, #path); \ + ADD_OBJ_MESH(buffer, Y + COPY_OFFSET, Z, num + 4, shade_mode, name_of_material) #define ADD_TEXTURE(name, path) \ name = eo_add(EVAS_3D_TEXTURE_CLASS, evas); \ @@ -83,6 +90,10 @@ COL_BLUE, 0.5), \ evas_3d_material_shininess_set(100.0)); +static const char *texture_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/sweet_home_reversed.png"; +static const char *output_template = PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES "/saved_"; +static const char *input_template = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/sweet_"; + Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; Eo *background = NULL; @@ -136,6 +147,7 @@ int main(void) { int i; + char buffer[PATH_MAX], full_file_path[PATH_MAX]; //Unless Evas 3D supports Software renderer, we set gl backened forcely. setenv("ECORE_EVAS_ENGINE", "opengl_x11", 1); @@ -193,7 +205,7 @@ main(void) eo_do(root_node, evas_3d_node_member_add(light_node)); - ADD_TEXTURE(texture, EVAS_3D_IMAGE_FOLDER"sweet_home_reversed.png") + ADD_TEXTURE(texture, texture_path) ADD_MATERIAL(material) @@ -201,6 +213,10 @@ main(void) eo_do(material_with_tex, evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, texture)); + if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES)) + fprintf(stderr, "Failed to create folder %s\n\n", + PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES); + ADD_OBJ_MESH_AND_SAVED_COPY(home, -GRID_SIZE, -GRID_SIZE, 0, EVAS_3D_SHADE_MODE_PHONG, material_with_tex) ADD_OBJ_MESH_AND_SAVED_COPY(home_without_normals, -GRID_SIZE, GRID_SIZE, 1, diff --git a/src/examples/evas/evas-3d-pick.c b/src/examples/evas/evas-3d-pick.c index f983146..3d7c235 100644 --- a/src/examples/evas/evas-3d-pick.c +++ b/src/examples/evas/evas-3d-pick.c @@ -1,3 +1,9 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -11,6 +17,8 @@ #define WIDTH 400 #define HEIGHT 400 +static const char *earth_image = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/EarthDiffuse.png"; + typedef struct _vec4 { float x; @@ -344,7 +352,7 @@ main(void) texture_diffuse = eo_add(EVAS_3D_TEXTURE_CLASS, evas); eo_do(texture_diffuse, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"EarthDiffuse.png", NULL), + evas_3d_texture_file_set(earth_image, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_LINEAR, EVAS_3D_TEXTURE_FILTER_LINEAR)); eo_do(material, diff --git a/src/examples/evas/evas-3d-ply.c b/src/examples/evas/evas-3d-ply.c index d6102f9..8e010fc 100644 --- a/src/examples/evas/evas-3d-ply.c +++ b/src/examples/evas/evas-3d-ply.c @@ -7,11 +7,17 @@ * and geometry to "saved_man_all_with_mods.ply", "saved_man_only_geometry.ply" and "saved_man_without_UVs.ply". * * @verbatim -* gcc -o evas-3d-ply evas-3d-ply.c `pkg-config --libs --cflags efl evas ecore ecore-evas eo` +* gcc -o evas-3d-ply evas-3d-ply.c `pkg-config --libs --cflags efl evas ecore ecore-evas ecore-file eo` * @endverbatim */ //TODO new resources +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -26,6 +32,18 @@ #define NUMBER_OF_MESHES 32 +static const char *image_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/normal_lego.png"; +static const char *input_template = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/"; +static const char *output_template = PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES "/"; +static const char *file_name[8] = {"Normal_UVs_Colors.ply", + "Normal_UVs_NoColors.ply", + "Normal_NoUVs_Colors.ply", + "Normal_NoUVs_NoColors.ply", + "NoNormal_UVs_Colors.ply", + "NoNormal_UVs_NoColors.ply", + "NoNormal_NoUVs_Colors.ply", + "NoNormal_NoUVs_NoColors.ply"}; + int draw_mode[2] = {EVAS_3D_SHADE_MODE_PHONG, EVAS_3D_SHADE_MODE_VERTEX_COLOR}; Ecore_Evas *ecore_evas = NULL; @@ -47,15 +65,6 @@ Eo *texture = NULL; Eo *light = NULL; Ecore_Animator *anim = NULL; -char *file_name[8] = {"Normal_UVs_Colors.ply", - "Normal_UVs_NoColors.ply", - "Normal_NoUVs_Colors.ply", - "Normal_NoUVs_NoColors.ply", - "NoNormal_UVs_Colors.ply", - "NoNormal_UVs_NoColors.ply", - "NoNormal_NoUVs_Colors.ply", - "NoNormal_NoUVs_NoColors.ply"}; - static float angle = 0; static Eina_Bool @@ -157,7 +166,7 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); texture = eo_add(EVAS_3D_TEXTURE_CLASS, evas); eo_do(texture, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"normal_lego.png", NULL), + evas_3d_texture_file_set(image_path, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_NEAREST, EVAS_3D_TEXTURE_FILTER_NEAREST), evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT, @@ -176,18 +185,22 @@ main(void) 1.0, 1.0, 1.0, 1.0), evas_3d_material_shininess_set(50.0)); + if (!ecore_file_mkpath(PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES)) + fprintf(stderr, "Failed to create folder %s\n\n", + PACKAGE_EXAMPLES_DIR EVAS_3D_SAVED_FILES); + /* Add the meshes. */ for (i = 0; i < NUMBER_OF_MESHES; i++) { mesh[i] = eo_add(EVAS_3D_MESH_CLASS, evas); - snprintf(buffer, PATH_MAX, "%s%s", EVAS_3D_MODEL_FOLDER, file_name[i % 8]); + snprintf(buffer, PATH_MAX, "%s%s", input_template, file_name[i % 8]); eo_do(mesh[i], efl_file_set(buffer, NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(draw_mode[(i % 16) / 8])); - snprintf(buffer, PATH_MAX, "%s%s", EVAS_3D_SAVED_FILES, file_name[i % 8]); + snprintf(buffer, PATH_MAX, "%s%s", output_template, file_name[i % 8]); eo_do(mesh[i], efl_file_save(buffer, NULL, NULL)); if (i > 15) diff --git a/src/examples/evas/evas-3d-shadows.c b/src/examples/evas/evas-3d-shadows.c index df5184b..86903f6 100644 --- a/src/examples/evas/evas-3d-shadows.c +++ b/src/examples/evas/evas-3d-shadows.c @@ -8,6 +8,12 @@ * Compile with gcc -o evas-3d-shadows evas-3d-shadows.c `pkg-config --libs --cflags efl evas ecore ecore-evas eo eina` -lm */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#endif + #define EFL_EO_API_SUPPORT #define EFL_BETA_API_SUPPORT @@ -29,6 +35,9 @@ #define DIFFUSE_LIGHT 1.0, 1.0, 1.0 #define SPECULAR_LIGHT 1.0, 1.0, 1.0 +static const char *model_path = PACKAGE_EXAMPLES_DIR EVAS_3D_MODEL_FOLDER "/sonic.md2"; +static const char *image_path = PACKAGE_EXAMPLES_DIR EVAS_3D_IMAGE_FOLDER "/sonic.png"; + Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; Eo *background = NULL; @@ -237,7 +246,7 @@ _model_setup(Body_3D *model) { Eo *texture = eo_add(EVAS_3D_TEXTURE_CLASS, evas); eo_do(texture, - evas_3d_texture_file_set(EVAS_3D_IMAGE_FOLDER"sonic.png", NULL), + evas_3d_texture_file_set(image_path, NULL), evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_NEAREST, EVAS_3D_TEXTURE_FILTER_NEAREST), evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT, @@ -256,7 +265,7 @@ _model_setup(Body_3D *model) model->mesh = eo_add(EVAS_3D_MESH_CLASS, evas); eo_do(model->mesh, - efl_file_set(EVAS_3D_MODEL_FOLDER"sonic.md2", NULL), + efl_file_set(model_path, NULL), evas_3d_mesh_frame_material_set(0, model->material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); --