evas: remove svg loader from inside the merged tree.
authorCedric Bail <cedric.bail@samsung.com>
Thu, 25 Apr 2013 05:56:55 +0000 (14:56 +0900)
committerCedric Bail <cedric.bail@samsung.com>
Mon, 6 May 2013 10:02:04 +0000 (19:02 +0900)
ChangeLog
NEWS
src/modules/evas/loaders/svg/evas_image_load_esvg.c [deleted file]

index 50af5f5..9608f72 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-05-06  Cedric Bail
+
+        * Evas: Remove SVG loader from inside the merged tree.
+
 2013-05-06  ChunEon Park (Hermet)
 
         * Evas: update the map smart members really when it needs to render.
diff --git a/NEWS b/NEWS
index cd4c491..dce388e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -120,6 +120,7 @@ Deprecations:
 Removed:
     * directfb support: ecore_directfb and evas directfb engine.
     * Removed XRender, WinCE, Glew, Direct3d, X11-16 and X11-8 ecore_evas support.
+    * Removed svg from inside merged tree.
 
 Improvements:
     * Reduced number of enqueued font commands when rendering textgrid objects
diff --git a/src/modules/evas/loaders/svg/evas_image_load_esvg.c b/src/modules/evas/loaders/svg/evas_image_load_esvg.c
deleted file mode 100644 (file)
index ba64f5c..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <math.h>
-
-#ifdef HAVE_EVIL
-# include <Evil.h>
-#endif
-
-#include <Esvg.h>
-
-#include "evas_common.h"
-#include "evas_private.h"
-
-static inline Eina_Bool evas_image_load_file_is_svg(const char *file) EINA_ARG_NONNULL(1) EINA_PURE;
-static Eina_Bool evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key, int *error) EINA_ARG_NONNULL(1, 2, 4);
-static Eina_Bool evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key, int *error) EINA_ARG_NONNULL(1, 2, 4);
-
-Evas_Image_Load_Func evas_image_load_svg_func =
-{
-  EINA_FALSE,
-  evas_image_load_file_head_svg,
-  evas_image_load_file_data_svg,
-  NULL,
-  EINA_FALSE
-};
-
-static Eina_Bool esvg_initialized = EINA_FALSE;
-
-
-static inline Eina_Bool evas_image_load_file_is_svg(const char *file)
-{
-   int i, len = strlen(file);
-   Eina_Bool is_gz = EINA_FALSE;
-
-   for (i = len - 1; i > 0; i--)
-     {
-        if (file[i] == '.')
-          {
-             if (is_gz)
-               break;
-             else if (strcasecmp(file + i + 1, "gz") == 0)
-               is_gz = EINA_TRUE;
-             else
-               break;
-          }
-     }
-
-   if (i < 1) return EINA_FALSE;
-   i++;
-   if (i >= len) return EINA_FALSE;
-   if (strncasecmp(file + i, "svg", 3) != 0) return EINA_FALSE;
-   i += 3;
-   if (is_gz)
-     {
-        if (file[i] == '.') return EINA_TRUE;
-        else return EINA_FALSE;
-     }
-   else
-     {
-        if (file[i] == '\0') return EINA_TRUE;
-        else if (((file[i] == 'z') || (file[i] == 'Z')) && (!file[i + 1])) return EINA_TRUE;
-        else return EINA_FALSE;
-     }
-}
-
-static Eina_Bool
-evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key EINA_UNUSED, int *error)
-{
-   Ender_Element *e;
-   int            w, h;
-   double         sw, sh;
-
-   /* ignore all files not called .svg or .svg.gz - because rsvg has a leak
-    * where closing the handle doesn't free mem */
-   if (!evas_image_load_file_is_svg(file))
-     {
-        *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT;
-        return EINA_FALSE;
-     }
-
-   e = esvg_parser_load(file);
-   if (!e)
-     {
-        *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST;
-        return EINA_FALSE;
-     }
-
-   esvg_svg_x_dpi_set(e, 92.0);
-   esvg_svg_y_dpi_set(e, 92.0);
-   esvg_svg_actual_width_get(e, &sw);
-   esvg_svg_actual_height_get(e, &sh);
-   w = (int)ceil(sw);
-   h = (int)ceil(sh);
-   if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) ||
-       IMG_TOO_BIG(w, h))
-     {
-        ender_element_unref(e);
-        if (IMG_TOO_BIG(w, h))
-          *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
-        else
-          *error = EVAS_LOAD_ERROR_GENERIC;
-        return EINA_FALSE;
-     }
-   if (ie->load_opts.scale_down_by > 1)
-     {
-        w /= ie->load_opts.scale_down_by;
-        h /= ie->load_opts.scale_down_by;
-     }
-   else if (ie->load_opts.dpi > 0.0)
-     {
-        w = (w * ie->load_opts.dpi) / 75.0;
-        h = (h * ie->load_opts.dpi) / 75.0;
-     }
-   else if ((ie->load_opts.w > 0) &&
-            (ie->load_opts.h > 0))
-     {
-        unsigned int w2, h2;
-
-        w2 = ie->load_opts.w;
-        h2 = (ie->load_opts.w * h) / w;
-        if (h2 > ie->load_opts.h)
-          {
-             h2 = ie->load_opts.h;
-             w2 = (ie->load_opts.h * w) / h;
-          }
-        w = w2;
-        h = h2;
-     }
-   if (w < 1) w = 1;
-   if (h < 1) h = 1;
-   ie->w = w;
-   ie->h = h;
-   ie->flags.alpha = 1;
-
-   ender_element_unref(e);
-
-   *error = EVAS_LOAD_ERROR_NONE;
-   return EINA_TRUE;
-}
-
-/** FIXME: All evas loaders need to be tightened up **/
-static Eina_Bool
-evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key EINA_UNUSED, int *error)
-{
-   DATA32          *pixels;
-   Ender_Element   *e;
-   Enesim_Error    *err = NULL;
-   Enesim_Surface  *s;
-   void            *data;
-   size_t           stride;
-   int              w, h;
-   double           sw, sh;
-
-   if (!evas_image_load_file_is_svg(file))
-     {
-        *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT;
-        return EINA_FALSE;
-     }
-
-   e = esvg_parser_load(file);
-   if (!e)
-     {
-        *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST;
-        return EINA_FALSE;
-     }
-
-   esvg_svg_x_dpi_set(e, 92.0);
-   esvg_svg_y_dpi_set(e, 92.0);
-   esvg_svg_actual_width_get(e, &sw);
-   esvg_svg_actual_height_get(e, &sh);
-   w = (int)ceil(sw);
-   h = (int)ceil(sh);
-   if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
-     {
-        ender_element_unref(e);
-        if (IMG_TOO_BIG(w, h))
-          *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
-        else
-          *error = EVAS_LOAD_ERROR_GENERIC;
-        goto unref_renderer;
-     }
-   if (ie->load_opts.scale_down_by > 1)
-     {
-        w /= ie->load_opts.scale_down_by;
-        h /= ie->load_opts.scale_down_by;
-     }
-   else if (ie->load_opts.dpi > 0.0)
-     {
-        w = (w * ie->load_opts.dpi) / 75.0;
-        h = (h * ie->load_opts.dpi) / 75.0;
-     }
-   else if ((ie->load_opts.w > 0) &&
-            (ie->load_opts.h > 0))
-     {
-        unsigned int w2, h2;
-
-        w2 = ie->load_opts.w;
-        h2 = (ie->load_opts.w * h) / w;
-        if (h2 > ie->load_opts.h)
-          {
-             h2 = ie->load_opts.h;
-             w2 = (ie->load_opts.h * w) / h;
-          }
-        w = w2;
-        h = h2;
-     }
-   if (w < 1) w = 1;
-   if (h < 1) h = 1;
-   if ((w != (int)ie->w) || (h != (int)ie->h))
-     {
-        *error = EVAS_LOAD_ERROR_GENERIC;
-        goto unref_renderer;
-     }
-   ie->flags.alpha = 1;
-   evas_cache_image_surface_alloc(ie, w, h);
-   pixels = evas_cache_image_pixels(ie);
-   if (!pixels)
-     {
-        *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
-        goto unref_renderer;
-     }
-
-   memset(pixels, 0, w * h * sizeof(DATA32));
-
-   s = enesim_surface_new(ENESIM_FORMAT_ARGB8888, w, h);
-   if (!s)
-     {
-        *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
-        goto unref_renderer;
-     }
-
-   esvg_svg_setup(e, NULL);
-
-   if (!esvg_svg_draw(e, s, NULL, 0, 0, &err))
-     {
-        *error = EVAS_LOAD_ERROR_GENERIC;
-        enesim_error_dump(err);
-        goto unref_surface;
-     }
-
-   if (!enesim_surface_data_get(s, &data, &stride))
-     {
-        *error = EVAS_LOAD_ERROR_GENERIC;
-        goto unref_surface;
-     }
-
-/*    printf("test : %d %d\n", w * h * sizeof(int), h * stride); */
-/*    if ((w * h * sizeof(int)) != (h * stride)) */
-/*      { */
-/*         *error = EVAS_LOAD_ERROR_GENERIC; */
-/*         goto unref_surface; */
-/*      } */
-
-   /* FIXME: scale to (double)ie->w / dim.em, (double)ie->h / dim.ex */
-
-   memcpy (pixels, data, h * stride);
-
-   enesim_surface_unref(s);
-   ender_element_unref(e);
-
-   evas_common_image_set_alpha_sparse(ie);
-
-   return EINA_TRUE;
-
- unref_surface:
-   enesim_surface_unref(s);
- unref_renderer:
-   ender_element_unref(e);
-
-   return EINA_FALSE;
-}
-
-static int
-module_open(Evas_Module *em)
-{
-   if (!em) return 0;
-   em->functions = (void *)(&evas_image_load_svg_func);
-   if (!esvg_initialized) esvg_init();
-   esvg_initialized = EINA_TRUE;
-   return 1;
-}
-
-static void
-module_close(Evas_Module *em EINA_UNUSED)
-{
-   if (!esvg_initialized) return;
-   esvg_shutdown();
-   esvg_initialized = EINA_FALSE;
-}
-
-static Evas_Module_Api evas_modapi =
-{
-   EVAS_MODULE_API_VERSION,
-   "svg",
-   "none",
-   {
-     module_open,
-     module_close
-   }
-};
-
-EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, svg);
-
-#ifndef EVAS_STATIC_BUILD_SVG
-EVAS_EINA_MODULE_DEFINE(image_loader, svg);
-#endif