NRArenaItem * sp_mask_show (SPMask *mask, NRArena *arena, unsigned int key) { NRArenaItem *ai, *ac; SPObject *child; g_return_val_if_fail (mask != NULL, NULL); g_return_val_if_fail (SP_IS_MASK (mask), NULL); g_return_val_if_fail (arena != NULL, NULL); g_return_val_if_fail (NR_IS_ARENA (arena), NULL); ai = nr_arena_item_new (arena, NR_TYPE_ARENA_GROUP); mask->display = sp_mask_view_new_prepend (mask->display, key, ai); for (child = SP_OBJECTGROUP (mask)->children; child != NULL; child = child->next) { if (SP_IS_ITEM (child)) { ac = sp_item_invoke_show (SP_ITEM (child), arena, key, SP_ITEM_REFERENCE_FLAGS); if (ac) { /* The order is not important in mask */ nr_arena_item_add_child (ai, ac, NULL); nr_arena_item_unref (ac); } } } if (mask->maskContentUnits == SP_CONTENT_UNITS_OBJECTBOUNDINGBOX) { NRMatrixF t; nr_matrix_f_set_scale (&t, mask->display->bbox.x1 - mask->display->bbox.x0, mask->display->bbox.y1 - mask->display->bbox.y0); t.c[4] = mask->display->bbox.x0; t.c[5] = mask->display->bbox.y0; nr_arena_group_set_child_transform (NR_ARENA_GROUP (ai), &t); } return ai; }
NRArenaItem * sp_clippath_show(SPClipPath *cp, NRArena *arena, unsigned int key) { g_return_val_if_fail(cp != NULL, NULL); g_return_val_if_fail(SP_IS_CLIPPATH(cp), NULL); g_return_val_if_fail(arena != NULL, NULL); g_return_val_if_fail(NR_IS_ARENA(arena), NULL); NRArenaItem *ai = NRArenaGroup::create(arena); cp->display = sp_clippath_view_new_prepend(cp->display, key, ai); for (SPObject *child = sp_object_first_child(SP_OBJECT(cp)) ; child != NULL; child = SP_OBJECT_NEXT(child)) { if (SP_IS_ITEM(child)) { NRArenaItem *ac = sp_item_invoke_show(SP_ITEM(child), arena, key, SP_ITEM_REFERENCE_FLAGS); if (ac) { /* The order is not important in clippath */ nr_arena_item_add_child(ai, ac, NULL); } } } if (cp->clipPathUnits == SP_CONTENT_UNITS_OBJECTBOUNDINGBOX) { Geom::Matrix t(Geom::Scale(cp->display->bbox.x1 - cp->display->bbox.x0, cp->display->bbox.y1 - cp->display->bbox.y0)); t[4] = cp->display->bbox.x0; t[5] = cp->display->bbox.y0; nr_arena_group_set_child_transform(NR_ARENA_GROUP(ai), &t); } return ai; }