[gnumeric] xls: simplify code.
- From: Morten Welinder <mortenw src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnumeric] xls: simplify code.
- Date: Thu, 8 Oct 2009 16:43:10 +0000 (UTC)
commit 3d3ef68c786a6931f3574cd1438c1992dccb2cae
Author: Morten Welinder <terra gnome org>
Date: Thu Oct 8 12:42:46 2009 -0400
xls: simplify code.
plugins/excel/ChangeLog | 7 +++++++
plugins/excel/ms-escher.c | 16 ++++++++++++++++
plugins/excel/ms-escher.h | 10 +++++++++-
plugins/excel/ms-excel-write.c | 26 ++++++++++----------------
4 files changed, 42 insertions(+), 17 deletions(-)
---
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 5e4d77c..bed5e15 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-08 Morten Welinder <terra gnome org>
+
+ * ms-escher.c (ms_escher_opt_add_bool): New function.
+
+ * ms-excel-write.c (excel_write_line_v8): Simplify using
+ ms_escher_opt_add_bool.
+
2009-10-07 Morten Welinder <terra gnome org>
* ms-excel-write.c (excel_write_textbox_v8): Export
diff --git a/plugins/excel/ms-escher.c b/plugins/excel/ms-escher.c
index 2f7c7b0..fe70b9b 100644
--- a/plugins/excel/ms-escher.c
+++ b/plugins/excel/ms-escher.c
@@ -2260,6 +2260,22 @@ ms_escher_opt_add_simple (GString *buf, gsize marker, guint16 pid, gint32 val)
}
void
+ms_escher_opt_add_bool (GString *buf, gsize marker,
+ guint16 pid, gboolean b)
+{
+ int N = ms_escher_get_inst (buf, marker);
+ guint16 gid = pid | 0xf;
+ guint8 shift = gid - pid;
+ guint32 val = (b ? 0x00010001 : 0x00010000) << shift;
+
+ if (N > 0 && GSF_LE_GET_GUINT16 (buf->str + buf->len - 6) == gid) {
+ val |= GSF_LE_GET_GUINT32 (buf->str + buf->len - 4);
+ GSF_LE_SET_GUINT32 (buf->str + buf->len - 4, val);
+ } else
+ ms_escher_opt_add_simple (buf, marker, gid, val);
+}
+
+void
ms_escher_opt_add_color (GString *buf, gsize marker,
guint16 pid, GOColor c)
{
diff --git a/plugins/excel/ms-escher.h b/plugins/excel/ms-escher.h
index 6139849..7ff8345 100644
--- a/plugins/excel/ms-escher.h
+++ b/plugins/excel/ms-escher.h
@@ -18,12 +18,18 @@
#include <sheet-object.h>
enum {
+ MESP_AUTOTEXTMARGIN = 0x00bc,
MSEP_SHAPEPATH = 0x0144,
+ MSEP_FILLOK = 0x017f,
MSEP_FILLCOLOR = 0x0181,
+ MSEP_FILLED = 0x01bb,
+ MSEP_NOFILLHITTEST = 0x01bf,
MSEP_LINECOLOR = 0x01c0,
MSEP_LINEWIDTH = 0x01cb,
MSEP_LINEENDARROWHEAD = 0x01d1,
- MSEP_NAME = 0x0380
+ MSEP_ARROWHEADSOK = 0x01fb,
+ MSEP_NAME = 0x0380,
+ MSEP_ISBUTTON = 0x03bc
};
@@ -53,6 +59,8 @@ void ms_escher_sp (GString *buf, guint32 spid, guint16 shape, guint32 flags);
gsize ms_escher_opt_start (GString *buf);
void ms_escher_opt_add_simple (GString *buf, gsize marker,
guint16 pid, gint32 val);
+void ms_escher_opt_add_bool (GString *buf, gsize marker,
+ guint16 pid, gboolean b);
void ms_escher_opt_add_color (GString *buf, gsize marker,
guint16 pid, GOColor c);
void ms_escher_opt_add_str_wchar (GString *buf, gsize marker, GString *extra,
diff --git a/plugins/excel/ms-excel-write.c b/plugins/excel/ms-excel-write.c
index b092cb2..b03d8cf 100644
--- a/plugins/excel/ms-excel-write.c
+++ b/plugins/excel/ms-excel-write.c
@@ -4429,7 +4429,6 @@ excel_write_line_v8 (ExcelWriteSheet *esheet, SheetObject *so)
ExcelWriteState *ewb = esheet->ewb;
BiffPut *bp = ewb->bp;
guint32 id = excel_write_start_drawing (esheet);
- SheetObjectAnchor const *anchor = sheet_object_get_anchor (so);
gsize draw_len = 0;
int type = 1;
int shape = 0x14;
@@ -4451,37 +4450,32 @@ excel_write_line_v8 (ExcelWriteSheet *esheet, SheetObject *so)
optmark = ms_escher_opt_start (escher);
extra = g_string_new (NULL);
- ms_escher_opt_add_simple (escher, optmark,
- 0x00bf, 0x00080008);
- ms_escher_opt_add_simple (escher, optmark,
- MSEP_SHAPEPATH, 4); /* shapePath */
- ms_escher_opt_add_simple (escher, optmark,
- 0x017f, 0x00010000);
- ms_escher_opt_add_simple (escher, optmark,
- 0x01bf, 0x00110001);
+ ms_escher_opt_add_bool (escher, optmark, MESP_AUTOTEXTMARGIN, TRUE);
+ ms_escher_opt_add_simple (escher, optmark, MSEP_SHAPEPATH, 4);
+ ms_escher_opt_add_bool (escher, optmark, MSEP_FILLOK, FALSE);
+ ms_escher_opt_add_bool (escher, optmark, MSEP_NOFILLHITTEST, TRUE);
+ ms_escher_opt_add_bool (escher, optmark, MSEP_FILLED, FALSE);
ms_escher_opt_add_color (escher, optmark, MSEP_LINECOLOR,
style->line.auto_color
? GO_COLOR_BLACK
: style->line.color);
if (style->line.width > 0) {
- guint16 w = CLAMP (12700 * style->line.width, 0, 65535);
+ gint32 w = CLAMP (12700 * style->line.width, 0, G_MAXINT32);
ms_escher_opt_add_simple (escher, optmark, MSEP_LINEWIDTH, w);
}
if (is_arrow)
ms_escher_opt_add_simple (escher, optmark,
- MSEP_LINEENDARROWHEAD, 1); /* lineEndArrowhead */
- ms_escher_opt_add_simple (escher, optmark,
- 0x1ff, 0x00180018);
+ MSEP_LINEENDARROWHEAD, 1);
+ ms_escher_opt_add_bool (escher, optmark, MSEP_ARROWHEADSOK, is_arrow);
if (name)
ms_escher_opt_add_str_wchar (escher, optmark, extra,
MSEP_NAME, name);
- ms_escher_opt_add_simple (escher, optmark,
- 0x03bf, 0x00080008); /* fPrint */
+ ms_escher_opt_add_bool (escher, optmark, MSEP_ISBUTTON, TRUE);
go_string_append_gstring (escher, extra);
ms_escher_opt_end (escher, optmark);
g_string_free (extra, TRUE);
- ms_escher_clientanchor (escher, anchor);
+ ms_escher_clientanchor (escher, sheet_object_get_anchor (so));
ms_escher_clientdata (escher, NULL, 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]