Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/modules/loaders/svg


Modified Files:
        evas_image_load_svg.c 


Log Message:


cedric's cache changes patch

===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/loaders/svg/evas_image_load_svg.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- evas_image_load_svg.c       5 Mar 2007 18:19:49 -0000       1.13
+++ evas_image_load_svg.c       12 Apr 2008 00:32:29 -0000      1.14
@@ -50,7 +50,7 @@
    /* ignore all files not called .svg or .svg.gz - because rsvg has a leak
     * where closing the handle doesn't free mem */
    ext = strrchr(file, '.');
-   if (!ext) return;
+   if (!ext) return 0;
    if (!strcasecmp(ext, ".gz"))
      {
        if (p > file)
@@ -81,61 +81,47 @@
        chdir(pcwd);
        return 0;
      }
-   if (!im->image)
-     {
-       im->image = evas_common_image_surface_new(im);
-       if (!im->image)
-         {
-//          rsvg_handle_close(rsvg, NULL);
-            g_object_unref(rsvg);
-//          rsvg_handle_free(rsvg);
-            chdir(pcwd);
-            return 0;
-         }
-     }
 
    rsvg_handle_get_dimensions(rsvg, &dim);
    w = dim.width;
    h = dim.height;
    if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
      {
-       evas_common_image_surface_free(im->image);
-       im->image = NULL;
 //     rsvg_handle_close(rsvg, NULL);
        g_object_unref(rsvg);
 //     rsvg_handle_free(rsvg);
        chdir(pcwd);
        return 0;
      }
-   if (im->load_opts.scale_down_by > 1)
+   if (im->cache_entry.load_opts.scale_down_by > 1)
      {
-       w /= im->load_opts.scale_down_by;
-       h /= im->load_opts.scale_down_by;
+       w /= im->cache_entry.load_opts.scale_down_by;
+       h /= im->cache_entry.load_opts.scale_down_by;
      }
-   else if (im->load_opts.dpi > 0.0)
+   else if (im->cache_entry.load_opts.dpi > 0.0)
      {
-       w = (w * im->load_opts.dpi) / 90.0;
-       h = (h * im->load_opts.dpi) / 90.0;
+       w = (w * im->cache_entry.load_opts.dpi) / 90.0;
+       h = (h * im->cache_entry.load_opts.dpi) / 90.0;
      }
-   else if ((im->load_opts.w > 0) &&
-           (im->load_opts.h > 0))
+   else if ((im->cache_entry.load_opts.w > 0) &&
+           (im->cache_entry.load_opts.h > 0))
      {
        int w2, h2;
        
-       w2 = im->load_opts.w;
-       h2 = (im->load_opts.w * h) / w;
-       if (h2 > im->load_opts.h)
+       w2 = im->cache_entry.load_opts.w;
+       h2 = (im->cache_entry.load_opts.w * h) / w;
+       if (h2 > im->cache_entry.load_opts.h)
          {
-            h2 = im->load_opts.h;
-            w2 = (im->load_opts.h * w) / h;
+            h2 = im->cache_entry.load_opts.h;
+            w2 = (im->cache_entry.load_opts.h * w) / h;
          }
        w = w2;
        h = h2;
      }
    if (w < 1) w = 1;
    if (h < 1) h = 1;
-   im->image->w = w;
-   im->image->h = h;
+   im->cache_entry.w = w;
+   im->cache_entry.h = h;
    im->flags |= RGBA_IMAGE_HAS_ALPHA;
 //   rsvg_handle_close(rsvg, NULL);
    g_object_unref(rsvg);
@@ -157,12 +143,11 @@
    char               *ext;
 
    if (!file) return 0;
-   if (!im->image) return 0;
 
    /* ignore all files not called .svg or .svg.gz - because rsvg has a leak
     * where closing the handle doesn't free mem */
    ext = strrchr(file, '.');
