summaryrefslogtreecommitdiffstats
path: root/src/display/nr-arena-item.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2008-03-31 02:44:19 +0000
committermental <mental@users.sourceforge.net>2008-03-31 02:44:19 +0000
commit14006d002cee91d911a92814af4e7f8efe3e5b71 (patch)
tree1ad343472aff39aa8cd982c69d93fc5ce6adb1e4 /src/display/nr-arena-item.cpp
parentcmake: add finding script for garbage collector! (diff)
downloadinkscape-14006d002cee91d911a92814af4e7f8efe3e5b71.tar.gz
inkscape-14006d002cee91d911a92814af4e7f8efe3e5b71.zip
lay groundwork for non-filter view mode
(bzr r5265)
Diffstat (limited to 'src/display/nr-arena-item.cpp')
-rw-r--r--src/display/nr-arena-item.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/display/nr-arena-item.cpp b/src/display/nr-arena-item.cpp
index f04146f20..195dba2f0 100644
--- a/src/display/nr-arena-item.cpp
+++ b/src/display/nr-arena-item.cpp
@@ -207,6 +207,7 @@ nr_arena_item_invoke_update (NRArenaItem *item, NRRectL *area, NRGC *gc,
unsigned int state, unsigned int reset)
{
NRGC childgc (gc);
+ bool filter = (item->arena->rendermode == Inkscape::RENDERMODE_NORMAL);
nr_return_val_if_fail (item != NULL, NR_ARENA_ITEM_STATE_INVALID);
nr_return_val_if_fail (NR_IS_ARENA_ITEM (item),
@@ -259,7 +260,7 @@ nr_arena_item_invoke_update (NRArenaItem *item, NRRectL *area, NRGC *gc,
if (item->state & NR_ARENA_ITEM_STATE_INVALID)
return item->state;
/* Enlarge the bounding box to contain filter effects */
- if (item->filter) {
+ if (item->filter && filter) {
item->filter->bbox_enlarge (item->bbox);
}
// fixme: to fix the display glitches, in outline mode bbox must be a combination of
@@ -300,7 +301,8 @@ unsigned int
nr_arena_item_invoke_render (cairo_t *ct, NRArenaItem *item, NRRectL const *area,
NRPixBlock *pb, unsigned int flags)
{
- bool outline = (item->arena->rendermode == RENDERMODE_OUTLINE);
+ bool outline = (item->arena->rendermode == Inkscape::RENDERMODE_OUTLINE);
+ bool filter = (item->arena->rendermode == Inkscape::RENDERMODE_NORMAL);
nr_return_val_if_fail (item != NULL, NR_ARENA_ITEM_STATE_INVALID);
nr_return_val_if_fail (NR_IS_ARENA_ITEM (item),
@@ -321,7 +323,7 @@ nr_arena_item_invoke_render (cairo_t *ct, NRArenaItem *item, NRRectL const *area
nr_rect_l_intersect (&carea, area, &item->bbox);
if (nr_rect_l_test_empty (&carea))
return item->state | NR_ARENA_ITEM_STATE_RENDER;
- if (item->filter && !outline) {
+ if (item->filter && filter) {
item->filter->area_enlarge (carea, item->ctm);
nr_rect_l_intersect (&carea, &carea, &item->bbox);
}
@@ -400,7 +402,7 @@ nr_arena_item_invoke_render (cairo_t *ct, NRArenaItem *item, NRRectL const *area
/* Determine, whether we need temporary buffer */
if (item->clip || item->mask
|| ((item->opacity != 255) && !item->render_opacity)
- || (item->filter) || item->background_new
+ || (item->filter && filter) || item->background_new
|| (item->parent && item->parent->background_pb)) {
/* Setup and render item buffer */
@@ -423,7 +425,7 @@ nr_arena_item_invoke_render (cairo_t *ct, NRArenaItem *item, NRRectL const *area
}
ipb.visible_area = pb->visible_area;
- if (item->filter) {
+ if (item->filter && filter) {
item->filter->area_enlarge (ipb.visible_area, item->ctm);
}
@@ -439,7 +441,7 @@ nr_arena_item_invoke_render (cairo_t *ct, NRArenaItem *item, NRRectL const *area
ipb.empty = FALSE;
/* Run filtering, if a filter is set for this object */
- if (item->filter) {
+ if (item->filter && filter) {
item->filter->render (item, &ipb);
}