hermet pushed a commit to branch master.

commit 04f87ab23796dfd7658bbb964e73f0ff248e075f
Author: ChunEon Park <[email protected]>
Date:   Fri Jul 5 11:09:03 2013 +0900

    evas/render - refactoring. split off a bunch of internal logic to a seprate 
function.
---
 src/lib/evas/canvas/evas_render.c | 104 +++++++++++++++++++++-----------------
 1 file changed, 58 insertions(+), 46 deletions(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 313c6d4..528143a 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -975,6 +975,61 @@ _evas_render_can_use_overlay(Evas_Public_Data *e, 
Evas_Object *eo_obj)
    return EINA_TRUE;
 }
 
+static void
+_evas_render_mapped_context_clip_set(Evas_Public_Data *e, Evas_Object *eo_obj, 
Evas_Object_Protected_Data *obj, void *ctx, Evas_Proxy_Render_Data 
*proxy_render_data, int off_x, int off_y)
+{
+   int x, y, w, h;
+   Eina_Bool proxy_src_clip = EINA_TRUE;
+
+   if (proxy_render_data) proxy_src_clip = proxy_render_data->source_clip;
+
+   if (proxy_src_clip)
+     {
+        x = obj->cur->cache.clip.x;
+        y = obj->cur->cache.clip.y;
+        w = obj->cur->cache.clip.w;
+        h = obj->cur->cache.clip.h;
+
+        RECTS_CLIP_TO_RECT(x, y, w, h,
+                           obj->cur->clipper->cur->cache.clip.x,
+                           obj->cur->clipper->cur->cache.clip.y,
+                           obj->cur->clipper->cur->cache.clip.w,
+                           obj->cur->clipper->cur->cache.clip.h);
+
+        e->engine.func->context_clip_set(e->engine.data.output,
+                                         ctx, x + off_x, y + off_y, w, h);
+     }
+   else
+     {
+        //FIXME: Consider to clip by the proxy clipper.
+        if (proxy_render_data->eo_src != eo_obj)
+          {
+             x = obj->cur->clipper->cur->geometry.x + off_x;
+             y = obj->cur->clipper->cur->geometry.y + off_y;
+             w = obj->cur->clipper->cur->geometry.w;
+             h = obj->cur->clipper->cur->geometry.h;
+             e->engine.func->context_clip_set(e->engine.data.output, ctx, x, y,
+                                              w, h);
+          }
+        else
+          {
+             Evas_Object_Protected_Data *proxy =
+                proxy_render_data->proxy_obj;
+             if (proxy->cur->clipper)
+               {
+                  x = proxy->cur->clipper->cur->geometry.x +
+                     off_x;
+                  y = proxy->cur->clipper->cur->geometry.y +
+                     off_y;
+                  w = proxy->cur->clipper->cur->geometry.w;
+                  h = proxy->cur->clipper->cur->geometry.h;
+                  e->engine.func->context_clip_set(e->engine.data.output, ctx,
+                                                   x, y, w, h);
+               }
+          }
+     }
+}
+
 Eina_Bool
 evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
                    Evas_Object_Protected_Data *obj, void *context,
@@ -1301,54 +1356,11 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
 
                   if (obj->cur->clipper)
                     {
-                       int x, y, w, h;
-
                        if (_evas_render_has_map(eo_obj, obj))
                          evas_object_clip_recalc(obj);
-
-                       if (proxy_src_clip)
-                         {
-                            x = obj->cur->cache.clip.x + off_x;
-                            y = obj->cur->cache.clip.y + off_y;
-                            w = obj->cur->cache.clip.w;
-                            h = obj->cur->cache.clip.h;
-
-                            RECTS_CLIP_TO_RECT(x, y, w, h,
-                                               
obj->cur->clipper->cur->cache.clip.x + off_x,
-                                               
obj->cur->clipper->cur->cache.clip.y + off_y,
-                                               
obj->cur->clipper->cur->cache.clip.w,
-                                               
obj->cur->clipper->cur->cache.clip.h);
-
-                            
e->engine.func->context_clip_set(e->engine.data.output,
-                                                             ctx, x, y, w, h);
-                         }
-                       else
-                         {
-                            //FIXME: Consider to clip by the proxy clipper.
-                            if (proxy_render_data->eo_src != eo_obj)
-                              {
-                                 x = obj->cur->clipper->cur->geometry.x + 
off_x;
-                                 y = obj->cur->clipper->cur->geometry.y + 
off_y;
-                                 w = obj->cur->clipper->cur->geometry.w;
-                                 h = obj->cur->clipper->cur->geometry.h;
-                                 
e->engine.func->context_clip_set(e->engine.data.output, ctx, x, y, w, h);
-                              }
-                            else
-                              {
-                                 Evas_Object_Protected_Data *proxy =
-                                    proxy_render_data->proxy_obj;
-                                 if (proxy->cur->clipper)
-                                   {
-                                      x = proxy->cur->clipper->cur->geometry.x 
+
-                                          off_x;
-                                      y = proxy->cur->clipper->cur->geometry.y 
+
-                                          off_y;
-                                      w = proxy->cur->clipper->cur->geometry.w;
-                                      h = proxy->cur->clipper->cur->geometry.h;
-                                      
e->engine.func->context_clip_set(e->engine.data.output, ctx, x, y, w, h);
-                                   }
-                              }
-                         }
+                       _evas_render_mapped_context_clip_set(e, eo_obj, obj, 
ctx,
+                                                            proxy_render_data,
+                                                           off_x, off_y);
                     }
                   obj->func->render(eo_obj, obj, e->engine.data.output, ctx,
                                     surface, off_x, off_y, EINA_FALSE);

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to