Code

adapt code to new Maybe/bbox regime
[inkscape.git] / src / dialogs / clonetiler.cpp
index 130480608413469142ab004966ed618dfd29b3f7..cbf858f4d129563f0b96eebee270ba3c214abf79 100644 (file)
@@ -798,7 +798,7 @@ clonetiler_trace_pick (NR::Rect box)
     nr_pixblock_setup_extern( &pb, NR_PIXBLOCK_MODE_R8G8B8A8N,
                               ibox.x0, ibox.y0, ibox.x1, ibox.y1,
                               px, 4 * width, FALSE, FALSE );
-    nr_arena_item_invoke_render( trace_root, &ibox, &pb,
+    nr_arena_item_invoke_render(NULL, trace_root, &ibox, &pb,
                                  NR_ARENA_ITEM_RENDER_NO_CACHE );
 
     double R = 0, G = 0, B = 0, A = 0;
@@ -1085,15 +1085,20 @@ clonetiler_apply (GtkWidget *widget, void *)
         w = sp_repr_get_double_attribute (obj_repr, "inkscape:tile-w", 0);
         h = sp_repr_get_double_attribute (obj_repr, "inkscape:tile-h", 0);
     } else {
-        NR::Rect const r = SP_ITEM(obj)->invokeBbox(sp_item_i2doc_affine(SP_ITEM(obj)));
-        c = r.midpoint();
-        w = r.dimensions()[NR::X];
-        h = r.dimensions()[NR::Y];
-
-        sp_repr_set_svg_double(obj_repr, "inkscape:tile-w", w);
-        sp_repr_set_svg_double(obj_repr, "inkscape:tile-h", h);
-        sp_repr_set_svg_double(obj_repr, "inkscape:tile-cx", c[NR::X]);
-        sp_repr_set_svg_double(obj_repr, "inkscape:tile-cy", c[NR::Y]);
+        NR::Maybe<NR::Rect> r = SP_ITEM(obj)->getBounds(sp_item_i2doc_affine(SP_ITEM(obj)));
+        if (r) {
+            c = r->midpoint();
+            w = r->dimensions()[NR::X];
+            h = r->dimensions()[NR::Y];
+
+            sp_repr_set_svg_double(obj_repr, "inkscape:tile-cx", c[NR::X]);
+            sp_repr_set_svg_double(obj_repr, "inkscape:tile-cy", c[NR::Y]);
+            sp_repr_set_svg_double(obj_repr, "inkscape:tile-w", w);
+            sp_repr_set_svg_double(obj_repr, "inkscape:tile-h", h);
+        } else {
+            c = NR::Point(0, 0);
+            w = h = 0;
+        }
     }
 
     NR::Point cur = NR::Point (0, 0);
@@ -1286,12 +1291,9 @@ clonetiler_apply (GtkWidget *widget, void *)
                 center_set = true;
             }
 
-            gchar affinestr[80];
-            if (sp_svg_transform_write(affinestr, 79, t)) {
-                clone->setAttribute("transform", affinestr);
-            } else {
-                clone->setAttribute("transform", NULL);
-            }
+            gchar *affinestr=sp_svg_transform_write(t);
+            clone->setAttribute("transform", affinestr);
+            g_free(affinestr);
 
             if (opacity < 1.0) {
                 sp_repr_set_css_double(clone, "opacity", opacity);