Scribus
Open source desktop publishing at your fingertips
svgexplugin.h
1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 #ifndef SVGPLUG_H
8 #define SVGPLUG_H
9 
10 #include <QObject>
11 #include <QDomElement>
12 #include "pluginapi.h"
13 #include "loadsaveplugin.h"
14 #include "tableborder.h"
15 
16 class QString;
17 class ScLayer;
18 class ScribusDoc;
19 class ScribusMainWindow;
20 class PageItem;
21 class ScPage;
22 class ScText;
23 
24 struct SVGOptions
25 {
26  bool inlineImages;
27  bool exportPageBackground;
28  bool compressFile;
29 };
30 
31 class PLUGIN_API SVGExportPlugin : public ScActionPlugin
32 {
33  Q_OBJECT
34 
35 public:
36  // Standard plugin implementation
38  virtual ~SVGExportPlugin();
45  virtual bool run(ScribusDoc* doc=0, QString filename = QString::null);
46  virtual const QString fullTrName() const;
47  virtual const AboutData* getAboutData() const;
48  virtual void deleteAboutData(const AboutData* about) const;
49  virtual void languageChange();
51 
52  // Special features (none)
53 };
54 
55 extern "C" PLUGIN_API int svgexplugin_getPluginAPIVersion();
56 extern "C" PLUGIN_API ScPlugin* svgexplugin_getPlugin();
57 extern "C" PLUGIN_API void svgexplugin_freePlugin(ScPlugin* plugin);
58 
59 class SVGExPlug : public QObject
60 {
61  Q_OBJECT
62 
63 public:
69  SVGExPlug( ScribusDoc* doc );
70  ~SVGExPlug();
71 
72  bool doExport( QString fName, SVGOptions &Opts );
73  SVGOptions Options;
74 
75 private:
76  ScribusDoc* m_Doc;
82  void ProcessPageLayer(ScPage *page, ScLayer& layer);
83  void ProcessItemOnPage(double xOffset, double yOffset, PageItem *Item, QDomElement *parentElem);
84  void paintBorder(const TableBorder& border, const QPointF& start, const QPointF& end, const QPointF& startOffsetFactors, const QPointF& endOffsetFactors, QDomElement &ob);
85  QString processDropShadow(PageItem *Item);
86  QDomElement processHatchFill(PageItem *Item, QString transl = "");
87  QDomElement processSymbolStroke(PageItem *Item, QString trans);
88  QDomElement processSymbolItem(PageItem *Item, QString trans);
89  QDomElement processPolyItem(PageItem *Item, QString trans, QString fill, QString stroke);
90  QDomElement processLineItem(PageItem *Item, QString trans, QString stroke);
91  QDomElement processImageItem(PageItem *Item, QString trans, QString fill, QString stroke);
92  QDomElement processTextItem(PageItem *Item, QString trans, QString fill, QString stroke);
93  QDomElement processPathTextItem(PageItem *Item, QString trans, QString stroke);
94  QDomElement processInlineItem(double xpos, double ypos, QTransform &finalMat, PageItem* embItem, const CharStyle& cStyle, bool pathT, QString trans);
95  QString handleGlyph(uint chr, const CharStyle& cStyle);
96  QDomElement processArrows(PageItem *Item, QDomElement line, QString trans);
97  QString handleMask(PageItem *Item, double xOffset, double yOffset);
98  QString getFillStyle(PageItem *Item);
99  QString getStrokeStyle(PageItem *Item);
100  void writeBasePatterns();
101  void writeBaseSymbols();
107  QString SetClipPath(FPointArray *ite, bool closed);
108  QDomElement createClipPathElement(FPointArray *ite, QDomElement* pathElem = 0);
115  QString FToStr(double c);
122  QString IToStr(int c);
130  QString MatrixToStr(QTransform &mat);
131  QString SetColor(QString farbe, int shad);
138  QString GetMultiStroke(struct SingleLine *sl, PageItem *Item);
139  int GradCount;
140  int ClipCount;
141  int PattCount;
142  int MaskCount;
143  int FilterCount;
144  QString baseDir;
145  QDomDocument docu;
146  QDomElement docElement;
147  QDomElement globalDefs;
148  QList<QString> glyphNames;
149 };
150 
151 #endif
virtual void addToMainWindowMenu(ScribusMainWindow *)
Allow plugins to add to a main menu.
Definition: svgexplugin.h:50
A plug-in that performs a single action.
Definition: scplugin.h:248
Definition: charstyle.h:78
virtual const QString fullTrName() const =0
Plug-in's human-readable, translated name.
Definition: scribusstructs.h:120
Abstract super class for all Scribus plug-ins.
Definition: scplugin.h:90
Definition: sctextstruct.h:109
Definition: scpage.h:46
This Class is the base class for your application. It sets up the main window and providing a menubar...
Definition: scribus.h:123
virtual bool run(ScribusDoc *doc, QString target=QString::null)=0
Run the plug-in's main action.
Definition: tableborder.h:86
virtual void languageChange()=0
Update all user-visible text to reflect current UI language.
Definition: svgexplugin.h:59
the Document Class
Definition: scribusdoc.h:90
SVGExPlug(ScribusDoc *doc)
Create the SVG exporter window.
Definition: svgexplugin.cpp:188
ScPlugin provides an interface to ask plugins for information about themselves.
Definition: scplugin.h:103
Definition: sclayer.h:17
Definition: svgexplugin.h:31
virtual const AboutData * getAboutData() const =0
Return descriptive information about the plug-in.
Definition: pageitem.h:92
Definition: fpointarray.h:42
Definition: svgexplugin.h:24