예제 #1
0
static void
nr_arena_group_set_child_position (NRArenaItem *item, NRArenaItem *child, NRArenaItem *ref)
{
	NRArenaGroup *group;

	group = NR_ARENA_GROUP (item);

	nr_arena_item_ref (child);

	if (child == group->last) group->last = child->prev;

	if (child->prev) {
		nr_arena_item_detach_unref (item, child);
	} else {
		group->children = nr_arena_item_detach_unref (item, child);
	}

	if (!ref) {
		group->children = nr_arena_item_attach_ref (item, child, NULL, group->children);
	} else {
		ref->next = nr_arena_item_attach_ref (item, child, ref, ref->next);
	}

	if (ref == group->last) group->last = child;

	nr_arena_item_unref (child);

	nr_arena_item_request_render (child);
}
예제 #2
0
void nr_arena_group_set_child_transform(NRArenaGroup *group, Geom::Matrix const *t)
{
    if (!t) t = &GEOM_MATRIX_IDENTITY;

    if (!Geom::matrix_equalp(*t, group->child_transform, NR_EPSILON)) {
        nr_arena_item_request_render (NR_ARENA_ITEM (group));
        group->child_transform = *t;
        nr_arena_item_request_update (NR_ARENA_ITEM (group), NR_ARENA_ITEM_STATE_ALL, TRUE);
    }
}
예제 #3
0
void
nr_arena_group_set_child_transform (NRArenaGroup *group, NRMatrixF *t)
{
	if (!t) t = &NR_MATRIX_F_IDENTITY;

	if (!NR_MATRIX_DF_TEST_CLOSE (t, &group->child_transform, NR_EPSILON_F)) {
		nr_arena_item_request_render (NR_ARENA_ITEM (group));
		group->child_transform = *t;
		nr_arena_item_request_update (NR_ARENA_ITEM (group), NR_ARENA_ITEM_STATE_ALL, TRUE);
	}
}