continue;
}
- Tvg_Paint* shape = tvg_shape_new();
-
const float *data = node->mPath.ptPtr;
if (!data) continue;
+ Tvg_Paint* shape = tvg_shape_new();
+
//0: Path
uint32_t cmdCnt = node->mPath.elmCount;
uint32_t ptsCnt = node->mPath.ptCount * sizeof(float) / sizeof(Tvg_Point);
return mtarget;
}
-static Eina_Bool
+static void
_update_vg_tree(Tvg_Paint *root, const LOTLayerNode *layer, int depth EINA_UNUSED)
{
- if (!layer->mVisible) return EINA_FALSE;
-
Tvg_Paint *ptree = NULL;
//Note: We assume that if matte is valid, next layer must be a matte source.
printf("[layer %03d] matte:%d\n", i, matte_mode);
#endif
- //Source Layer
- Tvg_Paint *ctree = tvg_scene_new();
- Eina_Bool hastree = _update_vg_tree(ctree, clayer, depth+1);
-
- if (matte_mode == TVG_COMPOSITE_METHOD_NONE)
- {
- tvg_scene_push(root, ctree);
- }
- else if (hastree == EINA_TRUE)
+ if ((clayer->mLayerList.size > 0 || clayer->mNodeList.size > 0) && clayer->mVisible)
{
- tvg_paint_set_composite_method(ptree, ctree, matte_mode);
- mtarget = ctree;
+ //Source Layer
+ Tvg_Paint *ctree = tvg_scene_new();
+ _update_vg_tree(ctree, clayer, depth+1);
+
+ if (matte_mode == TVG_COMPOSITE_METHOD_NONE)
+ {
+ tvg_scene_push(root, ctree);
+ }
+ else
+ {
+ tvg_paint_set_composite_method(ptree, ctree, matte_mode);
+ mtarget = ctree;
+ }
+
+ ptree = ctree;
}
//Remap Matte Mode
break;
}
- ptree = ctree;
-
if (clayer->mMaskList.size > 0)
{
mlayer = clayer;
- if (!mtarget) mtarget = ctree;
+ if (!mtarget) mtarget = ptree;
}
else
mtarget = NULL;
//Construct drawable nodes.
if (layer->mNodeList.size > 0)
_construct_drawable_nodes(root, layer, depth);
-
- return layer->mLayerList.size || layer->mNodeList.size;
}
#endif
cd->master_scene = EINA_TRUE;
tvg_scene_clear(cd->scene, EINA_TRUE);
+ if (!tree->mVisible) return EINA_TRUE;
_update_vg_tree(cd->scene, tree, 1);
return EINA_TRUE;