X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fextension%2Finternal%2Fodf.h;h=9ad2610989b6da0dfa60856ba91084c2a9f5ecef;hb=9dc68827cbd515262ecb8d5ae8547d9e82c72e00;hp=a9f9508a92fa339506f8ac9372cd5ad11c1c96da;hpb=3213941c5ce5354e2e91184d5473294fa05e68d8;p=inkscape.git diff --git a/src/extension/internal/odf.h b/src/extension/internal/odf.h index a9f9508a9..9ad261098 100644 --- a/src/extension/internal/odf.h +++ b/src/extension/internal/odf.h @@ -11,6 +11,7 @@ * * Authors: * Bob Jamison + * Abhishek Sharma * * Copyright (C) 2006 Bob Jamison * @@ -36,7 +37,7 @@ #include #include -#include +#include #include "extension/implementation/implementation.h" @@ -47,7 +48,7 @@ #include #include - +#include "sp-item.h" namespace Inkscape { @@ -123,18 +124,44 @@ 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 GradientStop +{ +public: + GradientStop() + {} + GradientStop(unsigned long rgbArg, double opacityArg) + { rgb = rgbArg; opacity = opacityArg; } + virtual ~GradientStop() + {} + GradientStop(const GradientStop &other) + { assign(other); } + virtual GradientStop operator=(const GradientStop &other) + { assign(other); return *this; } + void assign(const GradientStop &other) + { + rgb = other.rgb; + opacity = other.opacity; + } + unsigned long rgb; + double opacity; }; + class GradientInfo { public: @@ -168,6 +195,7 @@ public: y1 = other.y1; x2 = other.x2; y2 = other.y2; + stops = other.stops; } void init() @@ -183,6 +211,7 @@ public: y1 = 0.0; x2 = 0.0; y2 = 0.0; + stops.clear(); } virtual ~GradientInfo() @@ -205,11 +234,22 @@ public: y2 != other.y2 ) return false; + if (stops.size() != other.stops.size()) + return false; + for (unsigned int i=0 ; i stops; }; @@ -233,7 +274,7 @@ public: void save (Inkscape::Extension::Output *mod, SPDocument *doc, - const gchar *uri); + gchar const *filename); static void init (void); @@ -244,7 +285,7 @@ private: void reset(); //cc or dc metadata name/value pairs - std::map metadata; + std::map metadata; /* Style table Uses a two-stage lookup to avoid style duplication. @@ -253,17 +294,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; + 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); @@ -271,9 +312,22 @@ private: bool writeMeta(ZipFile &zf); - bool writeStyle(Writer &outs); + bool writeStyle(ZipFile &zf); + + bool processStyle(Writer &outs, SPItem *item, const Glib::ustring &id); + + bool processGradient(Writer &outs, SPItem *item, + const Glib::ustring &id, Geom::Matrix &tf); + + bool writeStyleHeader(Writer &outs); + + bool writeStyleFooter(Writer &outs); + + bool writeContentHeader(Writer &outs); + + bool writeContentFooter(Writer &outs); - bool writeTree(Writer &outs, Inkscape::XML::Node *node); + bool writeTree(Writer &couts, Writer &souts, Inkscape::XML::Node *node); bool writeContent(ZipFile &zf, Inkscape::XML::Node *node);