X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fdisplay%2Fnr-arena-group.cpp;h=38d37c233421cfede8c4bea486028a6ad77a620e;hb=a4061ace085b366132ac4d03771534610fd1c7f2;hp=fcce681a87f5643dcd0bef856c9c1023d1087b97;hpb=208e5a33acc4a8ad9d8c0488f047c260346f1258;p=inkscape.git diff --git a/src/display/nr-arena-group.cpp b/src/display/nr-arena-group.cpp index fcce681a8..38d37c233 100644 --- a/src/display/nr-arena-group.cpp +++ b/src/display/nr-arena-group.cpp @@ -20,8 +20,9 @@ #include "sp-filter.h" #include "sp-filter-reference.h" #include "sp-gaussian-blur.h" -#include "sp-feblend.h" +#include "filters/blend.h" #include "display/nr-filter-blend.h" +#include "helper/geom.h" static void nr_arena_group_class_init (NRArenaGroupClass *klass); static void nr_arena_group_init (NRArenaGroup *group); @@ -35,7 +36,7 @@ static void nr_arena_group_set_child_position (NRArenaItem *item, NRArenaItem *c static unsigned int nr_arena_group_update (NRArenaItem *item, NRRectL *area, NRGC *gc, unsigned int state, unsigned int reset); static unsigned int nr_arena_group_render (cairo_t *ct, NRArenaItem *item, NRRectL *area, NRPixBlock *pb, unsigned int flags); static unsigned int nr_arena_group_clip (NRArenaItem *item, NRRectL *area, NRPixBlock *pb); -static NRArenaItem *nr_arena_group_pick (NRArenaItem *item, NR::Point p, double delta, unsigned int sticky); +static NRArenaItem *nr_arena_group_pick (NRArenaItem *item, Geom::Point p, double delta, unsigned int sticky); static NRArenaItemClass *parent_class; @@ -85,7 +86,7 @@ nr_arena_group_init (NRArenaGroup *group) group->children = NULL; group->last = NULL; group->style = NULL; - nr_matrix_set_identity (&group->child_transform); + group->child_transform.setIdentity(); } static NRArenaItem * @@ -171,7 +172,7 @@ nr_arena_group_update (NRArenaItem *item, NRRectL *area, NRGC *gc, unsigned int for (NRArenaItem *child = group->children; child != NULL; child = child->next) { NRGC cgc(gc); - nr_matrix_multiply (&cgc.transform, &group->child_transform, &gc->transform); + cgc.transform = group->child_transform * gc->transform; newstate = nr_arena_item_invoke_update (child, area, &cgc, state, reset); beststate = beststate & newstate; } @@ -179,7 +180,8 @@ nr_arena_group_update (NRArenaItem *item, NRRectL *area, NRGC *gc, unsigned int if (beststate & NR_ARENA_ITEM_STATE_BBOX) { nr_rect_l_set_empty (&item->bbox); for (NRArenaItem *child = group->children; child != NULL; child = child->next) { - nr_rect_l_union (&item->bbox, &item->bbox, &child->bbox); + if (child->visible) + nr_rect_l_union (&item->bbox, &item->bbox, &child->drawbox); } } @@ -199,7 +201,7 @@ void nr_arena_group_set_style (NRArenaGroup *group, SPStyle *style) if (style->filter.set && style->getFilter()) { if (!group->filter) { int primitives = sp_filter_primitive_count(SP_FILTER(style->getFilter())); - group->filter = new NR::Filter(primitives); + group->filter = new Inkscape::Filters::Filter(primitives); } sp_filter_build_renderer(SP_FILTER(style->getFilter()), group->filter); } else { @@ -247,7 +249,7 @@ nr_arena_group_clip (NRArenaItem *item, NRRectL *area, NRPixBlock *pb) } static NRArenaItem * -nr_arena_group_pick (NRArenaItem *item, NR::Point p, double delta, unsigned int sticky) +nr_arena_group_pick (NRArenaItem *item, Geom::Point p, double delta, unsigned int sticky) { NRArenaGroup *group = NR_ARENA_GROUP (item); @@ -269,17 +271,17 @@ nr_arena_group_set_transparent (NRArenaGroup *group, unsigned int transparent) group->transparent = transparent; } -void nr_arena_group_set_child_transform(NRArenaGroup *group, NR::Matrix const &t) +void nr_arena_group_set_child_transform(NRArenaGroup *group, Geom::Matrix const &t) { - NRMatrix nt(t); + Geom::Matrix nt(t); nr_arena_group_set_child_transform(group, &nt); } -void nr_arena_group_set_child_transform(NRArenaGroup *group, NRMatrix const *t) +void nr_arena_group_set_child_transform(NRArenaGroup *group, Geom::Matrix const *t) { - if (!t) t = &NR_MATRIX_IDENTITY; + if (!t) t = &GEOM_MATRIX_IDENTITY; - if (!NR_MATRIX_DF_TEST_CLOSE (t, &group->child_transform, NR_EPSILON)) { + 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);