summaryrefslogtreecommitdiffstats
path: root/src/live_effects
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2017-05-23 20:48:47 +0000
committerMarc Jeanmougin <marcjeanmougin@free.fr>2017-05-23 20:48:47 +0000
commitde37ea2c3d4a1c857186dda0b113da04cd2bd79b (patch)
tree4b52381825a1d0efcbe4cada1c4bf61ade04b6a1 /src/live_effects
parentcmake/MSYS2: Include libyaml for xverb feature (diff)
parentselection chemistry: cancel if we hit top/bottom (diff)
downloadinkscape-de37ea2c3d4a1c857186dda0b113da04cd2bd79b.tar.gz
inkscape-de37ea2c3d4a1c857186dda0b113da04cd2bd79b.zip
merge chr[] branch : Objects panel improvements, mem leaks.
(bzr r15700)
Diffstat (limited to 'src/live_effects')
-rw-r--r--src/live_effects/lpe-bspline.cpp1
-rw-r--r--src/live_effects/lpe-clone-original.cpp12
-rw-r--r--src/live_effects/lpe-copy_rotate.cpp4
-rw-r--r--src/live_effects/lpe-measure-line.cpp11
-rw-r--r--src/live_effects/lpe-mirror_symmetry.cpp4
-rw-r--r--src/live_effects/parameter/path.cpp3
6 files changed, 25 insertions, 10 deletions
diff --git a/src/live_effects/lpe-bspline.cpp b/src/live_effects/lpe-bspline.cpp
index 5c227e68a..dbd67beda 100644
--- a/src/live_effects/lpe-bspline.cpp
+++ b/src/live_effects/lpe-bspline.cpp
@@ -168,6 +168,7 @@ void LPEBSpline::changeWeight(double weight_ammount)
doBSplineFromWidget(curve, weight_ammount/100.0);
gchar *str = sp_svg_write_path(curve->get_pathvector());
path->getRepr()->setAttribute("inkscape:original-d", str);
+ g_free(str);
}
}
diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp
index d97a990af..31bf0e270 100644
--- a/src/live_effects/lpe-clone-original.cpp
+++ b/src/live_effects/lpe-clone-original.cpp
@@ -138,10 +138,14 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co
dest_affine *= Geom::Translate(preserve_affine.translation());
affine_previous = preserve_affine;
preserve_affine = Geom::identity();
- SP_ITEM(dest)->getRepr()->setAttribute("transform",sp_svg_transform_write(dest_affine));
+ gchar * str = sp_svg_transform_write(dest_affine);
+ SP_ITEM(dest)->getRepr()->setAttribute("transform", str);
+ g_free(str);
}
} else {
- SP_ITEM(dest)->getRepr()->setAttribute("transform",sp_svg_transform_write(affine_origin));
+ gchar * str = sp_svg_transform_write(affine_origin);
+ SP_ITEM(dest)->getRepr()->setAttribute("transform", str);
+ g_free(str);
}
} else if ( shape_dest && shape_origin && live && (std::strcmp(attribute, "d") == 0)) {
SPCurve *c = NULL;
@@ -176,7 +180,9 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co
c->set_pathvector(c_pv);
if (!path_origin) {
shape_dest->setCurveInsync(c, TRUE);
- dest->getRepr()->setAttribute(attribute, sp_svg_write_path(c_pv));
+ gchar *str = sp_svg_write_path(c_pv);
+ dest->getRepr()->setAttribute(attribute, str);
+ g_free(str);
} else {
shape_dest->setCurve(c, TRUE);
}
diff --git a/src/live_effects/lpe-copy_rotate.cpp b/src/live_effects/lpe-copy_rotate.cpp
index f8be0f2a5..e80ad80cb 100644
--- a/src/live_effects/lpe-copy_rotate.cpp
+++ b/src/live_effects/lpe-copy_rotate.cpp
@@ -274,7 +274,9 @@ LPECopyRotate::toItem(Geom::Affine transform, size_t i, bool reset)
Inkscape::GC::release(phantom);
}
cloneD(SP_OBJECT(sp_lpe_item), elemref, true, reset);
- elemref->getRepr()->setAttribute("transform" , sp_svg_transform_write(transform));
+ gchar *str = sp_svg_transform_write(transform);
+ elemref->getRepr()->setAttribute("transform" , str);
+ g_free(str);
SP_ITEM(elemref)->setHidden(false);
if (elemref->parent != container) {
Inkscape::XML::Node *copy = phantom->duplicate(xml_doc);
diff --git a/src/live_effects/lpe-measure-line.cpp b/src/live_effects/lpe-measure-line.cpp
index 892744462..f7892cbe7 100644
--- a/src/live_effects/lpe-measure-line.cpp
+++ b/src/live_effects/lpe-measure-line.cpp
@@ -260,7 +260,7 @@ LPEMeasureLine::createTextLabel(Geom::Point pos, double length, Geom::Coord angl
rtspan = xml_doc->createElement("svg:tspan");
rtspan->setAttribute("sodipodi:role", "line");
}
- const char * transform;
+ gchar * transform;
Geom::Affine affine = Geom::Affine(Geom::Translate(pos).inverse());
angle = std::fmod(angle, 2*M_PI);
if (angle < 0) angle += 2*M_PI;
@@ -276,6 +276,7 @@ LPEMeasureLine::createTextLabel(Geom::Point pos, double length, Geom::Coord angl
transform = NULL;
}
rtext->setAttribute("transform", transform);
+ g_free(transform);
SPCSSAttr *css = sp_repr_css_attr_new();
sp_repr_css_attr_add_from_string(css, anotation_format.param_getSVGValue());
Inkscape::FontLister *fontlister = Inkscape::FontLister::get_instance();
@@ -317,7 +318,7 @@ LPEMeasureLine::createTextLabel(Geom::Point pos, double length, Geom::Coord angl
g_snprintf(length_str, 64, "%.*f", (int)precision, length);
setlocale (LC_NUMERIC, oldlocale);
g_free (oldlocale);
- Glib::ustring label_value = Glib::ustring(format.param_getSVGValue());
+ Glib::ustring label_value(format.param_getSVGValue());
size_t s = label_value.find(Glib::ustring("{measure}"),0);
if(s < label_value.length()) {
label_value.replace(s,s+9,length_str);
@@ -413,17 +414,19 @@ LPEMeasureLine::createLine(Geom::Point start,Geom::Point end, const char * id, b
}
line = elemref->getRepr();
- const char * line_str = sp_svg_write_path( line_pathv );
+ gchar * line_str = sp_svg_write_path( line_pathv );
line->setAttribute("d" , line_str);
line->setAttribute("transform", NULL);
+ g_free(line_str);
} else {
if (remove) {
return;
}
line = xml_doc->createElement("svg:path");
line->setAttribute("id", id);
- const char * line_str = sp_svg_write_path( line_pathv );
+ gchar * line_str = sp_svg_write_path( line_pathv );
line->setAttribute("d" , line_str);
+ g_free(line_str);
}
line->setAttribute("sodipodi:insensitive", "true");
line_pathv.clear();
diff --git a/src/live_effects/lpe-mirror_symmetry.cpp b/src/live_effects/lpe-mirror_symmetry.cpp
index 186b97fe3..b1f10c242 100644
--- a/src/live_effects/lpe-mirror_symmetry.cpp
+++ b/src/live_effects/lpe-mirror_symmetry.cpp
@@ -291,7 +291,9 @@ LPEMirrorSymmetry::toMirror(Geom::Affine transform)
Inkscape::GC::release(phantom);
}
cloneD(SP_OBJECT(sp_lpe_item), elemref, true, true);
- elemref->getRepr()->setAttribute("transform" , sp_svg_transform_write(transform));
+ gchar *str = sp_svg_transform_write(transform);
+ elemref->getRepr()->setAttribute("transform" , str);
+ g_free(str);
if (elemref->parent != container) {
Inkscape::XML::Node *copy = phantom->duplicate(xml_doc);
copy->setAttribute("id", elemref_id);
diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp
index aa87508ab..6e90c9279 100644
--- a/src/live_effects/parameter/path.cpp
+++ b/src/live_effects/parameter/path.cpp
@@ -245,8 +245,9 @@ PathParam::param_editOncanvas(SPItem *item, SPDesktop * dt)
r.lpe_key = param_key;
Geom::PathVector stored_pv = _pathvector;
param_write_to_repr("M0,0 L1,0");
- const char *svgd = sp_svg_write_path(stored_pv);
+ gchar *svgd = sp_svg_write_path(stored_pv);
param_write_to_repr(svgd);
+ g_free(svgd);
} else {
r.item = ref.getObject();
}