cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4acbae69472662feef7a88aedd19ce6ad4d0ebe1

commit 4acbae69472662feef7a88aedd19ce6ad4d0ebe1
Author: Bogdan Devichev <[email protected]>
Date:   Fri Nov 28 18:48:35 2014 +0200

    evas: test cases are changed according to changes of API in step 4. 
Specific logic in obj_saver is removed for standardization of API.
---
 src/examples/evas/evas-3d-obj.c                    |  2 +-
 .../evas/model_savers/obj/evas_model_save_obj.c    | 39 +++++++++++++---------
 src/tests/evas/evas_test_mesh.c                    | 17 +++++-----
 3 files changed, 34 insertions(+), 24 deletions(-)

diff --git a/src/examples/evas/evas-3d-obj.c b/src/examples/evas/evas-3d-obj.c
index 2634502..d19a36d 100644
--- a/src/examples/evas/evas-3d-obj.c
+++ b/src/examples/evas/evas-3d-obj.c
@@ -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("saved_man", NULL));
+         eo_do(mesh, evas_3d_mesh_save("saved_man.obj", NULL));
 
    mesh_node = eo_add(EVAS_3D_NODE_CLASS, evas,
                              evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH));
diff --git a/src/modules/evas/model_savers/obj/evas_model_save_obj.c 
b/src/modules/evas/model_savers/obj/evas_model_save_obj.c
index 35773e3..1cc7e8a 100644
--- a/src/modules/evas/model_savers/obj/evas_model_save_obj.c
+++ b/src/modules/evas/model_savers/obj/evas_model_save_obj.c
@@ -9,17 +9,11 @@
 #include "evas_private.h"
 
 #define OPEN_FILE(extension)\
