From 611b8db1a0eb07b892da8d69fc5fb29f811eb742 Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Sat, 20 Apr 2013 20:26:11 +0200 Subject: minor odg export update (bzr r12285.1.1) --- src/extension/internal/odf.cpp | 69 ++++++++++++++++++++---------------------- src/extension/internal/odf.h | 2 +- 2 files changed, 33 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/extension/internal/odf.cpp b/src/extension/internal/odf.cpp index 70798099d..b23378fc3 100644 --- a/src/extension/internal/odf.cpp +++ b/src/extension/internal/odf.cpp @@ -47,7 +47,7 @@ #include #include #include - +#include //# Inkscape includes #include "clear-n_.h" @@ -1315,8 +1315,9 @@ writePath(Writer &outs, Geom::PathVector const &pathv, return nrPoints; } -bool OdfOutput::processStyle(Writer &outs, SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke) +bool OdfOutput::processStyle(SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke, Glib::ustring& output) { + output.clear(); if (!item) { return false; @@ -1408,37 +1409,34 @@ bool OdfOutput::processStyle(Writer &outs, SPItem *item, const Glib::ustring &id styleTable.push_back(si); styleLookupTable[id] = styleName; - Glib::ustring tmpstring = Glib::ustring::compose ("\n", si.name); - tmpstring += "\n", si.name); + output += "y1.value; gi.x2 = linGrad->x2.value; gi.y2 = linGrad->y2.value; + gradientName2 = Glib::ustring::compose("ImportedLinearGradient%1", gradientTable.size()); } else if (SP_IS_RADIALGRADIENT(gradient)) { gi.style = "radial"; SPRadialGradient *radGrad = SP_RADIALGRADIENT(gradient); - SPRadialGradient tmpGrad = *radGrad; - tmpGrad.cx.unit= SVGLength::PERCENT; - tmpGrad.cy.unit= SVGLength::PERCENT; - gi.cx = tmpGrad.cx.computed;// * 100.0;//ODG cx is percentages - gi.cy = tmpGrad.cy.computed;// * 100.0; + Geom::OptRect bbox = item->documentVisualBounds(); + gi.cx = (radGrad->cx.value-bbox->left())/bbox->width(); + gi.cy = (radGrad->cy.value-bbox->top())/bbox->height(); + gradientName2 = Glib::ustring::compose("ImportedRadialGradient%1", gradientTable.size()); } else { @@ -1529,7 +1528,7 @@ bool OdfOutput::processGradient(SPItem *item, } // No match, let us write a new entry - gradientName = Glib::ustring::compose("gradient%1", gradientTable.size()); + gradientName = gradientName2; gi.name = gradientName; gradientTable.push_back(gi); gradientLookupTable[id] = gradientName; @@ -1555,12 +1554,17 @@ bool OdfOutput::processGradient(SPItem *item, return false; } output += Glib::ustring::compose("\n", - gi.stops[0].opacity * 100.0, gi.stops[1].opacity * 100.0);// draw:border=\"0%%\" + //TODO: apply maths, to define begin of gradient, taking gradient begin and end, as well as object boundary into account + double angle = (gi.y2-gi.y1); + angle = (angle != 0.) ? (atan((gi.x2-gi.x1)/(gi.y2-gi.y1))* 180. / pi) : 90; + angle = (angle < 0)?(180+angle):angle; + angle = angle * 10; //why do we need this: precision????????????? + output += Glib::ustring::compose(" draw:start-intensity=\"%1\" draw:end-intensity=\"%2\" draw:angle=\"%3\"/>\n", + gi.stops[0].opacity * 100.0, gi.stops[1].opacity * 100.0, angle);// draw:border=\"0%%\" } else if (gi.style == "radial") { @@ -1581,8 +1585,8 @@ bool OdfOutput::processGradient(SPItem *item, g_warning("Need at least 2 stops for a radial gradient"); return false; } - output += Glib::ustring::compose("second; couts.printf("draw:style-name=\"%s\" ", styleName.c_str()); } - // couts.writeUString(styleString); - - // std::map::iterator giter; - // giter = gradientLookupTable.find(id); - // if (giter != gradientLookupTable.end()) - // { - // Glib::ustring gradientName = giter->second; - // couts.printf("draw:fill-gradient-name=\"%s\" ", - // gradientName.c_str()); - // } couts.printf("draw:layer=\"layout\" svg:x=\"%.3fcm\" svg:y=\"%.3fcm\" ", bbox_x, bbox_y); diff --git a/src/extension/internal/odf.h b/src/extension/internal/odf.h index 7dfbf9786..6b915e347 100644 --- a/src/extension/internal/odf.h +++ b/src/extension/internal/odf.h @@ -313,7 +313,7 @@ private: bool writeStyle(ZipFile &zf); - bool processStyle(Writer &outs, SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke); + bool processStyle(SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke, Glib::ustring& output); bool processGradient(SPItem *item, const Glib::ustring &id, Geom::Affine &tf, Glib::ustring& gradientName, Glib::ustring& output, bool checkFillGradient = 1); -- cgit v1.2.3 From e042b14d47a3a32a4c5db204f7aff26183587161 Mon Sep 17 00:00:00 2001 From: Alvin Penner Date: Sat, 20 Apr 2013 16:50:02 -0400 Subject: Group bbox update (Bug 1168979) Fixed bugs: - https://launchpad.net/bugs/1168979 (bzr r12285.1.2) --- src/selection-chemistry.cpp | 1 + src/ui/dialog/xml-tree.cpp | 1 + 2 files changed, 2 insertions(+) (limited to 'src') diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 41ebc9bfc..fc410897a 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -360,6 +360,7 @@ void sp_selection_delete(SPDesktop *desktop) selection->clear(); sp_selection_delete_impl(selected); g_slist_free(const_cast(selected)); + reinterpret_cast(desktop->currentLayer())->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); /* a tool may have set up private information in it's selection context * that depends on desktop items. I think the only sane way to deal with diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 29dbc4b93..a537b7fca 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -986,6 +986,7 @@ void XmlTree::cmd_delete_node() g_assert(selected_repr != NULL); sp_repr_unparent(selected_repr); + reinterpret_cast(current_desktop->currentLayer())->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); DocumentUndo::done(current_document, SP_VERB_DIALOG_XML_EDITOR, Q_("nodeAsInXMLinHistoryDialog|Delete node")); } -- cgit v1.2.3