[gnumeric] write correct viewbox when exporting custom shapes to ODF



commit 514ee6c3e1dbf3dc5b3847fd5fe72bad699c2f72
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Thu Jul 18 11:07:54 2013 -0600

    write correct viewbox when exporting custom shapes to ODF
    
    2013-07-18  Andreas J. Guelzow <aguelzow pyrshep ca>
    
        * src/gnm-so-path.c (gnm_so_path_class_init): add new property
        (gnm_so_path_set_property): ditto
        (gnm_so_path_get_property): ditto
    
    2013-07-18  Andreas J. Guelzow <aguelzow pyrshep ca>
    
        * openoffice-write.c (odf_write_custom_shape): write teh correct
        viewbox

 ChangeLog                             |    6 ++++++
 plugins/openoffice/ChangeLog          |    5 +++++
 plugins/openoffice/openoffice-write.c |   11 +++++------
 src/gnm-so-path.c                     |   19 ++++++++++++++++---
 4 files changed, 32 insertions(+), 9 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index efd04ef..23bd596 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-07-18  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+       * src/gnm-so-path.c (gnm_so_path_class_init): add new property
+       (gnm_so_path_set_property): ditto
+       (gnm_so_path_get_property): ditto
+
 2013-07-18  Jean Brefort  <jean brefort normalesup org>
 
        * src/gnm-so-path.c (so_path_view_set_bounds),
diff --git a/plugins/openoffice/ChangeLog b/plugins/openoffice/ChangeLog
index 367b656..83c1973 100644
--- a/plugins/openoffice/ChangeLog
+++ b/plugins/openoffice/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-18  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+       * openoffice-write.c (odf_write_custom_shape): write teh correct
+       viewbox
+
 2013-07-17  Andreas J. Guelzow <aguelzow pyrshep ca>
 
        * openoffice-write.c (odf_write_sheet_object_styles): write object
diff --git a/plugins/openoffice/openoffice-write.c b/plugins/openoffice/openoffice-write.c
index cb8ba6f..c6081a6 100644
--- a/plugins/openoffice/openoffice-write.c
+++ b/plugins/openoffice/openoffice-write.c
@@ -3005,10 +3005,6 @@ odf_write_frame (GnmOOExport *state, SheetObject *so)
        gsf_xml_out_end_element (state->xml); /*  DRAW "frame" */
 }
 
-/*
-<draw:enhanced-geometry svg:viewBox="0 0 21600 21600" draw:type="mso-spt202" draw:enhanced-path="M 0 0 L 
21600 0 21600 21600 0 21600 0 0 Z N"/>
-*/
-
 static void
 custom_shape_path_collector (GOPath *path, GString *gstr)
 {
@@ -3029,8 +3025,10 @@ odf_write_custom_shape (GnmOOExport *state, SheetObject *so)
        GOPath *path = NULL;
        GPtrArray *paths;
        char *path_string = NULL;
+       char *view_box = NULL;
 
-       g_object_get (G_OBJECT (so), "text", &text, "markup", &markup, "path", &path, "paths", &paths, NULL);
+       g_object_get (G_OBJECT (so), "text", &text, "markup", &markup, "path", &path, 
+                     "paths", &paths, "viewbox", &view_box, NULL);
 
        gsf_xml_out_start_element (state->xml, DRAW "custom-shape");
 
@@ -3058,7 +3056,7 @@ odf_write_custom_shape (GnmOOExport *state, SheetObject *so)
        }
        if (path_string) {
                gsf_xml_out_start_element (state->xml, DRAW "enhanced-geometry");
-               gsf_xml_out_add_cstr (state->xml, SVG "viewBox", "0 0 21600 21600");
+               gsf_xml_out_add_cstr (state->xml, SVG "viewBox", view_box);
                gsf_xml_out_add_cstr (state->xml, DRAW "enhanced-path", path_string);
                gsf_xml_out_end_element (state->xml); /*  DRAW "enhanced-geometry" */
        }
@@ -3066,6 +3064,7 @@ odf_write_custom_shape (GnmOOExport *state, SheetObject *so)
 
        g_free (text);
        g_free (path_string);
+       g_free (view_box);
        if (markup)
                pango_attr_list_unref (markup);
        if (paths)
diff --git a/src/gnm-so-path.c b/src/gnm-so-path.c
index b875753..a683fda 100644
--- a/src/gnm-so-path.c
+++ b/src/gnm-so-path.c
@@ -1,3 +1,4 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gnm-so-path.c
  *
@@ -159,7 +160,8 @@ enum {
        SOP_PROP_PATH,
        SOP_PROP_TEXT,
        SOP_PROP_MARKUP,
-       SOP_PROP_PATHS
+       SOP_PROP_PATHS,
+       SOP_PROP_VIEWBOX
 };
 
 
@@ -357,7 +359,7 @@ gnm_so_path_draw_cairo (SheetObject const *so, cairo_t *cr,
 
 static void
 gnm_so_path_write_xml_sax (SheetObject const *so, GsfXMLOut *output,
-                            GnmConventions const *convs)
+                          G_GNUC_UNUSED GnmConventions const *convs)
 {
        GnmSOPath const *sop = GNM_SO_PATH (so);
        char *svg;
@@ -424,7 +426,7 @@ sop_sax_style (GsfXMLIn *xin, xmlChar const **attrs)
 static void
 gnm_so_path_prep_sax_parser (SheetObject *so, GsfXMLIn *xin,
                               xmlChar const **attrs,
-                              GnmConventions const *convs)
+                              G_GNUC_UNUSED GnmConventions const *convs)
 {
        static GsfXMLInNode const dtd[] = {
          GSF_XML_IN_NODE (SOPATH, SOPATH, -1, "SheetObjectPath",       GSF_XML_NO_CONTENT, NULL, NULL),
@@ -573,6 +575,8 @@ gnm_so_path_set_property (GObject *obj, guint param_id,
                        pango_attr_list_ref (sop->markup);
                break;
 
+       case SOP_PROP_VIEWBOX:
+               /* not settable */
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
                return;
@@ -600,6 +604,12 @@ gnm_so_path_get_property (GObject *obj, guint param_id,
        case SOP_PROP_MARKUP :
                g_value_set_boxed (value, sop->markup);
                break;
+       case SOP_PROP_VIEWBOX :
+               g_value_take_string 
+                       (value, 
+                        g_strdup_printf ("%0.0f %0.0f %0.0f %0.0f", sop->x_offset, sop->y_offset, 
+                                         sop->width + sop->x_offset, sop->height + sop->y_offset));
+               break;          
        default :
                G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
                break;
@@ -666,6 +676,9 @@ gnm_so_path_class_init (GObjectClass *gobject_class)
     g_object_class_install_property (gobject_class, SOP_PROP_PATHS,
              g_param_spec_boxed ("paths", NULL, NULL, G_TYPE_PTR_ARRAY,
                GSF_PARAM_STATIC | G_PARAM_READWRITE));
+    g_object_class_install_property (gobject_class, SOP_PROP_VIEWBOX,
+             g_param_spec_string ("viewbox", NULL, NULL, NULL,
+               GSF_PARAM_STATIC | G_PARAM_READABLE));
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]