X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fextension%2Finternal%2Fodf.h;h=d715c3702b8d8af2bbda5413478ec20d80f22c3a;hb=264a29ab91d00e9fecb04121498afb6f642805c8;hp=437148873615e816923ea1e9ff16849acd29026d;hpb=8b430c9d872be5011a181694eac0de7a5328b45c;p=inkscape.git diff --git a/src/extension/internal/odf.h b/src/extension/internal/odf.h index 437148873..d715c3702 100644 --- a/src/extension/internal/odf.h +++ b/src/extension/internal/odf.h @@ -34,8 +34,9 @@ #include #include +#include -#include +#include #include "extension/implementation/implementation.h" @@ -47,7 +48,6 @@ #include #include -typedef org::w3c::dom::io::Writer Writer; namespace Inkscape { @@ -56,6 +56,8 @@ namespace Extension namespace Internal { +typedef org::w3c::dom::URI URI; +typedef org::w3c::dom::io::Writer Writer; class StyleInfo @@ -121,14 +123,102 @@ public: return true; } - std::string name; - std::string stroke; - std::string strokeColor; - std::string strokeWidth; - std::string strokeOpacity; - std::string fill; - std::string fillColor; - std::string fillOpacity; + Glib::ustring name; + Glib::ustring stroke; + Glib::ustring strokeColor; + Glib::ustring strokeWidth; + Glib::ustring strokeOpacity; + Glib::ustring fill; + Glib::ustring fillColor; + Glib::ustring fillOpacity; + +}; + + +class GradientInfo +{ +public: + + GradientInfo() + { + init(); + } + + GradientInfo(const GradientInfo &other) + { + assign(other); + } + + GradientInfo &operator=(const GradientInfo &other) + { + assign(other); + return *this; + } + + void assign(const GradientInfo &other) + { + name = other.name; + style = other.style; + cx = other.cx; + cy = other.cy; + fx = other.fx; + fy = other.fy; + r = other.r; + x1 = other.x1; + y1 = other.y1; + x2 = other.x2; + y2 = other.y2; + } + + void init() + { + name = "none"; + style = "none"; + cx = 0.0; + cy = 0.0; + fx = 0.0; + fy = 0.0; + r = 0.0; + x1 = 0.0; + y1 = 0.0; + x2 = 0.0; + y2 = 0.0; + } + + virtual ~GradientInfo() + {} + + //used for eliminating duplicates in the styleTable + bool equals(const GradientInfo &other) + { + if ( + name != other.name || + style != other.style || + cx != other.cx || + cy != other.cy || + fx != other.fx || + fy != other.fy || + r != other.r || + x1 != other.x1 || + y1 != other.y1 || + x2 != other.x2 || + y2 != other.y2 + ) + return false; + return true; + } + + Glib::ustring name; + Glib::ustring style; + double cx; + double cy; + double fx; + double fy; + double r; + double x1; + double y1; + double x2; + double y2; }; @@ -149,6 +239,13 @@ public: private: + URI documentUri; + + void reset(); + + //cc or dc metadata name/value pairs + std::map metadata; + /* Style table Uses a two-stage lookup to avoid style duplication. Use like: @@ -156,12 +253,17 @@ private: but check for errors, of course */ //element id -> style entry name - std::map styleLookupTable; + std::map styleLookupTable; //style entry name -> style info std::vector styleTable; + //element id -> gradient entry name + std::map gradientLookupTable; + //gradient entry name -> gradient info + std::vector gradientTable; + //for renaming image file names - std::map imageTable; + std::map imageTable; void preprocess(ZipFile &zf, Inkscape::XML::Node *node);