-   if (!ext) return;
+   if (!ext) return 0;
    if (!strcasecmp(ext, ".gz"))
      {
        if (p > file)
@@ -190,8 +175,6 @@
    rsvg = rsvg_handle_new_from_file(file, NULL);
    if (!rsvg)
      {
-       evas_common_image_surface_free(im->image);
-       im->image = NULL;
        chdir(pcwd);
        return 0;
      }
@@ -201,49 +184,43 @@
    h = dim.height;
    if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
      {
-       evas_common_image_surface_free(im->image);
-       im->image = NULL;
 //     rsvg_handle_close(rsvg, NULL);
        g_object_unref(rsvg);
 //     rsvg_handle_free(rsvg);
        chdir(pcwd);
        return 0;
      }
-   if (im->load_opts.scale_down_by > 1)
+   if (im->cache_entry.load_opts.scale_down_by > 1)
      {
-       w /= im->load_opts.scale_down_by;
-       h /= im->load_opts.scale_down_by;
+       w /= im->cache_entry.load_opts.scale_down_by;
+       h /= im->cache_entry.load_opts.scale_down_by;
      }
-   else if (im->load_opts.dpi > 0.0)
+   else if (im->cache_entry.load_opts.dpi > 0.0)
      {
-       w = (w * im->load_opts.dpi) / 90.0;
-       h = (h * im->load_opts.dpi) / 90.0;
+       w = (w * im->cache_entry.load_opts.dpi) / 90.0;
+       h = (h * im->cache_entry.load_opts.dpi) / 90.0;
      }
-   else if ((im->load_opts.w > 0) &&
-           (im->load_opts.h > 0))
+   else if ((im->cache_entry.load_opts.w > 0) &&
+           (im->cache_entry.load_opts.h > 0))
      {
        int w2, h2;
        
-       w2 = im->load_opts.w;
-       h2 = (im->load_opts.w * h) / w;
-       if (h2 > im->load_opts.h)
+       w2 = im->cache_entry.load_opts.w;
+       h2 = (im->cache_entry.load_opts.w * h) / w;
+       if (h2 > im->cache_entry.load_opts.h)
          {
-            h2 = im->load_opts.h;
-            w2 = (im->load_opts.h * w) / h;
+            h2 = im->cache_entry.load_opts.h;
+            w2 = (im->cache_entry.load_opts.h * w) / h;
          }
        w = w2;
        h = h2;
      }
    if (w < 1) w = 1;
    if (h < 1) h = 1;
-   im->image->w = w;
-   im->image->h = h;
    im->flags |= RGBA_IMAGE_HAS_ALPHA;
-   evas_common_image_surface_alloc(im->image);
-   if (!im->image->data)
+   evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+   if (!im->image.data)
      {
-       evas_common_image_surface_free(im->image);
-       im->image = NULL;
 //     rsvg_handle_close(rsvg, NULL);
        g_object_unref(rsvg);
 //     rsvg_handle_free(rsvg);
@@ -251,14 +228,12 @@
        return 0;
      }
 
-   memset(im->image->data, 0, w * h * sizeof(DATA32));
+   memset(im->image.data, 0, w * h * sizeof(DATA32));
    
-   surface = cairo_image_surface_create_for_data((unsigned char 
*)im->image->data, CAIRO_FORMAT_ARGB32,
+   surface = cairo_image_surface_create_for_data((unsigned char 
*)im->image.data, CAIRO_FORMAT_ARGB32,
                                                 w, h, w * sizeof(DATA32));
    if (!surface)
      {
-       evas_common_image_surface_free(im->image);
-       im->image = NULL;
 //     rsvg_handle_close(rsvg, NULL);
        g_object_unref(rsvg);
 //     rsvg_handle_free(rsvg);
@@ -269,8 +244,6 @@
    if (!cr)
      {
        cairo_surface_destroy(surface);
-       evas_common_image_surface_free(im->image);
-       im->image = NULL;
 //     rsvg_handle_close(rsvg, NULL);
        g_object_unref(rsvg);
 //     rsvg_handle_free(rsvg);
@@ -279,8 +252,8 @@
      }
    
    cairo_scale(cr, 
-              (double)im->image->w / dim.em, 
-              (double)im->image->h / dim.ex);
+              (double)im->cache_entry.w / dim.em, 
+              (double)im->cache_entry.h / dim.ex);
    rsvg_handle_render_cairo(rsvg, cr);
    cairo_surface_destroy(surface);
    /* need to check if this is required... */



-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to