summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMaximilian Albert <maximilian.albert@gmail.com>2007-07-18 00:23:49 +0000
committercilix42 <cilix42@users.sourceforge.net>2007-07-18 00:23:49 +0000
commit1539f9ade9a7d5f9a4339b6d0fcb8bc29ee1dafe (patch)
tree6d1c4836c716de40da6318999ecaa6b91ca3663a /src
parentAnother newly 'discovered' translator. (diff)
downloadinkscape-1539f9ade9a7d5f9a4339b6d0fcb8bc29ee1dafe.tar.gz
inkscape-1539f9ade9a7d5f9a4339b6d0fcb8bc29ee1dafe.zip
Make string conversion of box coordinates locale-independent (fixes bug with languages that use comma instead of decimal point)
(bzr r3264)
Diffstat (limited to 'src')
-rw-r--r--src/box3d-face.cpp29
-rw-r--r--src/box3d.cpp20
2 files changed, 36 insertions, 13 deletions
diff --git a/src/box3d-face.cpp b/src/box3d-face.cpp
index 2cb510277..02a49b4e4 100644
--- a/src/box3d-face.cpp
+++ b/src/box3d-face.cpp
@@ -235,11 +235,30 @@ gchar * Box3DFace::svg_repr_string()
{
NR::Matrix const i2d (sp_item_i2d_affine (SP_ITEM (this->parent_box3d)));
GString *pstring = g_string_new("");
- g_string_printf (pstring, "M %f,%f L %f,%f L %f,%f L %f,%f z",
- ((*corners[0]) * i2d)[NR::X], ((*corners[0]) * i2d)[NR::Y],
- ((*corners[1]) * i2d)[NR::X], ((*corners[1]) * i2d)[NR::Y],
- ((*corners[2]) * i2d)[NR::X], ((*corners[2]) * i2d)[NR::Y],
- ((*corners[3]) * i2d)[NR::X], ((*corners[3]) * i2d)[NR::Y]);
+ gchar str[G_ASCII_DTOSTR_BUF_SIZE];
+
+ g_string_append_printf (pstring, "M ");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[0]) * i2d)[NR::X]));
+ g_string_append_printf (pstring, ",");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[0]) * i2d)[NR::Y]));
+
+ g_string_append_printf (pstring, " L ");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[1]) * i2d)[NR::X]));
+ g_string_append_printf (pstring, ",");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[1]) * i2d)[NR::Y]));
+
+ g_string_append_printf (pstring, " L ");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[2]) * i2d)[NR::X]));
+ g_string_append_printf (pstring, ",");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[2]) * i2d)[NR::Y]));
+
+ g_string_append_printf (pstring, " L ");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[3]) * i2d)[NR::X]));
+ g_string_append_printf (pstring, ",");
+ g_string_append_printf (pstring, "%s", g_ascii_dtostr (str, sizeof (str), ((*corners[3]) * i2d)[NR::Y]));
+
+ g_string_append_printf (pstring, " z");
+
return pstring->str;
}
diff --git a/src/box3d.cpp b/src/box3d.cpp
index eb67269ce..1b467b178 100644
--- a/src/box3d.cpp
+++ b/src/box3d.cpp
@@ -422,24 +422,28 @@ static gchar *
sp_3dbox_get_corner_coords_string (SP3DBox *box, guint id)
{
id = id % 8;
- return g_strdup_printf ("%f,%f", box->corners[id][NR::X], box->corners[id][NR::Y]);
+ gchar str1[G_ASCII_DTOSTR_BUF_SIZE];
+ gchar str2[G_ASCII_DTOSTR_BUF_SIZE];
+ g_ascii_dtostr (str2, sizeof (str2), box->corners[id][NR::X]);
+ return g_strjoin (",", g_ascii_dtostr (str1, sizeof (str1), box->corners[id][NR::X]),
+ g_ascii_dtostr (str2, sizeof (str2), box->corners[id][NR::Y]), NULL);
}
static std::pair<gdouble, gdouble>
sp_3dbox_get_coord_pair_from_string (const gchar *coords)
{
- gchar **coordlist = g_strsplit( coords, ",", 0);
- // We might as well rely on g_strtod to convert the NULL pointer to 0.0,
+ gchar **coordpair = g_strsplit( coords, ",", 0);
+ // We might as well rely on g_ascii_strtod to convert the NULL pointer to 0.0,
// but we include the following test anyway
- if (coordlist[0] == NULL || coordlist[1] == NULL) {
- g_strfreev (coordlist);
+ if (coordpair[0] == NULL || coordpair[1] == NULL) {
+ g_strfreev (coordpair);
g_warning ("Coordinate conversion failed.\n");
return std::make_pair(0.0, 0.0);
}
- gdouble coord1 = g_strtod(coordlist[0], NULL);
- gdouble coord2 = g_strtod(coordlist[1], NULL);
- g_strfreev (coordlist);
+ gdouble coord1 = g_ascii_strtod(coordpair[0], NULL);
+ gdouble coord2 = g_ascii_strtod(coordpair[1], NULL);
+ g_strfreev (coordpair);
return std::make_pair(coord1, coord2);
}