X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fdocument.h;h=eb8710effb95ba29c73c1eab48bdcb7eecfd71a9;hp=76e3b7f68be899a222eac4ffd9bce9ff8a77f171;hb=888817a67a9d840be66b52811b01eb77f10ff3e6;hpb=f8aaf1972bd67344c23d5bbd2552daf6065f448d diff --git a/src/document.h b/src/document.h index 76e3b7f..eb8710e 100644 --- a/src/document.h +++ b/src/document.h @@ -4,6 +4,8 @@ #include "ipdf.h" #include "quadtree.h" +#include + #include "../contrib/pugixml-1.4/src/pugixml.hpp" #include "stb_truetype.h" @@ -27,7 +29,7 @@ namespace IPDF class Document { public: - Document(const std::string & filename = "", const std::string & font_filename = "DejaVuSansMono.ttf") : m_objects(), m_count(0), m_font_data(NULL), m_font() + Document(const std::string & filename = "", const std::string & font_filename = "fonts/DejaVuSansMono.ttf") : m_objects(), m_count(0), m_font_data(NULL), m_font() { Load(filename); if (font_filename != "") @@ -50,27 +52,29 @@ namespace IPDF bool operator==(const Document & equ) const; bool operator!=(const Document & equ) const {return !(this->operator==(equ));} - void Add(ObjectType type, const Rect & bounds, unsigned data_index = 0); + unsigned AddPath(unsigned start_index, unsigned end_index, const Colour & shading=Colour(0.6,0.6,0.6,1), const Colour & stroke=Colour(0,0,0,0)); + unsigned AddBezier(const Bezier & bezier); + unsigned Add(ObjectType type, const Rect & bounds, unsigned data_index = 0); unsigned AddBezierData(const Bezier & bezier); - + unsigned AddPathData(const Path & path); - - - - /** SVG Related functions **/ /** Load an SVG text file and add to the document **/ void LoadSVG(const std::string & filename, const Rect & bounds = Rect(0,0,1,1)); + void ParseSVG(const std::string & svg, const Rect & bounds = Rect(0,0,1,1)); /** Parse an SVG node or SVG-group node, adding children to the document **/ void ParseSVGNode(pugi::xml_node & root, SVGMatrix & transform); /** Parse an SVG path with string **/ - void ParseSVGPathData(const std::string & d, const SVGMatrix & transform); + std::pair ParseSVGPathData(const std::string & d, const SVGMatrix & transform, bool & closed); /** Modify an SVG transformation matrix **/ static void ParseSVGTransform(const std::string & s, SVGMatrix & transform); + + /** Extract CSS values (shudder) from style **/ + static void ParseSVGStyleData(const std::string & style, std::map & results); /** Font related functions **/ void SetFont(const std::string & font_filename);