diff options
Diffstat (limited to 'src/splivarot.cpp')
| -rw-r--r-- | src/splivarot.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/splivarot.cpp b/src/splivarot.cpp index ecafd2f04..cf07fba16 100644 --- a/src/splivarot.cpp +++ b/src/splivarot.cpp @@ -474,11 +474,7 @@ sp_selected_path_boolop(bool_op bop, const unsigned int verb, const Glib::ustrin // premultiply by the inverse of parent's repr SPItem *parent_item = SP_ITEM(sp_desktop_document(desktop)->getObjectByRepr(parent)); NR::Matrix local = sp_item_i2doc_affine(parent_item); - gchar affinestr[80]; - gchar *transform = NULL; - if (!local.test_identity() && sp_svg_transform_write(affinestr, 79, local.inverse())) { - transform = affinestr; - } + gchar *transform = sp_svg_transform_write(local); // now that we have the result, add it on the canvas if ( bop == bool_op_cut || bop == bool_op_slice ) { @@ -575,6 +571,8 @@ sp_selected_path_boolop(bool_op bop, const unsigned int verb, const Glib::ustrin Inkscape::GC::release(repr); } + g_free(transform); + sp_document_done(sp_desktop_document(desktop), verb, description); delete res; @@ -1574,8 +1572,12 @@ sp_selected_path_simplify_items(SPDesktop *desktop, continue; if (simplifyIndividualPaths) { - NR::Rect itemBbox = item->getBounds(sp_item_i2d_affine(item)); - simplifySize = L2(itemBbox.dimensions()); + NR::Maybe<NR::Rect> itemBbox = item->getBounds(sp_item_i2d_affine(item)); + if (itemBbox) { + simplifySize = L2(itemBbox->dimensions()); + } else { + simplifySize = 0; + } } @@ -1723,6 +1725,17 @@ Path_for_item(SPItem *item, bool doTransformation, bool transformFull) bpath=SP_CURVE_BPATH(curve); } + Path *dest = bpath_to_Path(bpath); + + if ( doTransformation ) { + if ( bpath ) g_free(bpath); + } else { + sp_curve_unref(curve); + } + return dest; +} + +Path *bpath_to_Path(NArtBpath const *bpath) { Path *dest = new Path; dest->SetBackData(false); { @@ -1776,12 +1789,6 @@ Path_for_item(SPItem *item, bool doTransformation, bool transformFull) if (closed) dest->Close(); } - - if ( doTransformation ) { - if ( bpath ) g_free(bpath); - } else { - sp_curve_unref(curve); - } return dest; } |
