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);

-- 


Reply via email to