-   int length=strlen(file);\
-   char * extension = "."#extension;\
-   char * _##extension##_file_name = (char *)malloc(length+4);\
-   strcpy(_##extension##_file_name,file);\
-   strcpy(_##extension##_file_name+length,extension);\
    FILE * _##extension##_file = fopen(_##extension##_file_name, "w+");\
-   free(_##extension##_file_name);
 
 #define SAVE_GEOMETRICS(a, format)\
    vb = &f->vertices[a];\
-   fprintf(_obj_file, "o %s\n",file);\
+   fprintf(_obj_file, "o %s\n",_obj_file_name);\
    if (vb->data == NULL)\
      {\
         ERR("Reading of geometrics is failed.");\
@@ -34,7 +28,7 @@
      }
 
 static void
-_save_mesh(Evas_3D_Mesh_Data *pd, const char *file, Evas_3D_Mesh_Frame *f)
+_save_mesh(Evas_3D_Mesh_Data *pd, const char *_obj_file_name, 
Evas_3D_Mesh_Frame *f)
 {
    Evas_3D_Vertex_Buffer *vb;
    time_t current_time;
@@ -45,7 +39,7 @@ _save_mesh(Evas_3D_Mesh_Data *pd, const char *file, 
Evas_3D_Mesh_Frame *f)
    OPEN_FILE(obj)
    if (!_obj_file)
      {
-        ERR("File open '%s' for save failed", file);
+        ERR("File open '%s' for save failed", _obj_file_name);
         return;
      }
    fprintf(_obj_file, "# Evas_3D saver OBJ v0.03 \n");//_obj_file created in 
macro
@@ -69,7 +63,7 @@ _save_mesh(Evas_3D_Mesh_Data *pd, const char *file, 
Evas_3D_Mesh_Frame *f)
      }
 
    fprintf(_obj_file,"# Current time is %s \n", c_time_string);
-   fprintf(_obj_file,"mtllib %s.mtl \n\n", file);
+   fprintf(_obj_file,"mtllib %s.mtl \n\n", _obj_file_name);
 
    /* Adding geometrics to file. */
    if (f == NULL)
@@ -95,14 +89,14 @@ _save_mesh(Evas_3D_Mesh_Data *pd, const char *file, 
Evas_3D_Mesh_Frame *f)
 }
 
 static void
-_save_material(Evas_3D_Mesh_Data *pd EINA_UNUSED, const char *file, 
Evas_3D_Mesh_Frame *f)
+_save_material(Evas_3D_Mesh_Data *pd EINA_UNUSED, const char *_mtl_file_name, 
Evas_3D_Mesh_Frame *f)
 {
    Evas_3D_Material_Data *mat = eo_data_scope_get(f->material, 
EVAS_3D_MATERIAL_CLASS);
 
    OPEN_FILE(mtl)
    if (!_mtl_file)
      {
-        ERR("File open '%s' for save failed", file);
+        ERR("File open '%s' for save failed", _mtl_file_name);
         return;
      }
    fprintf(_mtl_file, "# Evas_3D saver OBJ v0.03 \n");//_mtl_file created in 
macro
@@ -129,9 +123,24 @@ _save_material(Evas_3D_Mesh_Data *pd EINA_UNUSED, const 
char *file, Evas_3D_Mesh
 }
 
 void
-evas_model_save_file_obj(Evas_3D_Mesh *mesh, const char *file, 
Evas_3D_Mesh_Frame *f)
+evas_model_save_file_obj(Evas_3D_Mesh *mesh, const char *_obj_file_name, 
Evas_3D_Mesh_Frame *f)
 {
+   int len;
+   char *without_extention, *_mtl_extension, *_mtl_file_name;
+
+   len = strlen(_obj_file_name);
+   without_extention = (char*)malloc((len - 4) * sizeof(char));
+   _mtl_extension = ".mtl";
+   _mtl_file_name = (char *)malloc(len * sizeof(char));
+
+   memcpy(without_extention, _obj_file_name, len-4);
+   strcpy(_mtl_file_name, without_extention);
+   strcpy(_mtl_file_name + len - 4, _mtl_extension);
+
    Evas_3D_Mesh_Data *pd = eo_data_scope_get(mesh, EVAS_3D_MESH_CLASS);
-   _save_mesh(pd, file, f);
-   _save_material(pd, file, f);
+   _save_mesh(pd, _obj_file_name, f);
+   _save_material(pd, _mtl_file_name, f);
+
+   free(without_extention);
+   free(_mtl_file_name);
 }
diff --git a/src/tests/evas/evas_test_mesh.c b/src/tests/evas/evas_test_mesh.c
index 7bfa613..dde1dd3 100644
--- a/src/tests/evas/evas_test_mesh.c
+++ b/src/tests/evas/evas_test_mesh.c
@@ -34,7 +34,7 @@
         src2 += f2->vertices[a].element_count;              \
      }
 
-#define CHECK_MESHES_IN_FOLDER(folder, type, type_to_check)                    
                                 \
+#define CHECK_MESHES_IN_FOLDER(folder, ext)                                    
                                 \
    it = eina_file_direct_ls(folder);                                           
                                 \
    EINA_ITERATOR_FOREACH(it, file)                                             
                                 \
      {                                                                         
                                 \
@@ -42,9 +42,10 @@
         mesh2 = eo_add(EVAS_3D_MESH_CLASS, e);                                 
                                 \
         fail_if(mesh == NULL);                                                 
                                 \
         fail_if(mesh2 == NULL);                                                
                                 \
-        eo_do(mesh, evas_3d_mesh_file_set(type, file->path, NULL));            
                                 \
-        eo_do(mesh, evas_3d_mesh_save(type_to_check, buffer, NULL));           
                                 \
-        eo_do(mesh2, evas_3d_mesh_file_set(type_to_check, buffer, NULL));      
                                 \
+        snprintf(buffer, PATH_MAX, "%s", ext);                                 
                                 \
+        eo_do(mesh, evas_3d_mesh_file_set(file->path, NULL));                  
                                 \
+        eo_do(mesh, evas_3d_mesh_save(buffer, NULL));                          
                                 \
+        eo_do(mesh2, evas_3d_mesh_file_set(buffer, NULL));                     
                                 \
         res = _compare_meshes(mesh, mesh2);                                    
                                 \
         fail_if(res == 1);                                                     
                                 \
         eo_del(mesh2);                                                         
                                 \
@@ -111,10 +112,10 @@ START_TEST(evas_object_mesh_loader_saver)
 
    snprintf(buffer, PATH_MAX, "%s", tmp);
 
-   CHECK_MESHES_IN_FOLDER(TESTS_OBJ_MESH_DIR, EVAS_3D_MESH_FILE_TYPE_OBJ, 
EVAS_3D_MESH_FILE_TYPE_EET)
-   CHECK_MESHES_IN_FOLDER(TESTS_MD2_MESH_DIR, EVAS_3D_MESH_FILE_TYPE_MD2, 
EVAS_3D_MESH_FILE_TYPE_EET)
-   CHECK_MESHES_IN_FOLDER(TESTS_PLY_MESH_DIR, EVAS_3D_MESH_FILE_TYPE_PLY, 
EVAS_3D_MESH_FILE_TYPE_EET)
-   CHECK_MESHES_IN_FOLDER(TESTS_PLY_MESH_DIR, EVAS_3D_MESH_FILE_TYPE_PLY, 
EVAS_3D_MESH_FILE_TYPE_PLY)
+   CHECK_MESHES_IN_FOLDER(TESTS_OBJ_MESH_DIR, ".eet")
+   CHECK_MESHES_IN_FOLDER(TESTS_MD2_MESH_DIR, ".eet")
+   CHECK_MESHES_IN_FOLDER(TESTS_PLY_MESH_DIR, ".eet")
+   CHECK_MESHES_IN_FOLDER(TESTS_PLY_MESH_DIR, ".ply")
 
    eina_iterator_free(it);
 

-- 


Reply via email to