summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2011-08-25 17:39:31 +0000
committerKrzysztof Kosinski <tweenk.pl@gmail.com>2011-08-25 17:39:31 +0000
commitabe953dc63948d78532c0541a56e664dc386810a (patch)
tree869e86a76f9c120e71e786f8664306730565e237 /src
parentFilter background rendering now matches the SVG specification. (diff)
downloadinkscape-abe953dc63948d78532c0541a56e664dc386810a.tar.gz
inkscape-abe953dc63948d78532c0541a56e664dc386810a.zip
Remove duplicate bbox data from DrawingShape
(bzr r10347.1.38)
Diffstat (limited to 'src')
-rw-r--r--src/display/drawing-item.h6
-rw-r--r--src/display/drawing-shape.cpp11
-rw-r--r--src/display/drawing-shape.h2
-rw-r--r--src/sp-shape.cpp8
4 files changed, 5 insertions, 22 deletions
diff --git a/src/display/drawing-item.h b/src/display/drawing-item.h
index 7a3b8047b..424616427 100644
--- a/src/display/drawing-item.h
+++ b/src/display/drawing-item.h
@@ -161,9 +161,9 @@ protected:
Geom::Affine *_transform; ///< Incremental transform from parent to this item's coords
Geom::Affine _ctm; ///< Total transform from item coords to display coords
- Geom::OptIntRect _bbox; ///< Bounding box in display (pixel) coords
- Geom::OptIntRect _drawbox; ///< Bounding box enlarged by filters, shrinked by clips and masks
- Geom::OptRect _item_bbox; ///< Bounding box in item coordinates
+ Geom::OptIntRect _bbox; ///< Bounding box in display (pixel) coords including stroke
+ Geom::OptIntRect _drawbox; ///< Full visual bounding box - enlarged by filters, shrunk by clips and masks
+ Geom::OptRect _item_bbox; ///< Geometric bounding box in item coordinates
DrawingItem *_clip;
DrawingItem *_mask;
diff --git a/src/display/drawing-shape.cpp b/src/display/drawing-shape.cpp
index cd7b9150d..ac0ff2ccb 100644
--- a/src/display/drawing-shape.cpp
+++ b/src/display/drawing-shape.cpp
@@ -72,13 +72,6 @@ DrawingShape::setStyle(SPStyle *style)
_nrstyle.set(style);
}
-void
-DrawingShape::setPaintBox(Geom::Rect const &box)
-{
- _paintbox = box;
- _markForUpdate(STATE_ALL, false);
-}
-
unsigned
DrawingShape::_updateItem(Geom::IntRect const &area, UpdateContext const &ctx, unsigned flags, unsigned reset)
{
@@ -187,8 +180,8 @@ DrawingShape::_renderItem(DrawingContext &ct, Geom::IntRect const &area, unsigne
// update fill and stroke paints.
// this cannot be done during nr_arena_shape_update, because we need a Cairo context
// to render svg:pattern
- has_fill = _nrstyle.prepareFill(ct, _paintbox);
- has_stroke = _nrstyle.prepareStroke(ct, _paintbox);
+ has_fill = _nrstyle.prepareFill(ct, _item_bbox);
+ has_stroke = _nrstyle.prepareStroke(ct, _item_bbox);
has_stroke &= (_nrstyle.stroke_width != 0);
if (has_fill || has_stroke) {
diff --git a/src/display/drawing-shape.h b/src/display/drawing-shape.h
index 122130590..27bd7fbba 100644
--- a/src/display/drawing-shape.h
+++ b/src/display/drawing-shape.h
@@ -29,7 +29,6 @@ public:
void setPath(SPCurve *curve);
void setStyle(SPStyle *style);
- void setPaintBox(Geom::Rect const &box);
protected:
virtual unsigned _updateItem(Geom::IntRect const &area, UpdateContext const &ctx,
@@ -44,7 +43,6 @@ protected:
SPStyle *_style;
NRStyle _nrstyle;
- Geom::OptRect _paintbox;
DrawingItem *_last_pick;
unsigned _repick_after;
};
diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp
index eff0665af..0d1ac029e 100644
--- a/src/sp-shape.cpp
+++ b/src/sp-shape.cpp
@@ -256,15 +256,11 @@ void SPShape::sp_shape_update(SPObject *object, SPCtx *ctx, unsigned int flags)
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_PARENT_MODIFIED_FLAG)) {
/* This is suboptimal, because changing parent style schedules recalculation */
/* But on the other hand - how can we know that parent does not tie style and transform */
- Geom::OptRect paintbox = SP_ITEM(object)->getBounds(Geom::identity(), SPItem::GEOMETRIC_BBOX);
for (SPItemView *v = shape->display; v != NULL; v = v->next) {
Inkscape::DrawingShape *sh = dynamic_cast<Inkscape::DrawingShape *>(v->arenaitem);
if (flags & SP_OBJECT_MODIFIED_FLAG) {
sh->setPath(shape->curve);
}
- if (paintbox) {
- sh->setPaintBox(*paintbox);
- }
}
}
@@ -860,10 +856,6 @@ Inkscape::DrawingItem * SPShape::sp_shape_show(SPItem *item, Inkscape::Drawing &
Inkscape::DrawingShape *s = new Inkscape::DrawingShape(drawing);
s->setStyle(object->style);
s->setPath(shape->curve);
- Geom::OptRect paintbox = item->getBounds(Geom::identity());
- if (paintbox) {
- s->setPaintBox(*paintbox);
- }
/* This stanza checks that an object's marker style agrees with
* the marker objects it has allocated. sp_shape_set_marker ensures