[dia] Bezier*: fix save of BezPoint with type BEZ_LINE_TO
- From: Hans Breuer <hans src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dia] Bezier*: fix save of BezPoint with type BEZ_LINE_TO
- Date: Wed, 3 Oct 2012 20:04:22 +0000 (UTC)
commit 195eb75c0894815624013ccdf9b3f8b77ca63763
Author: Hans Breuer <hans breuer org>
Date: Tue Oct 2 22:58:08 2012 +0200
Bezier*: fix save of BezPoint with type BEZ_LINE_TO
These can not be created by the user interface, but might come
in through importers or PyDia code. The bug was probably hidden
by initializing p2 and p3 also for line-to. But it is just with
the limited serialization.
lib/bezier_conn.c | 11 +++++++++--
lib/beziershape.c | 13 ++++++++++---
2 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/lib/bezier_conn.c b/lib/bezier_conn.c
index 557b9c8..3b4b6ed 100644
--- a/lib/bezier_conn.c
+++ b/lib/bezier_conn.c
@@ -897,8 +897,15 @@ bezierconn_save (BezierConn *bezier,
if (BEZ_MOVE_TO == bezier->bezier.points[i].type)
g_warning("only first BezPoint can be a BEZ_MOVE_TO");
data_add_point(attr, &bezier->bezier.points[i].p1);
- data_add_point(attr, &bezier->bezier.points[i].p2);
- data_add_point(attr, &bezier->bezier.points[i].p3);
+ if (BEZ_LINE_TO == bezier->bezier.points[i].type) {
+ data_add_point(attr, &bezier->bezier.points[i].p1);
+ if (i < bezier->bezier.num_points - 1)
+ data_add_point(attr, &bezier->bezier.points[i].p1);
+ } else {
+ data_add_point(attr, &bezier->bezier.points[i].p2);
+ if (i < bezier->bezier.num_points - 1)
+ data_add_point(attr, &bezier->bezier.points[i].p3);
+ }
}
attr = new_attribute(obj_node, "corner_types");
diff --git a/lib/beziershape.c b/lib/beziershape.c
index 03dcf98..89c3d11 100644
--- a/lib/beziershape.c
+++ b/lib/beziershape.c
@@ -968,9 +968,16 @@ beziershape_save (BezierShape *bezier,
if (BEZ_MOVE_TO == bezier->bezier.points[i].type)
g_warning("only first BezPoint can be a BEZ_MOVE_TO");
data_add_point(attr, &bezier->bezier.points[i].p1);
- data_add_point(attr, &bezier->bezier.points[i].p2);
- if (i < bezier->bezier.num_points - 1)
- data_add_point(attr, &bezier->bezier.points[i].p3);
+
+ if (BEZ_LINE_TO == bezier->bezier.points[i].type) {
+ data_add_point(attr, &bezier->bezier.points[i].p1);
+ if (i < bezier->bezier.num_points - 1)
+ data_add_point(attr, &bezier->bezier.points[i].p1);
+ } else {
+ data_add_point(attr, &bezier->bezier.points[i].p2);
+ if (i < bezier->bezier.num_points - 1)
+ data_add_point(attr, &bezier->bezier.points[i].p3);
+ }
}
attr = new_attribute(obj_node, "corner_types");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]