cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=23815453f495faea92f41b3868437ecfa30a4c6d

commit 23815453f495faea92f41b3868437ecfa30a4c6d
Author: Wonguk Jeong <[email protected]>
Date:   Sun Jul 6 19:59:44 2014 +0200

    evas: jpeg loader - add tests for EXIF flip, transpose, transverse.
    
    Summary:
    Previously, there was rotation test only. (90 CW, 180 CW, 90 CCW)
    Flip vertically, flip horizontally, transpose, transverse tests are added
    
    D1126 will make added tests be passed.
    
    Reviewers: raster, cedric, jpeg
    
    CC: seoz, cedric
    
    Differential Revision: https://phab.enlightenment.org/D1127
    
    Signed-off-by: Cedric BAIL <[email protected]>
---
 src/tests/evas/evas_test_image.c                |  92 +++++++++++++++++++++---
 src/tests/evas/images/Light_exif_flip_h.jpg     | Bin 0 -> 387041 bytes
 src/tests/evas/images/Light_exif_flip_v.jpg     | Bin 0 -> 387041 bytes
 src/tests/evas/images/Light_exif_transpose.jpg  | Bin 0 -> 387041 bytes
 src/tests/evas/images/Light_exif_transverse.jpg | Bin 0 -> 387041 bytes
 5 files changed, 84 insertions(+), 8 deletions(-)

diff --git a/src/tests/evas/evas_test_image.c b/src/tests/evas/evas_test_image.c
index bd7b545..c9dfef8 100644
--- a/src/tests/evas/evas_test_image.c
+++ b/src/tests/evas/evas_test_image.c
@@ -53,7 +53,7 @@ END_TEST
 
 typedef struct _orientation_Test_Res {
    const char *img;
-   int flag;
+   const char *desc;
    int (*compare_func)(const uint32_t *d1, const uint32_t *d2, int w2, int h2);
 } Orientation_Test_Res;
 
@@ -116,17 +116,93 @@ static int _compare_img_270(const uint32_t *d1, const 
uint32_t *d2, int w2, int
    return 0;
 }
 
+static int _compare_img_flip_h(const uint32_t *d1, const uint32_t *d2, int w2, 
int h2)
+{
+   int x, y;
+   int r;
+
+   for (y = 0; y < h2; y++)
+     {
+        for (x = w2 - 1; x >= 0; x--)
+          {
+             r = *d1 - *(d2 + x + y * w2);
+             if (r != 0) return r;
+             d1++;
+          }
+     }
+
+   return 0;
+}
+
+static int _compare_img_flip_v(const uint32_t *d1, const uint32_t *d2, int w2, 
int h2)
+{
+   int x, y;
+   int r;
+
+   for (y = h2 - 1; y >= 0; y--)
+     {
+        for (x = 0; x < w2; x++)
+          {
+             r = *d1 - *(d2 + x + y * w2);
+             if (r != 0) return r;
+             d1++;
+          }
+     }
+
+   return 0;
+}
+
+static int _compare_img_transpose(const uint32_t *d1, const uint32_t *d2, int 
w2, int h2)
+{
+   int x, y;
+   int r;
+
+   for (x = 0; x < w2; x++)
+     {
+        for (y = 0; y < h2; y++)
+          {
+             r = *d1 - *(d2 + x + y * w2);
+             if (r != 0) return r;
+             d1++;
+          }
+     }
+
+   return 0;
+}
+
+static int _compare_img_transverse(const uint32_t *d1, const uint32_t *d2, int 
w2, int h2)
+{
+   int x, y;
+   int r;
+
+   for (x = w2 - 1; x >= 0; x--)
+     {
+        for (y = h2 - 1; y >= 0; y--)
+          {
+             r = *d1 - *(d2 + x + y * w2);
+             if (r != 0) return r;
+             d1++;
+          }
+     }
+
+   return 0;
+}
+
 /* TODO: flip test code for 2, 4, 5, 7 */
 START_TEST(evas_object_image_loader_orientation)
 {
    Evas *e = _setup_evas();
    Evas_Object *orig, *rot;
    Orientation_Test_Res res[] = {
-       {TESTS_IMG_DIR"/Light_exif.jpg", 1, _compare_img},
-       {TESTS_IMG_DIR"/Light_exif_90.jpg", 6, _compare_img_90},
-       {TESTS_IMG_DIR"/Light_exif_180.jpg", 3, _compare_img_180},
-       {TESTS_IMG_DIR"/Light_exif_270.jpg", 8, _compare_img_270},
-       {NULL, 0, NULL}
+       {TESTS_IMG_DIR"/Light_exif.jpg", "Original", _compare_img},
+       {TESTS_IMG_DIR"/Light_exif_flip_h.jpg", "Flip horizontally", 
_compare_img_flip_h},
+       {TESTS_IMG_DIR"/Light_exif_180.jpg", "Rotate 180° CW", 
_compare_img_180},
+       {TESTS_IMG_DIR"/Light_exif_flip_v.jpg", "Flip vertically", 
_compare_img_flip_v},
+       {TESTS_IMG_DIR"/Light_exif_transpose.jpg", "Transpose", 
_compare_img_transpose},
+       {TESTS_IMG_DIR"/Light_exif_90.jpg", "Rotate 90° CW", _compare_img_90},
+       {TESTS_IMG_DIR"/Light_exif_transverse.jpg", "Transverse", 
_compare_img_transverse},
+       {TESTS_IMG_DIR"/Light_exif_270.jpg", "Rotate 90° CCW", 
_compare_img_270},
+       {NULL, NULL, NULL}
    };
    int w, h, r_w, r_h;
    const uint32_t *d, *r_d;
@@ -147,12 +223,12 @@ START_TEST(evas_object_image_loader_orientation)
         evas_object_image_file_set(rot, res[i].img, NULL);
         fail_if(evas_object_image_load_error_get(rot) != EVAS_LOAD_ERROR_NONE);
         evas_object_image_size_get(rot, &r_w, &r_h);
-       fail_if(w * h != r_w * r_h);
+        fail_if(w * h != r_w * r_h);
 
         r_d = evas_object_image_data_get(rot, EINA_FALSE);
 
         fail_if(res[i].compare_func(d, r_d, r_w, r_h),
-                "Image orientation test failed: exif orientation flag: %d\n", 
res[i].flag);
+                "Image orientation test failed: exif orientation flag: %s\n", 
res[i].desc);
      }
 
    evas_object_del(orig);
diff --git a/src/tests/evas/images/Light_exif_flip_h.jpg 
b/src/tests/evas/images/Light_exif_flip_h.jpg
new file mode 100644
index 0000000..ce2c06c
Binary files /dev/null and b/src/tests/evas/images/Light_exif_flip_h.jpg differ
diff --git a/src/tests/evas/images/Light_exif_flip_v.jpg 
b/src/tests/evas/images/Light_exif_flip_v.jpg
new file mode 100644
index 0000000..4504550
Binary files /dev/null and b/src/tests/evas/images/Light_exif_flip_v.jpg differ
diff --git a/src/tests/evas/images/Light_exif_transpose.jpg 
b/src/tests/evas/images/Light_exif_transpose.jpg
new file mode 100644
index 0000000..cf0bb50
Binary files /dev/null and b/src/tests/evas/images/Light_exif_transpose.jpg 
differ
diff --git a/src/tests/evas/images/Light_exif_transverse.jpg 
b/src/tests/evas/images/Light_exif_transverse.jpg
new file mode 100644
index 0000000..4579b04
Binary files /dev/null and b/src/tests/evas/images/Light_exif_transverse.jpg 
differ

-- 


Reply via email to