efl_gfx_color_set(shape, r, g, b, a);
}
-static void
+static Efl_Canvas_Vg_Container*
_construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int mask_cnt, int depth)
{
char *key = NULL;
#if DEBUG
for (int i = 0; i < depth; i++) printf(" ");
- printf("%s (%p), mask => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mtarget);
+ printf("%s (%p), base mask => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mtarget);
depth++;
#endif
#if DEBUG
for (int i = 0; i < depth; i++) printf(" ");
- printf("%s (%p), mask:%d => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mask->mMode, mtarget);
+ printf("%s (%p), real mask:%d => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mask->mMode, mtarget);
#endif
_construct_mask_nodes(msource, mask, depth + 1);
efl_canvas_vg_node_comp_method_set(mtarget, msource, mask_mode);
mtarget = msource;
}
+ return mtarget;
}
static void
}
#if DEBUG
for (int i = 0; i < depth; i++) printf(" ");
- printf("%s (%p) matte:%d => %p\n", efl_class_name_get(efl_class_get(ctree)), ctree, matte_mode, ptree);
+ printf("%s (%p) matte:%d => %p %s\n", efl_class_name_get(efl_class_get(ctree)), ctree, matte_mode, ptree, clayer->keypath);
#endif
_update_vg_tree(ctree, clayer, depth+1);
mlayer = clayer;
if (!mtarget) mtarget = ctree;
}
+ else
+ mtarget = NULL;
ptree = ctree;
matte_mode = 0;
break;
}
+
+ //Construct node that have mask.
+ if (mlayer && mtarget)
+ ptree = _construct_masks(mtarget, mlayer->mMaskList.ptr, mlayer->mMaskList.size, depth + 1);
}
//Construct drawable nodes.
if (layer->mNodeList.size > 0)
_construct_drawable_nodes(root, layer, depth);
- //Construct node that have mask.
- if (mlayer)
- _construct_masks(mtarget, mlayer->mMaskList.ptr, mlayer->mMaskList.size, depth);
}
#endif