cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=aaddf1a963c7e3b8aef18c4f366c8e9f8bf43e66
commit aaddf1a963c7e3b8aef18c4f366c8e9f8bf43e66 Author: Bogdan Devichev <[email protected]> Date: Thu Nov 27 17:19:24 2014 +0200 evas: Evas_3D_Mesh_File_Type sank into oblivion. Changing entry point to model_save_load. Changing API in examples. --- src/examples/evas/evas-3d-aabb.c | 2 +- src/examples/evas/evas-3d-eet.c | 7 +++--- src/examples/evas/evas-3d-frustum.c | 2 +- src/examples/evas/evas-3d-md2.c | 2 +- src/examples/evas/evas-3d-obj.c | 4 +-- src/examples/evas/evas-3d-ply.c | 6 ++--- src/examples/evas/evas-3d-shadows.c | 2 +- src/examples/evas/shooter/evas-3d-shooter.c | 6 ++--- src/lib/evas/Evas_Eo.h | 15 ------------ src/lib/evas/canvas/evas_3d_mesh.c | 9 ++++--- src/lib/evas/canvas/evas_3d_mesh.eo | 2 -- src/lib/evas/common/evas_model_load.c | 38 ++++++++++++++--------------- src/lib/evas/common/evas_model_save.c | 34 ++++++++++++++------------ src/lib/evas/include/evas_private.h | 4 +-- 14 files changed, 59 insertions(+), 74 deletions(-) diff --git a/src/examples/evas/evas-3d-aabb.c b/src/examples/evas/evas-3d-aabb.c index c26cda5..6210fa2 100644 --- a/src/examples/evas/evas-3d-aabb.c +++ b/src/examples/evas/evas-3d-aabb.c @@ -227,7 +227,7 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL), + evas_3d_mesh_file_set("sonic.md2", NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); diff --git a/src/examples/evas/evas-3d-eet.c b/src/examples/evas/evas-3d-eet.c index e4b7c14..96ab16b 100644 --- a/src/examples/evas/evas-3d-eet.c +++ b/src/examples/evas/evas-3d-eet.c @@ -151,7 +151,7 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL), + evas_3d_mesh_file_set("sonic.md2", NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); @@ -169,11 +169,10 @@ main(void) evas_3d_material_shininess_set(50.0)); eo_do(mesh, - evas_3d_mesh_save(EVAS_3D_MESH_FILE_TYPE_EET, - "saved_Sonic_EET.eet", NULL)); + evas_3d_mesh_save("saved_Sonic_EET.eet", NULL)); eo_do(mesh2, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_EET, "saved_Sonic_EET.eet", NULL), + evas_3d_mesh_file_set("saved_Sonic_EET.eet", 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 2ca525a..c231957 100644 --- a/src/examples/evas/evas-3d-frustum.c +++ b/src/examples/evas/evas-3d-frustum.c @@ -525,7 +525,7 @@ _mesh_setup_model(Scene_Data *data) evas_3d_material_shininess_set(100.0)); eo_do(data->mesh_model, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "eagle.md2", NULL), + evas_3d_mesh_file_set("eagle.md2", 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 26f8e71..4b53c2e 100644 --- a/src/examples/evas/evas-3d-md2.c +++ b/src/examples/evas/evas-3d-md2.c @@ -120,7 +120,7 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL), + evas_3d_mesh_file_set("sonic.md2", NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); diff --git a/src/examples/evas/evas-3d-obj.c b/src/examples/evas/evas-3d-obj.c index 0fced88..2634502 100644 --- a/src/examples/evas/evas-3d-obj.c +++ b/src/examples/evas/evas-3d-obj.c @@ -134,7 +134,7 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_OBJ, "man_mesh.obj", NULL), + evas_3d_mesh_file_set("man_mesh.obj", NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); @@ -159,7 +159,7 @@ main(void) 1.0, 1.0, 1.0, 1.0), evas_3d_material_shininess_set(50.0)); - eo_do(mesh, evas_3d_mesh_save(EVAS_3D_MESH_FILE_TYPE_OBJ, "saved_man", NULL)); + eo_do(mesh, evas_3d_mesh_save("saved_man", NULL)); mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas, evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH)); diff --git a/src/examples/evas/evas-3d-ply.c b/src/examples/evas/evas-3d-ply.c index 4685413..75505cd 100644 --- a/src/examples/evas/evas-3d-ply.c +++ b/src/examples/evas/evas-3d-ply.c @@ -189,16 +189,16 @@ main(void) mesh[i] = eo_add(EVAS_3D_MESH_CLASS, evas); eo_do(mesh[i], - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_PLY, path_file[i % 8], NULL), + evas_3d_mesh_file_set(path_file[i % 8], 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/Saved_%s", folder, file_name[i % 8]); - eo_do(mesh[i], evas_3d_mesh_save(EVAS_3D_MESH_FILE_TYPE_PLY, buffer, NULL)); + eo_do(mesh[i], evas_3d_mesh_save(buffer, NULL)); if (i > 15) eo_do(mesh[i], - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_PLY, path_file[i % 8], NULL), + evas_3d_mesh_file_set(path_file[i % 8], NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(draw_mode[(i % 16) / 8])); diff --git a/src/examples/evas/evas-3d-shadows.c b/src/examples/evas/evas-3d-shadows.c index 332bc83..142a98e 100644 --- a/src/examples/evas/evas-3d-shadows.c +++ b/src/examples/evas/evas-3d-shadows.c @@ -219,7 +219,7 @@ main(void) material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(mesh, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "sonic.md2", NULL), + evas_3d_mesh_file_set("sonic.md2", NULL), evas_3d_mesh_frame_material_set(0, material), evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); diff --git a/src/examples/evas/shooter/evas-3d-shooter.c b/src/examples/evas/shooter/evas-3d-shooter.c index a5fcc91..3fa1d2a 100644 --- a/src/examples/evas/shooter/evas-3d-shooter.c +++ b/src/examples/evas/shooter/evas-3d-shooter.c @@ -841,7 +841,7 @@ _mesh_setup_gun_planet(Scene_Data *data) data->mesh_eagle = eo_add(EVAS_3D_MESH_CLASS, evas); eo_do(data->mesh_eagle, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_OBJ, "shooter/eagle.obj", NULL)); + evas_3d_mesh_file_set("shooter/eagle.obj", NULL)); data->material_eagle = eo_add(EVAS_3D_MATERIAL_CLASS, evas); @@ -1295,7 +1295,7 @@ _mesh_setup_warrior(Scene_Data *data, int index) data->mesh_level[index] = eo_add(EVAS_3D_MESH_CLASS, evas); eo_do(data->mesh_level[index], - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "shooter/warrior.md2", NULL)); + evas_3d_mesh_file_set("shooter/warrior.md2", NULL)); data->material_level = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(data->mesh_level[index], @@ -1329,7 +1329,7 @@ _mesh_setup_snake(Scene_Data *data) { data->mesh_snake = eo_add(EVAS_3D_MESH_CLASS, evas); eo_do(data->mesh_snake, - evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, "shooter/snake.md2", NULL)); + evas_3d_mesh_file_set("shooter/snake.md2", NULL)); data->material_snake = eo_add(EVAS_3D_MATERIAL_CLASS, evas); eo_do(data->mesh_snake, diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h index d512ced..5a493e1 100644 --- a/src/lib/evas/Evas_Eo.h +++ b/src/lib/evas/Evas_Eo.h @@ -769,21 +769,6 @@ typedef enum _Evas_3D_Material_Attrib EVAS_3D_MATERIAL_NORMAL, /**< Normal map term */ } Evas_3D_Material_Attrib; -/** - * Mesh file type - * - * @since 1.10 - * @ingroup Evas_3D_Types - */ -typedef enum _Evas_3D_Mesh_File_Type -{ - EVAS_3D_MESH_FILE_TYPE_NONE = 0, /**< Noone from read formats */ - EVAS_3D_MESH_FILE_TYPE_MD2, /**< Quake's MD2 mesh file format */ - EVAS_3D_MESH_FILE_TYPE_OBJ, /**< Wavefront OBJ file format */ - EVAS_3D_MESH_FILE_TYPE_EET, /**< EET - own EFL file format */ - EVAS_3D_MESH_FILE_TYPE_PLY, /**< Stanford PLY mesh file format */ -} Evas_3D_Mesh_File_Type; - #include "canvas/evas_image.eo.h" #include "canvas/evas_3d_camera.eo.h" diff --git a/src/lib/evas/canvas/evas_3d_mesh.c b/src/lib/evas/canvas/evas_3d_mesh.c index 572da9d..3e14e3a 100644 --- a/src/lib/evas/canvas/evas_3d_mesh.c +++ b/src/lib/evas/canvas/evas_3d_mesh.c @@ -802,18 +802,19 @@ _evas_3d_mesh_blending_func_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd, } EOLIAN static void -_evas_3d_mesh_file_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type type, const char *file, const char *key EINA_UNUSED) +_evas_3d_mesh_file_set(Eo *obj, Evas_3D_Mesh_Data *pd, + const char *file, const char *key EINA_UNUSED) { _mesh_fini(pd); _mesh_init(pd); if (file == NULL) return; - evas_common_load_model_to_file(obj, file, type); + evas_common_load_model_to_file(obj, file); } EOLIAN static void -_evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type type, +_evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd, const char *file, const char *key EINA_UNUSED) { if ((file == NULL) || (obj == NULL) || (pd == NULL)) return; @@ -826,7 +827,7 @@ _evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type type, return; } - evas_common_save_model_to_file(obj, file, f, type); + evas_common_save_model_to_file(obj, file, f); } static inline void diff --git a/src/lib/evas/canvas/evas_3d_mesh.eo b/src/lib/evas/canvas/evas_3d_mesh.eo index 0fdf1a2..5bf623a 100644 --- a/src/lib/evas/canvas/evas_3d_mesh.eo +++ b/src/lib/evas/canvas/evas_3d_mesh.eo @@ -14,7 +14,6 @@ class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface) * @ingroup Evas_3D_Mesh */ params { - @in Evas_3D_Mesh_File_Type type; /*@ The type of the mesh file. */ @in const(char)* file; /*@ Path to the mesh file. */ @in const(char)* key; /*@ Key in the mesh file. */ } @@ -30,7 +29,6 @@ class Evas_3D_Mesh (Evas_3D_Object, Evas.Common_Interface) * @ingroup Evas_3D_Mesh */ params { - @in Evas_3D_Mesh_File_Type type; /*@ The type of the mesh file. */ @in const(char)* file; /*@ Path to the mesh file. */ @in const(char)* key; /*@ Key in the mesh file. */ } diff --git a/src/lib/evas/common/evas_model_load.c b/src/lib/evas/common/evas_model_load.c index 1f35cb0..7350377 100644 --- a/src/lib/evas/common/evas_model_load.c +++ b/src/lib/evas/common/evas_model_load.c @@ -9,26 +9,26 @@ void -evas_common_load_model_to_file(Evas_3D_Mesh *model, - const char *file, - Evas_3D_Mesh_File_Type type) +evas_common_load_model_to_file(Evas_3D_Mesh *model, const char *file) { - switch (type) + char *p; + char *loader = NULL; + + p = strrchr(file, '.'); + if (p) { - case EVAS_3D_MESH_FILE_TYPE_MD2: - evas_model_load_file_md2(model, file); - break; - case EVAS_3D_MESH_FILE_TYPE_OBJ: - evas_model_load_file_obj(model, file); - break; - case EVAS_3D_MESH_FILE_TYPE_EET: - evas_model_load_file_eet(model, file); - break; - case EVAS_3D_MESH_FILE_TYPE_PLY: - evas_model_load_file_ply(model, file); - break; - default: - ERR("Invalid mesh file type."); - break; + p++; +#define CHECK_EXTENTION_BY_FILE_NAME(extention) \ + if (!strcasecmp(p, #extention)) \ + { \ + evas_model_load_file_##extention(model, file); \ + loader = #extention; \ + } + CHECK_EXTENTION_BY_FILE_NAME(eet) + CHECK_EXTENTION_BY_FILE_NAME(md2) + CHECK_EXTENTION_BY_FILE_NAME(obj) + CHECK_EXTENTION_BY_FILE_NAME(ply) +#undef CHECK_EXTENTION_BY_FILE_NAME } + if (!loader) ERR("Invalid mesh file type."); } diff --git a/src/lib/evas/common/evas_model_save.c b/src/lib/evas/common/evas_model_save.c index 85b9b41..7ab3970 100644 --- a/src/lib/evas/common/evas_model_save.c +++ b/src/lib/evas/common/evas_model_save.c @@ -7,26 +7,28 @@ #include "evas_common_private.h" #include "evas_private.h" - void evas_common_save_model_to_file(Evas_3D_Mesh *model, const char *file, - Evas_3D_Mesh_Frame *f, - Evas_3D_Mesh_File_Type type) + Evas_3D_Mesh_Frame *f) { - switch (type) + char *p; + char *saver = NULL; + + p = strrchr(file, '.'); + if (p) { - case EVAS_3D_MESH_FILE_TYPE_OBJ: - evas_model_save_file_obj(model, file, f); - break; - case EVAS_3D_MESH_FILE_TYPE_EET: - evas_model_save_file_eet(model, file, f); - break; - case EVAS_3D_MESH_FILE_TYPE_PLY: - evas_model_save_file_ply(model, file, f); - break; - default: - ERR("Invalid mesh file type."); - break; + p++; +#define CHECK_EXTENTION_BY_FILE_NAME(extention) \ + if (!strcasecmp(p, #extention)) \ + { \ + evas_model_save_file_##extention(model, file, f); \ + saver = #extention; \ + } + CHECK_EXTENTION_BY_FILE_NAME(eet) + CHECK_EXTENTION_BY_FILE_NAME(obj) + CHECK_EXTENTION_BY_FILE_NAME(ply) +#undef CHECK_EXTENTION_BY_FILE_NAME } + if (!saver) ERR("Invalid mesh file type."); } diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 62fd186..b8bec02 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1647,8 +1647,8 @@ void _evas_3d_eet_descriptor_shutdown(void); void _evas_3d_eet_file_free(void); /* Temporary save/load functions */ -void evas_common_load_model_to_file(Evas_3D_Mesh *model, const char *file, Evas_3D_Mesh_File_Type type); -void evas_common_save_model_to_file(Evas_3D_Mesh *model, const char *file, Evas_3D_Mesh_Frame *f, Evas_3D_Mesh_File_Type type); +void evas_common_load_model_to_file(Evas_3D_Mesh *model, const char *file); +void evas_common_save_model_to_file(Evas_3D_Mesh *model, const char *file, Evas_3D_Mesh_Frame *f); void evas_model_load_file_eet(Evas_3D_Mesh *mesh, const char *file); void evas_model_load_file_md2(Evas_3D_Mesh *mesh, const char *file); void evas_model_load_file_obj(Evas_3D_Mesh *mesh, const char *file); --
