static void disk2d_check_changes(GF_Node *node, Drawable *stack, GF_TraverseState *tr_state) { if (gf_node_dirty_get(node)) { Fixed a = ((X_Disk2D *) node)->outerRadius * 2; drawable_reset_path(stack); gf_path_add_ellipse(stack->path, 0, 0, a, a); a = ((X_Disk2D *) node)->innerRadius * 2; if (a) gf_path_add_ellipse(stack->path, 0, 0, a, a); gf_node_dirty_clear(node, 0); drawable_mark_modified(stack, tr_state); } }
static void svg_sani_render_ellipse(GF_Node *node, void *rs, Bool is_destroy) { SVG_SANI_ellipseElement *ellipse = (SVG_SANI_ellipseElement *)node; Drawable *cs = (Drawable *)gf_node_get_private(node); RenderEffect2D *eff = (RenderEffect2D *)rs; if (is_destroy) { DestroyDrawableNode(node); return; } if (eff->traversing_mode==TRAVERSE_DRAW) { drawable_draw(eff); return; } else if (eff->traversing_mode==TRAVERSE_PICK) { drawable_pick(eff); return; } svg_sani_render_base(node, (RenderEffect2D *)rs); if (gf_node_dirty_get(node) & GF_SG_SVG_GEOMETRY_DIRTY) { drawable_reset_path(cs); gf_path_add_ellipse(cs->path, ellipse->cx.value, ellipse->cy.value, 2*ellipse->rx.value, 2*ellipse->ry.value); gf_node_dirty_clear(node, GF_SG_SVG_GEOMETRY_DIRTY); cs->flags |= DRAWABLE_HAS_CHANGED; } svg_sani_DrawablePostRender(cs, (SVG_SANI_TransformableElement *)ellipse, (RenderEffect2D *)rs, 0, 0); }
static void svg_ellipse_rebuild(GF_Node *node, Drawable *stack, SVGAllAttributes *atts) { drawable_reset_path(stack); gf_path_add_ellipse(stack->path, (atts->cx ? atts->cx->value : 0), (atts->cy ? atts->cy->value : 0), (atts->rx ? 2*atts->rx->value : 0), (atts->ry ? 2*atts->ry->value : 0)); }
static void ellipse_check_changes(GF_Node *node, Drawable *stack, GF_TraverseState *tr_state) { if (gf_node_dirty_get(node)) { drawable_reset_path(stack); gf_path_add_ellipse(stack->path, 0, 0, ((M_Ellipse *) node)->radius.x*2, ((M_Ellipse *) node)->radius.y*2); gf_node_dirty_clear(node, 0); drawable_mark_modified(stack, tr_state); } }
static void circle_check_changes(GF_Node *node, Drawable *stack, GF_TraverseState *tr_state) { if (gf_node_dirty_get(node)) { Fixed a = ((M_Circle *) node)->radius * 2; drawable_reset_path(stack); gf_path_add_ellipse(stack->path, 0, 0, a, a); gf_node_dirty_clear(node, 0); drawable_mark_modified(stack, tr_state); } }
static void svg_circle_rebuild(GF_Node *node, Drawable *stack, SVGAllAttributes *atts) { Fixed r = 2*(atts->r ? atts->r->value : 0); drawable_reset_path(stack); gf_path_add_ellipse(stack->path, (atts->cx ? atts->cx->value : 0), (atts->cy ? atts->cy->value : 0), r, r); }