[gnumeric] Fix charts size in XLS format. [#414]
- From: Jean Bréfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Fix charts size in XLS format. [#414]
- Date: Mon, 2 Sep 2019 16:20:52 +0000 (UTC)
commit 1a183db49f4eae1460ede72439ae8f03fea9c57f
Author: Jean Brefort <jean brefort normalesup org>
Date: Mon Sep 2 18:20:41 2019 +0200
Fix charts size in XLS format. [#414]
plugins/excel/ChangeLog | 5 +++++
plugins/excel/ms-excel-read.c | 6 ++++++
plugins/excel/ms-excel-write.c | 12 +++++++++++-
3 files changed, 22 insertions(+), 1 deletion(-)
---
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 071f2f72e..934e87d0d 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-02 Jean Brefort <jean brefort normalesup org>
+
+ * ms-excel-read.c (ms_sheet_realize_obj): fix charts position. [#414]
+ * ms-excel-write.c (excel_write_chart_v8): ditto.
+
2019-07-20 Morten Welinder <terra gnome org>
* xlsx-write.c (xlsx_write_style): Wrote cell protection too.
diff --git a/plugins/excel/ms-excel-read.c b/plugins/excel/ms-excel-read.c
index c712b6148..4a9cdd77f 100644
--- a/plugins/excel/ms-excel-read.c
+++ b/plugins/excel/ms-excel-read.c
@@ -540,6 +540,12 @@ ms_sheet_realize_obj (MSContainer *container, MSObj *obj)
((flip_v == NULL) ? GOD_ANCHOR_DIR_DOWN : 0);
sheet_object_anchor_init (&anchor, &range, offsets, direction, GNM_SO_ANCHOR_TWO_CELLS);
+ if (mode != GNM_SO_ANCHOR_TWO_CELLS) {
+ double pts[4];
+ sheet_object_anchor_to_pts (&anchor, esheet->sheet, pts);
+ anchor.mode = mode;
+ sheet_object_pts_to_anchor (&anchor, esheet->sheet, pts);
+ }
sheet_object_set_anchor (so, &anchor);
}
sheet_object_set_sheet (so, esheet->sheet);
diff --git a/plugins/excel/ms-excel-write.c b/plugins/excel/ms-excel-write.c
index 2013d7ef7..6e7cc829e 100644
--- a/plugins/excel/ms-excel-write.c
+++ b/plugins/excel/ms-excel-write.c
@@ -4310,6 +4310,8 @@ excel_write_chart_v8 (ExcelWriteSheet *esheet, SheetObject *so)
guint8 zero[4] = { 0, 0, 0, 0 };
gsize draw_len = 0;
guint16 shape = 0x92;
+ SheetObjectAnchor const *real_anchor = sheet_object_get_anchor (so);
+ SheetObjectAnchor anchor = *real_anchor;
g_object_get (so,
"name", &name,
@@ -4337,7 +4339,15 @@ excel_write_chart_v8 (ExcelWriteSheet *esheet, SheetObject *so)
ms_escher_opt_end (escher, optmark);
g_string_free (extra, TRUE);
- ms_escher_clientanchor (escher, sheet_object_get_anchor (so));
+ if (anchor.mode != GNM_SO_ANCHOR_TWO_CELLS) {
+ double pts[4];
+ GnmSOAnchorMode mode = anchor.mode;
+ sheet_object_anchor_to_pts (&anchor, esheet->gnum_sheet, pts);
+ anchor.mode = GNM_SO_ANCHOR_TWO_CELLS;
+ sheet_object_pts_to_anchor (&anchor, esheet->gnum_sheet, pts);
+ anchor.mode = mode; /* this anchor is not valid for gnumeric but is what we need there */
+ }
+ ms_escher_clientanchor (escher, &anchor);
ms_escher_clientdata (escher);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]