Code

remove many unnecessary to_2geom and from_2geom calls
[inkscape.git] / src / marker.cpp
index aacbee87531af918f955c9392d2ae67de25af2bb..d77aa87d6430d58d01e21c052932fbbba23814ab 100644 (file)
@@ -9,6 +9,7 @@
  *
  * Copyright (C) 1999-2003 Lauris Kaplinski
  *               2004-2006 Bryce Harrington
+ *               2008      Johan Engelen
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
  */
@@ -24,6 +25,8 @@
 #include "libnr/nr-scale-matrix-ops.h"
 #include "libnr/nr-translate-matrix-ops.h"
 #include "libnr/nr-rotate-fns.h"
+#include "libnr/nr-convert2geom.h"
+#include <2geom/matrix.h>
 #include "svg/svg.h"
 #include "display/nr-arena-group.h"
 #include "xml/repr.h"
@@ -46,7 +49,7 @@ static void sp_marker_build (SPObject *object, SPDocument *document, Inkscape::X
 static void sp_marker_release (SPObject *object);
 static void sp_marker_set (SPObject *object, unsigned int key, const gchar *value);
 static void sp_marker_update (SPObject *object, SPCtx *ctx, guint flags);
-static Inkscape::XML::Node *sp_marker_write (SPObject *object, Inkscape::XML::Node *repr, 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 void sp_marker_private_hide (SPItem *item, unsigned int key);
@@ -489,14 +492,13 @@ sp_marker_update (SPObject *object, SPCtx *ctx, guint flags)
  * Writes the object's properties into its repr object.
  */
 static Inkscape::XML::Node *
-sp_marker_write (SPObject *object, Inkscape::XML::Node *repr, guint flags)
+sp_marker_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags)
 {
        SPMarker *marker;
 
        marker = SP_MARKER (object);
 
        if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
-               Inkscape::XML::Document *xml_doc = sp_document_repr_doc(SP_OBJECT_DOCUMENT(object));
                repr = xml_doc->createElement("svg:marker");
        }
 
@@ -543,7 +545,7 @@ sp_marker_write (SPObject *object, Inkscape::XML::Node *repr, guint flags)
        repr->setAttribute("preserveAspectRatio", object->repr->attribute("preserveAspectRatio"));
 
        if (((SPObjectClass *) (parent_class))->write)
-               ((SPObjectClass *) (parent_class))->write (object, repr, flags);
+               ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, flags);
 
        return repr;
 }
@@ -629,9 +631,9 @@ sp_marker_show_dimension (SPMarker *marker, unsigned int key, unsigned int size)
  * 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,
-                        unsigned int key, unsigned int pos,
-                        NR::Matrix const &base, float linewidth)
+sp_marker_show_instance ( SPMarker *marker, NRArenaItem *parent,
+                          unsigned int key, unsigned int pos,
+                          Geom::Matrix const &base, float linewidth)
 {
        for (SPMarkerView *v = marker->views; v != NULL; v = v->next) {
                if (v->key == key) {
@@ -657,7 +659,7 @@ sp_marker_show_instance (SPMarker *marker, NRArenaItem *parent,
                                } else {
                                        /* fixme: Orient units (Lauris) */
                                        m = NR::Matrix(rotate_degrees(marker->orient));
-                                       m *= get_translation(base);
+                                       m *= NR::get_translation(base);
                                }
                                if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) {
                                        m = NR::scale(linewidth) * m;