[gnumeric] xlsx: first cut at arrow heads.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] xlsx: first cut at arrow heads.
- Date: Tue, 10 Feb 2015 02:49:20 +0000 (UTC)
commit 7a9087c4359ab5de88c5cb8b659070b0b3990015
Author: Morten Welinder <terra gnome org>
Date: Mon Feb 9 21:48:46 2015 -0500
xlsx: first cut at arrow heads.
Needs work: not always at the right end.
plugins/excel/ChangeLog | 5 ++++
plugins/excel/xlsx-read-drawing.c | 48 ++++++++++++++++++++++++++++++++----
2 files changed, 47 insertions(+), 6 deletions(-)
---
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index df73be4..f7e2c85 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-09 Morten Welinder <terra gnome org>
+
+ * xlsx-read-drawing.c (xlsx_chart_line_headtail): First cut at
+ arrow heads. Needs work.
+
2015-02-08 Morten Welinder <terra gnome org>
* xlsx-write-drawing.c (xlsx_write_drawing_objects): Add leak
diff --git a/plugins/excel/xlsx-read-drawing.c b/plugins/excel/xlsx-read-drawing.c
index 42e056e..dee5041 100644
--- a/plugins/excel/xlsx-read-drawing.c
+++ b/plugins/excel/xlsx-read-drawing.c
@@ -406,7 +406,7 @@ GSF_XML_IN_NODE_FULL (START, USER_SHAPES, XL_NS_CHART, "userShapes", GSF_XML_NO_
GSF_XML_IN_NODE (SHAPE, TX_BODY, XL_NS_CHART_DRAW, "txBody", GSF_XML_NO_CONTENT,
&xlsx_chart_text_start, &xlsx_chart_text),
GSF_XML_IN_NODE (TX_BODY, LST_STYLE, XL_NS_DRAW, "lstStyle", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (LST_STYLE, DEF_P_PR, XL_NS_DRAW, "defPPr", GSF_XML_NO_CONTENT, NULL, NULL),
- GSF_XML_IN_NODE (LST_STYLE, EXT_LST, XL_NS_DRAW, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
+ GSF_XML_IN_NODE (LST_STYLE, EXTLST, XL_NS_DRAW, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (LST_STYLE, LVL1_P_PR, XL_NS_DRAW, "lvl1pPr", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (LVL1_P_PR, DEF_R_PR, XL_NS_DRAW, "defRPr", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (DEF_R_PR, CS, XL_NS_DRAW, "cs", GSF_XML_NO_CONTENT, NULL, NULL),
@@ -1679,7 +1679,7 @@ xlsx_chart_solid_fill_end (GsfXMLIn *xin, G_GNUC_UNUSED GsfXMLBlob *blob)
}
static void
-xlsx_chart_patt_fill (GsfXMLIn *xin, G_GNUC_UNUSED xmlChar const **attrs)
+xlsx_chart_patt_fill (GsfXMLIn *xin, xmlChar const **attrs)
{
XLSXReadState *state = (XLSXReadState *)xin->user_state;
static EnumVal const patterns[] = {
@@ -1769,6 +1769,43 @@ xlsx_chart_patt_fill_clr_end (GsfXMLIn *xin, G_GNUC_UNUSED GsfXMLBlob *blob)
}
static void
+xlsx_chart_line_headtail (GsfXMLIn *xin, xmlChar const **attrs)
+{
+ XLSXReadState *state = (XLSXReadState *)xin->user_state;
+ gboolean is_tail = xin->node->user_data.v_int;
+
+ static EnumVal const types[] = {
+ { "arrow", GO_ARROW_KITE },
+ { "diamond", GO_ARROW_KITE },
+ { "none", GO_ARROW_NONE },
+ { "oval", GO_ARROW_OVAL },
+ { "stealth", GO_ARROW_KITE },
+ { "triangle", GO_ARROW_KITE },
+ { NULL, 0 }
+ };
+ int typ = GO_ARROW_NONE;
+ double a = 8, b = 10, c = 3;
+
+ for (; attrs != NULL && attrs[0] && attrs[1] ; attrs += 2) {
+ if (attr_enum (xin, attrs, "type", types, &typ)) {
+ /* Nothing */
+ }
+ }
+
+ if (IS_GNM_SO_LINE (state->so)) {
+ GOArrow arrow;
+ arrow.typ = typ;
+ arrow.a = a;
+ arrow.b = b;
+ arrow.c = c;
+ g_object_set (state->so,
+ (is_tail ? "end-arrow" : "start-arrow"), &arrow,
+ NULL);
+ }
+}
+
+
+static void
color_set_helper (XLSXReadState *state)
{
#ifdef DEBUG_COLOR
@@ -2925,8 +2962,8 @@ GSF_XML_IN_NODE_FULL (START, DRAWING, XL_NS_SS_DRAW, "wsDr", GSF_XML_NO_CONTENT,
GSF_XML_IN_NODE (SHAPE_PR_LN, LN_FILL_PATT, XL_NS_DRAW, "pattFill", GSF_XML_NO_CONTENT,
NULL, NULL),
GSF_XML_IN_NODE (SHAPE_PR_LN, LN_MITER, XL_NS_DRAW, "miter", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (SHAPE_PR_LN, LN_ROUND, XL_NS_DRAW, "round", GSF_XML_NO_CONTENT, NULL, NULL),
- GSF_XML_IN_NODE (SHAPE_PR_LN, LN_HEAD, XL_NS_DRAW, "headEnd", GSF_XML_NO_CONTENT, NULL,
NULL),
- GSF_XML_IN_NODE (SHAPE_PR_LN, LN_TAIL, XL_NS_DRAW, "tailEnd", GSF_XML_NO_CONTENT, NULL,
NULL),
+ GSF_XML_IN_NODE_FULL (SHAPE_PR_LN, LN_HEAD, XL_NS_DRAW, "headEnd", GSF_XML_NO_CONTENT,
FALSE, TRUE, &xlsx_chart_line_headtail, NULL, FALSE),
+ GSF_XML_IN_NODE_FULL (SHAPE_PR_LN, LN_TAIL, XL_NS_DRAW, "tailEnd", GSF_XML_NO_CONTENT,
FALSE, TRUE, &xlsx_chart_line_headtail, NULL, TRUE),
GSF_XML_IN_NODE (SP_PR_XFRM, CHILD_OFF, XL_NS_DRAW, "chOff", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (SP_PR_XFRM, CHILD_EXT, XL_NS_DRAW, "chExt", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (SHAPE_PR, SP_FILL_NONE, XL_NS_DRAW, "noFill", GSF_XML_NO_CONTENT, NULL, NULL),
@@ -2993,7 +3030,7 @@ GSF_XML_IN_NODE_FULL (START, DRAWING, XL_NS_SS_DRAW, "wsDr", GSF_XML_NO_CONTENT,
GSF_XML_IN_NODE (CXN_SP, SHAPE_PR, XL_NS_SS_DRAW, "spPr", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (CXN_SP, SP_XFRM_STYLE, XL_NS_SS_DRAW, "style", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (SHAPE_PR, SP_PR_PRST_GEOM, XL_NS_DRAW, "prstGeom", GSF_XML_NO_CONTENT, NULL, NULL),
- GSF_XML_IN_NODE (SHAPE_PR, EXT_LST, XL_NS_DRAW, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
+ GSF_XML_IN_NODE (SHAPE_PR, EXTLST, XL_NS_DRAW, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (EXTLST, EXTITEM, XL_NS_DRAW, "ext", GSF_XML_NO_CONTENT, &xlsx_ext_begin, NULL),
GSF_XML_IN_NODE (SHAPE, TX_BODY, XL_NS_SS_DRAW, "txBody", GSF_XML_NO_CONTENT, &xlsx_chart_text_start,
&xlsx_chart_text),
@@ -3047,7 +3084,6 @@ GSF_XML_IN_NODE_FULL (START, DRAWING, XL_NS_SS_DRAW, "wsDr", GSF_XML_NO_CONTENT,
GSF_XML_IN_NODE (PICTURE, PIC_FILL_BLIP, XL_NS_SS_DRAW, "blipFill", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (PIC_FILL_BLIP, BLIP, XL_NS_DRAW, "blip", GSF_XML_NO_CONTENT, &xlsx_blip_start,
NULL),
GSF_XML_IN_NODE (BLIP, EXTLST, XL_NS_DRAW, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
- GSF_XML_IN_NODE (EXTLST, EXTITEM, XL_NS_DRAW, "ext", GSF_XML_NO_CONTENT, &xlsx_ext_begin, NULL),
GSF_XML_IN_NODE (PIC_FILL_BLIP, BLIP_STRETCH, XL_NS_DRAW, "stretch", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (BLIP_STRETCH, BLIP_FILL_RECT, XL_NS_DRAW, "fillRect", GSF_XML_NO_CONTENT, NULL,
NULL),
GSF_XML_IN_NODE (PIC_FILL_BLIP, BLIP_SRC_RECT, XL_NS_DRAW, "srcRect", GSF_XML_NO_CONTENT, NULL,
NULL),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]