From 30884b9e814d7baaa2299803e8cb76cf203ca084 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Wed, 4 Aug 2010 05:45:58 +0200 Subject: Wholesale cruft removal part 1 (bzr r9508.1.44) --- src/marker.cpp | 6 ------ 1 file changed, 6 deletions(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index e4c2e0c30..6917c0b71 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -18,12 +18,6 @@ #include #include "config.h" - -#include "libnr/nr-matrix-fns.h" -#include "libnr/nr-matrix-ops.h" -#include "libnr/nr-matrix-translate-ops.h" -#include "libnr/nr-scale-matrix-ops.h" -#include "libnr/nr-translate-matrix-ops.h" #include "libnr/nr-convert2geom.h" #include <2geom/matrix.h> #include "svg/svg.h" -- cgit v1.2.3 From 2eceacbf55b5796e4449fb3efc85cffdf5b6303c Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Thu, 12 Aug 2010 00:40:33 +0200 Subject: Fix rendering failures caused by markers with markerUnits="strokeWidth" on shapes with zero stroke width (bzr r9508.1.56) --- src/marker.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index 6917c0b71..f89dd2bc0 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -614,6 +614,13 @@ sp_marker_show_instance ( SPMarker *marker, NRArenaItem *parent, unsigned int key, unsigned int pos, Geom::Matrix const &base, float linewidth) { + // do not show marker if linewidth == 0 and markerUnits == strokeWidth + // otherwise Cairo will fail to render anything on the tile + // that contains the "degenerate" marker + if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH && linewidth == 0) { + return NULL; + } + for (SPMarkerView *v = marker->views; v != NULL; v = v->next) { if (v->key == key) { if (pos >= v->items.size()) { -- cgit v1.2.3 From 3638efba5bec8a6afc9211aa6bbe289767d20b38 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Fri, 3 Jun 2011 19:45:55 -0700 Subject: Removed outdated/unsafe SP_DOCUMENT_DEFS macro and reduced usage of SP_ROOT() gtk type function/macro. (bzr r10254) --- src/marker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index faffadd58..5dd23fb1e 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -713,7 +713,7 @@ sp_marker_view_remove (SPMarker *marker, SPMarkerView *view, unsigned int destro const gchar *generate_marker(GSList *reprs, Geom::Rect bounds, SPDocument *document, Geom::Affine /*transform*/, Geom::Affine move) { Inkscape::XML::Document *xml_doc = document->getReprDoc(); - Inkscape::XML::Node *defsrepr = SP_DOCUMENT_DEFS(document)->getRepr(); + Inkscape::XML::Node *defsrepr = document->getDefs()->getRepr(); Inkscape::XML::Node *repr = xml_doc->createElement("svg:marker"); -- cgit v1.2.3 From ab143333746e25648b253f13c0539adff089b1b6 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Fri, 24 Jun 2011 00:22:07 +0200 Subject: Remove more of libnr (bzr r10347.1.2) --- src/marker.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index e82d3d952..2354d686c 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -19,6 +19,7 @@ #include "libnr/nr-convert2geom.h" #include <2geom/affine.h> +#include <2geom/transforms.h> #include "svg/svg.h" #include "display/nr-arena-group.h" #include "xml/repr.h" -- cgit v1.2.3 From 2be2cf32db0668dc64512a98f6c2394152bd10cc Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Sat, 16 Jul 2011 00:42:39 -0700 Subject: Cleanup of oudated/redundant SP_ITEM() macro use. (bzr r10461) --- src/marker.cpp | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index 2354d686c..d3fa83ed6 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -191,14 +191,9 @@ sp_marker_release (SPObject *object) * SP_ATTR_VIEWBOX * SP_ATTR_PRESERVEASPECTRATIO */ -static void -sp_marker_set (SPObject *object, unsigned int key, const gchar *value) +static void sp_marker_set(SPObject *object, unsigned int key, const gchar *value) { - SPItem *item; - SPMarker *marker; - - item = SP_ITEM (object); - marker = SP_MARKER (object); + SPMarker *marker = SP_MARKER(object); switch (key) { case SP_ATTR_MARKERUNITS: @@ -339,18 +334,12 @@ sp_marker_set (SPObject *object, unsigned int key, const gchar *value) * Updates when its attributes have changed. Takes care of setting up * transformations and viewBoxes. */ -static void -sp_marker_update (SPObject *object, SPCtx *ctx, guint flags) +static void sp_marker_update(SPObject *object, SPCtx *ctx, guint flags) { - SPItem *item; - SPMarker *marker; + SPMarker *marker = SP_MARKER(object); SPItemCtx rctx; - Geom::Rect vb; + Geom::Rect vb; double x, y, width, height; - SPMarkerView *v; - - item = SP_ITEM (object); - marker = SP_MARKER (object); /* fixme: We have to set up clip here too */ @@ -450,19 +439,20 @@ sp_marker_update (SPObject *object, SPCtx *ctx, guint flags) rctx.i2vp = Geom::identity(); } - /* And invoke parent method */ - if (((SPObjectClass *) (parent_class))->update) + // And invoke parent method + if (((SPObjectClass *) (parent_class))->update) { ((SPObjectClass *) (parent_class))->update (object, (SPCtx *) &rctx, flags); + } - /* As last step set additional transform of arena group */ - for (v = marker->views; v != NULL; v = v->next) { - for (unsigned i = 0 ; i < v->items.size() ; i++) { + // As last step set additional transform of arena group + for (SPMarkerView *v = marker->views; v != NULL; v = v->next) { + for (unsigned i = 0 ; i < v->items.size() ; i++) { if (v->items[i]) { Geom::Affine tmp = marker->c2p; nr_arena_group_set_child_transform(NR_ARENA_GROUP(v->items[i]), &tmp); } - } - } + } + } } /** -- cgit v1.2.3 From 4dd33aa4d5c57706c7f64f63391174954160a308 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Sat, 6 Aug 2011 14:18:32 +0200 Subject: Rewrite NRArenaItem hierarchy into C++ (bzr r10347.1.21) --- src/marker.cpp | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index d3fa83ed6..11a270e73 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -21,7 +21,7 @@ #include <2geom/affine.h> #include <2geom/transforms.h> #include "svg/svg.h" -#include "display/nr-arena-group.h" +#include "display/drawing-group.h" #include "xml/repr.h" #include "attributes.h" #include "marker.h" @@ -31,7 +31,7 @@ struct SPMarkerView { SPMarkerView *next; unsigned int key; - std::vector items; + std::vector items; }; static void sp_marker_class_init (SPMarkerClass *klass); @@ -43,7 +43,7 @@ static void sp_marker_set (SPObject *object, unsigned int key, const gchar *valu static void sp_marker_update (SPObject *object, SPCtx *ctx, guint flags); static Inkscape::XML::Node *sp_marker_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static NRArenaItem *sp_marker_private_show (SPItem *item, NRArena *arena, unsigned int key, unsigned int flags); +static Inkscape::DrawingItem *sp_marker_private_show (SPItem *item, NRArena *arena, unsigned int key, unsigned int flags); static void sp_marker_private_hide (SPItem *item, unsigned int key); static void sp_marker_bbox(SPItem const *item, NRRect *bbox, Geom::Affine const &transform, unsigned const flags); static void sp_marker_print (SPItem *item, SPPrintContext *ctx); @@ -448,8 +448,8 @@ static void sp_marker_update(SPObject *object, SPCtx *ctx, guint flags) for (SPMarkerView *v = marker->views; v != NULL; v = v->next) { for (unsigned i = 0 ; i < v->items.size() ; i++) { if (v->items[i]) { - Geom::Affine tmp = marker->c2p; - nr_arena_group_set_child_transform(NR_ARENA_GROUP(v->items[i]), &tmp); + Inkscape::DrawingGroup *g = dynamic_cast(v->items[i]); + g->setChildTransform(marker->c2p); } } } @@ -522,7 +522,7 @@ sp_marker_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::X /** * This routine is disabled to break propagation. */ -static NRArenaItem * +static Inkscape::DrawingItem * sp_marker_private_show (SPItem */*item*/, NRArena */*arena*/, unsigned int /*key*/, unsigned int /*flags*/) { /* Break propagation */ @@ -560,14 +560,14 @@ sp_marker_print (SPItem */*item*/, SPPrintContext */*ctx*/) /** * Removes any SPMarkerViews that a marker has with a specific key. - * Set up the NRArenaItem array's size in the specified SPMarker's SPMarkerView. + * Set up the DrawingItem array's size in the specified SPMarker's SPMarkerView. * This is called from sp_shape_update() for shapes that have markers. It * removes the old view of the marker and establishes a new one, registering * it with the marker's list of views for future updates. * * \param marker Marker to create views in. * \param key Key to give each SPMarkerView. - * \param size Number of NRArenaItems to put in the SPMarkerView. + * \param size Number of DrawingItems to put in the SPMarkerView. */ void sp_marker_show_dimension (SPMarker *marker, unsigned int key, unsigned int size) @@ -601,8 +601,8 @@ sp_marker_show_dimension (SPMarker *marker, unsigned int key, unsigned int size) * Shows an instance of a marker. This is called during sp_shape_update_marker_view() * show and transform a child item in the arena for all views with the given key. */ -NRArenaItem * -sp_marker_show_instance ( SPMarker *marker, NRArenaItem *parent, +Inkscape::DrawingItem * +sp_marker_show_instance ( SPMarker *marker, Inkscape::DrawingItem *parent, unsigned int key, unsigned int pos, Geom::Affine const &base, float linewidth) { @@ -621,14 +621,13 @@ sp_marker_show_instance ( SPMarker *marker, NRArenaItem *parent, if (!v->items[pos]) { /* Parent class ::show method */ v->items[pos] = ((SPItemClass *) parent_class)->show ((SPItem *) marker, - parent->arena, key, + parent->drawing(), key, SP_ITEM_REFERENCE_FLAGS); if (v->items[pos]) { /* fixme: Position (Lauris) */ - nr_arena_item_add_child (parent, v->items[pos], NULL); - /* nr_arena_item_unref (v->items[pos]); */ - Geom::Affine tmp = marker->c2p; - nr_arena_group_set_child_transform((NRArenaGroup *) v->items[pos], &tmp); + parent->prependChild(v->items[pos]); + Inkscape::DrawingGroup *g = dynamic_cast(v->items[pos]); + if (g) g->setChildTransform(marker->c2p); } } if (v->items[pos]) { @@ -643,8 +642,7 @@ sp_marker_show_instance ( SPMarker *marker, NRArenaItem *parent, if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { m = Geom::Scale(linewidth) * m; } - - nr_arena_item_set_transform(v->items[pos], m); + v->items[pos]->setTransform(m); } return v->items[pos]; } @@ -695,7 +693,7 @@ sp_marker_view_remove (SPMarker *marker, SPMarkerView *view, unsigned int destro if (destroyitems) { for (i = 0; i < view->items.size(); i++) { /* We have to walk through the whole array because there may be hidden items */ - if (view->items[i]) nr_arena_item_unref (view->items[i]); + delete view->items[i]; } } view->items.clear(); -- cgit v1.2.3 From 75976ea07dba9b97186667524d0a76603de416af Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Sun, 7 Aug 2011 12:53:12 +0200 Subject: Rewrite NRArena -> Inkscape::Drawing. Call render and update methods on the Drawing rather than on the root DrawingItem. (bzr r10347.1.25) --- src/marker.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index 11a270e73..c8fa9218d 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -43,7 +43,7 @@ static void sp_marker_set (SPObject *object, unsigned int key, const gchar *valu static void sp_marker_update (SPObject *object, SPCtx *ctx, guint flags); static Inkscape::XML::Node *sp_marker_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static Inkscape::DrawingItem *sp_marker_private_show (SPItem *item, NRArena *arena, unsigned int key, unsigned int flags); +static Inkscape::DrawingItem *sp_marker_private_show (SPItem *item, Inkscape::Drawing &drawing, unsigned int key, unsigned int flags); static void sp_marker_private_hide (SPItem *item, unsigned int key); static void sp_marker_bbox(SPItem const *item, NRRect *bbox, Geom::Affine const &transform, unsigned const flags); static void sp_marker_print (SPItem *item, SPPrintContext *ctx); @@ -168,7 +168,7 @@ sp_marker_release (SPObject *object) marker = (SPMarker *) object; while (marker->views) { - /* Destroy all NRArenaitems etc. */ + /* Destroy all DrawingItems etc. */ /* Parent class ::hide method */ ((SPItemClass *) parent_class)->hide ((SPItem *) marker, marker->views->key); sp_marker_view_remove (marker, marker->views, TRUE); @@ -444,7 +444,7 @@ static void sp_marker_update(SPObject *object, SPCtx *ctx, guint flags) ((SPObjectClass *) (parent_class))->update (object, (SPCtx *) &rctx, flags); } - // As last step set additional transform of arena group + // As last step set additional transform of drawing group for (SPMarkerView *v = marker->views; v != NULL; v = v->next) { for (unsigned i = 0 ; i < v->items.size() ; i++) { if (v->items[i]) { @@ -523,7 +523,7 @@ sp_marker_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::X * This routine is disabled to break propagation. */ static Inkscape::DrawingItem * -sp_marker_private_show (SPItem */*item*/, NRArena */*arena*/, unsigned int /*key*/, unsigned int /*flags*/) +sp_marker_private_show (SPItem */*item*/, Inkscape::Drawing &/*drawing*/, unsigned int /*key*/, unsigned int /*flags*/) { /* Break propagation */ return NULL; @@ -599,7 +599,7 @@ sp_marker_show_dimension (SPMarker *marker, unsigned int key, unsigned int size) /** * Shows an instance of a marker. This is called during sp_shape_update_marker_view() - * show and transform a child item in the arena for all views with the given key. + * show and transform a child item in the drawing for all views with the given key. */ Inkscape::DrawingItem * sp_marker_show_instance ( SPMarker *marker, Inkscape::DrawingItem *parent, -- cgit v1.2.3 From 72cc39b9f0b340548f395c7f61ca9662b34aea09 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Sat, 27 Aug 2011 11:04:37 +0200 Subject: Refactor SPItem bounding box methods: remove NRRect usage and make code using them more obvious. Fix filter region computation. (bzr r10582.1.1) --- src/marker.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index c8fa9218d..9db5cfdc1 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -45,7 +45,7 @@ static Inkscape::XML::Node *sp_marker_write (SPObject *object, Inkscape::XML::Do static Inkscape::DrawingItem *sp_marker_private_show (SPItem *item, Inkscape::Drawing &drawing, unsigned int key, unsigned int flags); static void sp_marker_private_hide (SPItem *item, unsigned int key); -static void sp_marker_bbox(SPItem const *item, NRRect *bbox, Geom::Affine const &transform, unsigned const flags); +static Geom::OptRect sp_marker_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type); static void sp_marker_print (SPItem *item, SPPrintContext *ctx); static void sp_marker_view_remove (SPMarker *marker, SPMarkerView *view, unsigned int destroyitems); @@ -541,10 +541,11 @@ sp_marker_private_hide (SPItem */*item*/, unsigned int /*key*/) /** * This routine is disabled to break propagation. */ -static void -sp_marker_bbox(SPItem const *, NRRect *, Geom::Affine const &, unsigned const) +static Geom::OptRect +sp_marker_bbox(SPItem const *, Geom::Affine const &, SPItem::BBoxType) { - /* Break propagation */ + /* Break propagation */ + return Geom::OptRect(); } /** -- cgit v1.2.3 From 24526cceccb4ed103a6324756476c64efb3fb5dd Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Sat, 27 Aug 2011 16:58:22 +0200 Subject: Remove all NRRect use. (bzr r10582.1.5) --- src/marker.cpp | 44 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 25 deletions(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index 9db5cfdc1..db9779460 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -349,10 +349,7 @@ static void sp_marker_update(SPObject *object, SPCtx *ctx, guint flags) rctx.i2doc = Geom::identity(); rctx.i2vp = Geom::identity(); /* Set up viewport */ - rctx.vp.x0 = 0.0; - rctx.vp.y0 = 0.0; - rctx.vp.x1 = marker->markerWidth.computed; - rctx.vp.y1 = marker->markerHeight.computed; + rctx.viewport = Geom::Rect::from_xywh(0, 0, marker->markerWidth.computed, marker->markerHeight.computed); /* Start with identity transform */ marker->c2p.setIdentity(); @@ -361,20 +358,20 @@ static void sp_marker_update(SPObject *object, SPCtx *ctx, guint flags) if (marker->viewBox) { vb = *marker->viewBox; } else { - vb = *(rctx.vp.upgrade_2geom()); + vb = rctx.viewport; } /* Now set up viewbox transformation */ /* Determine actual viewbox in viewport coordinates */ if (marker->aspect_align == SP_ASPECT_NONE) { x = 0.0; y = 0.0; - width = rctx.vp.x1 - rctx.vp.x0; - height = rctx.vp.y1 - rctx.vp.y0; + width = rctx.viewport.width(); + height = rctx.viewport.height(); } else { double scalex, scaley, scale; /* Things are getting interesting */ - scalex = (rctx.vp.x1 - rctx.vp.x0) / (vb.width()); - scaley = (rctx.vp.y1 - rctx.vp.y0) / (vb.height()); + scalex = rctx.viewport.width() / (vb.width()); + scaley = rctx.viewport.height() / (vb.height()); scale = (marker->aspect_clip == SP_ASPECT_MEET) ? MIN (scalex, scaley) : MAX (scalex, scaley); width = (vb.width()) * scale; height = (vb.height()) * scale; @@ -385,36 +382,36 @@ static void sp_marker_update(SPObject *object, SPCtx *ctx, guint flags) y = 0.0; break; case SP_ASPECT_XMID_YMIN: - x = 0.5 * ((rctx.vp.x1 - rctx.vp.x0) - width); + x = 0.5 * (rctx.viewport.width() - width); y = 0.0; break; case SP_ASPECT_XMAX_YMIN: - x = 1.0 * ((rctx.vp.x1 - rctx.vp.x0) - width); + x = 1.0 * (rctx.viewport.width() - width); y = 0.0; break; case SP_ASPECT_XMIN_YMID: x = 0.0; - y = 0.5 * ((rctx.vp.y1 - rctx.vp.y0) - height); + y = 0.5 * (rctx.viewport.height() - height); break; case SP_ASPECT_XMID_YMID: - x = 0.5 * ((rctx.vp.x1 - rctx.vp.x0) - width); - y = 0.5 * ((rctx.vp.y1 - rctx.vp.y0) - height); + x = 0.5 * (rctx.viewport.width() - width); + y = 0.5 * (rctx.viewport.height() - height); break; case SP_ASPECT_XMAX_YMID: - x = 1.0 * ((rctx.vp.x1 - rctx.vp.x0) - width); - y = 0.5 * ((rctx.vp.y1 - rctx.vp.y0) - height); + x = 1.0 * (rctx.viewport.width() - width); + y = 0.5 * (rctx.viewport.height() - height); break; case SP_ASPECT_XMIN_YMAX: x = 0.0; - y = 1.0 * ((rctx.vp.y1 - rctx.vp.y0) - height); + y = 1.0 * (rctx.viewport.height() - height); break; case SP_ASPECT_XMID_YMAX: - x = 0.5 * ((rctx.vp.x1 - rctx.vp.x0) - width); - y = 1.0 * ((rctx.vp.y1 - rctx.vp.y0) - height); + x = 0.5 * (rctx.viewport.width() - width); + y = 1.0 * (rctx.viewport.height() - height); break; case SP_ASPECT_XMAX_YMAX: - x = 1.0 * ((rctx.vp.x1 - rctx.vp.x0) - width); - y = 1.0 * ((rctx.vp.y1 - rctx.vp.y0) - height); + x = 1.0 * (rctx.viewport.width() - width); + y = 1.0 * (rctx.viewport.height() - height); break; default: x = 0.0; @@ -432,10 +429,7 @@ static void sp_marker_update(SPObject *object, SPCtx *ctx, guint flags) /* If viewBox is set reinitialize child viewport */ /* Otherwise it already correct */ if (marker->viewBox) { - rctx.vp.x0 = marker->viewBox->min()[Geom::X]; - rctx.vp.y0 = marker->viewBox->min()[Geom::Y]; - rctx.vp.x1 = marker->viewBox->max()[Geom::X]; - rctx.vp.y1 = marker->viewBox->max()[Geom::Y]; + rctx.viewport = *marker->viewBox; rctx.i2vp = Geom::identity(); } -- cgit v1.2.3 From d6af1140ee108cc7d7fb6e0ba89ff7e30bb7ad3a Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Sat, 27 Aug 2011 18:05:32 +0200 Subject: Completely remove NRRect, NRRectL, in-svg-plane.h (bzr r10582.1.6) --- src/marker.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'src/marker.cpp') diff --git a/src/marker.cpp b/src/marker.cpp index db9779460..e75cdff43 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -17,7 +17,6 @@ #include #include "config.h" -#include "libnr/nr-convert2geom.h" #include <2geom/affine.h> #include <2geom/transforms.h> #include "svg/svg.h" -- cgit v1.2.3