summaryrefslogtreecommitdiff
path: root/legacy
diff options
context:
space:
mode:
authorChunEon Park <hermet@hermet.pe.kr>2012-08-17 06:02:49 +0000
committerChunEon Park <hermet@hermet.pe.kr>2012-08-17 06:02:49 +0000
commit225630552ec62a23db1f3f9b244fe2963addf18f (patch)
tree69a31f28bf039ce9b529d153af3a73bf469f0159 /legacy
parent8f54340beb4c5e297b81dd41b1d22cd992e3bde5 (diff)
evas/render - let clip the child even if it's the mapped obj and do it only when clipper exists.
SVN revision: 75350
Diffstat (limited to 'legacy')
-rw-r--r--legacy/evas/src/lib/canvas/evas_render.c70
1 files changed, 27 insertions, 43 deletions
diff --git a/legacy/evas/src/lib/canvas/evas_render.c b/legacy/evas/src/lib/canvas/evas_render.c
index 114f6b8a69..db934b0a1e 100644
--- a/legacy/evas/src/lib/canvas/evas_render.c
+++ b/legacy/evas/src/lib/canvas/evas_render.c
@@ -814,6 +814,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
814 Eina_Bool clean_them = EINA_FALSE; 814 Eina_Bool clean_them = EINA_FALSE;
815 815
816 evas_object_clip_recalc(obj); 816 evas_object_clip_recalc(obj);
817
817 RDI(level); 818 RDI(level);
818 RD(" { evas_render_mapped(%p, %p, %p, %p, %i, %i, %i, %i)\n", e, obj, context, surface, off_x, off_y, mapped, level); 819 RD(" { evas_render_mapped(%p, %p, %p, %p, %i, %i, %i, %i)\n", e, obj, context, surface, off_x, off_y, mapped, level);
819 if (mapped) 820 if (mapped)
@@ -858,7 +859,6 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
858 RD(" }\n"); 859 RD(" }\n");
859 return clean_them; 860 return clean_them;
860 } 861 }
861
862 evas_object_map_update(obj, off_x, off_y, sw, sh, sw, sh); 862 evas_object_map_update(obj, off_x, off_y, sw, sh, sw, sh);
863 863
864 if (obj->cur.map->surface) 864 if (obj->cur.map->surface)
@@ -1089,35 +1089,10 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
1089 } 1089 }
1090 else 1090 else
1091 { 1091 {
1092 if (!obj->cur.map) 1092 RDI(level);
1093 {
1094 int x, y, w, h;
1095
1096 RDI(level);
1097
1098 x = obj->cur.cache.clip.x + off_x;
1099 y = obj->cur.cache.clip.y + off_y;
1100 w = obj->cur.cache.clip.w;
1101 h = obj->cur.cache.clip.h;
1102
1103 if (obj->cur.clipper)
1104 {
1105 if (_evas_render_has_map(obj))
1106 evas_object_clip_recalc(obj);
1107
1108 RD(" clipper: %i %i %ix%i\n",
1109 obj->cur.clipper->cur.cache.clip.x + off_x,
1110 obj->cur.clipper->cur.cache.clip.y + off_y,
1111 obj->cur.clipper->cur.cache.clip.w,
1112 obj->cur.clipper->cur.cache.clip.h);
1113
1114 RECTS_CLIP_TO_RECT(x, y, w, h,
1115 obj->cur.clipper->cur.cache.clip.x + off_x,
1116 obj->cur.clipper->cur.cache.clip.y + off_y,
1117 obj->cur.clipper->cur.cache.clip.w,
1118 obj->cur.clipper->cur.cache.clip.h);
1119 }
1120 1093
1094 if (obj->cur.clipper)
1095 {
1121 RD(" clip: %i %i %ix%i [%i %i %ix%i]\n", 1096 RD(" clip: %i %i %ix%i [%i %i %ix%i]\n",
1122 obj->cur.cache.clip.x + off_x, 1097 obj->cur.cache.clip.x + off_x,
1123 obj->cur.cache.clip.y + off_y, 1098 obj->cur.cache.clip.y + off_y,
@@ -1127,25 +1102,34 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
1127 obj->cur.geometry.y + off_y, 1102 obj->cur.geometry.y + off_y,
1128 obj->cur.geometry.w, 1103 obj->cur.geometry.w,
1129 obj->cur.geometry.h); 1104 obj->cur.geometry.h);
1105
1106 RD(" clipper: %i %i %ix%i\n",
1107 obj->cur.clipper->cur.cache.clip.x + off_x,
1108 obj->cur.clipper->cur.cache.clip.y + off_y,
1109 obj->cur.clipper->cur.cache.clip.w,
1110 obj->cur.clipper->cur.cache.clip.h);
1111
1112 int x, y, w, h;
1113
1114 if (_evas_render_has_map(obj))
1115 evas_object_clip_recalc(obj);
1116
1117 x = obj->cur.cache.clip.x + off_x;
1118 y = obj->cur.cache.clip.y + off_y;
1119 w = obj->cur.cache.clip.w;
1120 h = obj->cur.cache.clip.h;
1121
1122 RECTS_CLIP_TO_RECT(x, y, w, h,
1123 obj->cur.clipper->cur.cache.clip.x + off_x,
1124 obj->cur.clipper->cur.cache.clip.y + off_y,
1125 obj->cur.clipper->cur.cache.clip.w,
1126 obj->cur.clipper->cur.cache.clip.h);
1127
1130 e->engine.func->context_clip_set(e->engine.data.output, 1128 e->engine.func->context_clip_set(e->engine.data.output,
1131 ctx, x, y, w, h); 1129 ctx, x, y, w, h);
1132 } 1130 }
1133 else
1134 {
1135 RDI(level);
1136 RD(" noclip\n");
1137 }
1138 obj->func->render(obj, e->engine.data.output, ctx, 1131 obj->func->render(obj, e->engine.data.output, ctx,
1139 surface, off_x, off_y); 1132 surface, off_x, off_y);
1140 /*
1141 obj->layer->evas->engine.func->context_color_set(e->engine.data.output,
1142 ctx,
1143 0, 30, 0, 30);
1144 obj->layer->evas->engine.func->rectangle_draw(e->engine.data.output,
1145 ctx,
1146 surface,
1147 0, 0, 9999, 9999);
1148 */
1149 } 1133 }
1150 e->engine.func->context_free(e->engine.data.output, ctx); 1134 e->engine.func->context_free(e->engine.data.output, ctx);
1151 } 1135 }