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); }
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); } }
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); } }