diff options
author | JunsuChoi <jsuya.choi@samsung.com> | 2020-02-25 11:54:57 +0900 |
---|---|---|
committer | Hermet Park <hermetpark@gmail.com> | 2020-02-25 11:55:14 +0900 |
commit | 6de0ed7b5d221506756bde36888e7c4c4f69c9f3 (patch) | |
tree | 535a1249692931edfecd00588006376e31b63c6d | |
parent | ad001028424f6f4036c1ba244b3c777c1650b14b (diff) | |
download | efl-6de0ed7b5d221506756bde36888e7c4c4f69c9f3.tar.gz |
vg_common_json: Fix to duplication of mask and matte.
Summary:
There is a case that uses a mask and a mat at the same time.
One of them did not apply. This patch modifies two attributes to be parent-child.
Test Plan: N/A
Reviewers: Hermet, smohanty, kimcinoo
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11399
-rw-r--r-- | src/static_libs/vg_common/vg_common_json.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/static_libs/vg_common/vg_common_json.c b/src/static_libs/vg_common/vg_common_json.c index 2092b852a5..f7b3e9d2f5 100644 --- a/src/static_libs/vg_common/vg_common_json.c +++ b/src/static_libs/vg_common/vg_common_json.c @@ -311,7 +311,7 @@ _construct_mask_nodes(Efl_Canvas_Vg_Container *parent, LOTMask *mask, int depth 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; @@ -329,7 +329,7 @@ _construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int #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 @@ -356,7 +356,7 @@ _construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int #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); @@ -381,6 +381,7 @@ _construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int efl_canvas_vg_node_comp_method_set(mtarget, msource, mask_mode); mtarget = msource; } + return mtarget; } static void @@ -432,7 +433,7 @@ _update_vg_tree(Efl_Canvas_Vg_Container *root, const LOTLayerNode *layer, int de } #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); @@ -448,6 +449,8 @@ _update_vg_tree(Efl_Canvas_Vg_Container *root, const LOTLayerNode *layer, int de mlayer = clayer; if (!mtarget) mtarget = ctree; } + else + mtarget = NULL; ptree = ctree; @@ -475,15 +478,16 @@ _update_vg_tree(Efl_Canvas_Vg_Container *root, const LOTLayerNode *layer, int de 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 |