void compositor_init_untransform(GF_Compositor *compositor, GF_Node *node) { Untransform tr; if (Untransform_GetNode(node, &tr)) { UntransformStack *stack; GF_SAFEALLOC(stack, UntransformStack); gf_node_set_private(node, stack); gf_node_set_callback_function(node, TraverseUntransform); stack->untr = tr; gf_node_proto_set_grouping(node); } }
void compositor_init_depth_group(GF_Compositor *compositor, GF_Node *node) { DepthGroup dg; if (DepthGroup_GetNode(node, &dg)) { DepthGroupStack *stack; GF_SAFEALLOC(stack, DepthGroupStack); gf_node_set_private(node, stack); gf_node_set_callback_function(node, TraverseDepthGroup); stack->dg = dg; gf_node_proto_set_grouping(node); } else GF_LOG(GF_LOG_DEBUG, GF_LOG_COMPOSE, ("[Compositor2D] Unable to initialize depth group \n")); }
void compositor_init_offscreen_group(GF_Compositor *compositor, GF_Node *node) { OffscreenGroup og; if (OffscreenGroup_GetNode(node, &og)) { OffscreenGroupStack *stack; GF_SAFEALLOC(stack, OffscreenGroupStack); gf_node_set_private(node, stack); gf_node_set_callback_function(node, TraverseOffscreenGroup); stack->og = og; if (og.offscreen) stack->flags |= GROUP_IS_CACHED; gf_node_proto_set_grouping(node); } }
void compositor_init_style_group(GF_Compositor *compositor, GF_Node *node) { StyleGroup sg; if (StyleGroup_GetNode(node, &sg)) { StyleGroupStack *stack; GF_SAFEALLOC(stack, StyleGroupStack); gf_node_set_private(node, stack); gf_node_set_callback_function(node, TraverseStyleGroup); stack->sg = sg; gf_node_proto_set_grouping(node); } else { GF_LOG(GF_LOG_DEBUG, GF_LOG_COMPOSE, ("[Compositor2D] Unable to initialize style group\n")); } }
void compositor_init_plane_clipper(GF_Compositor *compositor, GF_Node *node) { PlaneClipper pc; if (PlaneClipper_GetNode(node, &pc)) { PlaneClipperStack *stack; GF_SAFEALLOC(stack, PlaneClipperStack); //SetupGroupingNode(stack, compositor->compositor, node, & pc.children); gf_node_set_private(node, stack); gf_node_set_callback_function(node, TraversePlaneClipper); /*we're a grouping node, force bounds rebuild as soon as loaded*/ gf_node_dirty_set(node, GF_SG_CHILD_DIRTY, 0); stack->pc = pc; gf_node_proto_set_grouping(node); } }