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 /***************************************************************************
8 							 -------------------
9 	begin                : Sat Okt 03 2015
10 	copyright            : (C) 2015 by Franz Schmid
11 	email                : Franz.Schmid@altmuehlnet.de
12  ***************************************************************************/
13 #ifndef SLADOCUMENTRTFOUTPUT_H
14 #define SLADOCUMENTRTFOUTPUT_H
15 
16 #include <QTextCodec>
17 #include "AbstractRtfOutput.h"
18 #include "styles/charstyle.h"
19 #include "styles/paragraphstyle.h"
20 
21 class QImage;
22 class QTextImageFormat;
23 class QString;
24 class QColor;
25 class PageItem;
26 class ScribusDoc;
27 class ParagraphStyle;
28 class CharStyle;
29 
30 namespace RtfReader
31 {
32 	class SlaDocumentRtfOutput : public AbstractRtfOutput
33 	{
34 	public:
35 		explicit SlaDocumentRtfOutput(PageItem* ite, ScribusDoc* doc, bool prefix);
36 		virtual ~SlaDocumentRtfOutput();
37 		virtual void startGroup();
38 		virtual void endGroup();
39 		virtual void setEncoding(const int enc);
40 		virtual void appendText(const QByteArray &text);
41 		virtual void appendUnicodeText(const QString &text);
42 		virtual void insertPar();
43 		virtual void insertTab();
44 		virtual void insertLeftQuote();
45 		virtual void insertRightQuote();
46 		virtual void insertLeftDoubleQuote();
47 		virtual void insertRightDoubleQuote();
48 		virtual void insertEnDash();
49 		virtual void insertEmDash();
50 		virtual void insertEnSpace();
51 		virtual void insertEmSpace();
52 		virtual void insertBullet();
53 		virtual void insertNewLine();
54 		virtual void setFontItalic(const int value);
55 		virtual void setFontBold(const int value);
56 		virtual void setFontUnderline(const int value);
57 		virtual void setFontWordUnderline(const int value);
58 		virtual void setFontOutline(const int value);
59 		virtual void setFontShadow(const int value);
60 		virtual void setFontSmallCaps(const int value);
61 		virtual void setFontCaps(const int value);
62 		virtual void setFontStrikeOut(const int value);
63 		virtual void setFontScaleH(const int value);
64 		virtual void setFontOffset(const int value);
65 		virtual void setFontStretch(const int value);
66 		virtual void setFontStretchTw(const int value);
67 		virtual void setFontPointSize(const int pointSize);
68 		virtual void setFontLineSpacing(const int value);
69 		virtual void setForegroundColour(const int colourIndex);
70 		virtual void setHighlightColour(const int colourIndex);
71 		virtual void setParagraphPatternBackgroundColour(const int colourIndex);
72 		virtual void setCharacterPatternBackgroundColour(const int colourIndex);
73 		virtual void setFont(const int fontIndex);
74 		virtual void setDefaultFont(const int fontIndex);
75 		virtual void setFontSuperscript();
76 		virtual void setFontSubscript();
77 		virtual void setTextDirectionLeftToRight();
78 		virtual void setTextDirectionRightToLeft();
79 		virtual void appendToColourTable(const QColor &colour);
80 		virtual void insertFontTableEntry(FontTableEntry fontTableEntry, quint32 fontTableIndex);
81 		virtual void insertStyleSheetTableEntry(quint32 stylesheetTableIndex, const ParagraphStyle& stylesheetTableEntry);
82 		virtual void resolveStyleSheetParents(QHash<quint32, int> &parentSet);
83 		virtual void useStyleSheetTableEntry(const int styleIndex);
84 		virtual void resetParagraphFormat();
85 		virtual void resetCharacterProperties();
86 		virtual void setParagraphAlignmentLeft();
87 		virtual void setParagraphAlignmentCentred();
88 		virtual void setParagraphAlignmentJustified();
89 		virtual void setParagraphAlignmentRight();
90 		virtual void setFirstLineIndent(const int twips);
91 		virtual void setLeftIndent(const int twips);
92 		virtual void setRightIndent(const int twips);
93 		virtual void createImage(const QByteArray &image, int width, int height, int type);
94 		virtual void setPageHeight(const int pageHeight);
95 		virtual void setPageWidth(const int pageWidth);
96 		virtual void setSpaceBefore(const int twips);
97 		virtual void setSpaceAfter(const int twips);
98 		virtual void keepWithNext();
99 		virtual void setDropCapsLines(const int value);
100 		virtual void setDropCaps();
101 		virtual void addTabStop(const int value, const int type);
102 		QString getFontName(const QString& name);
103 		double pixelsFromTwips(const int twips);
getCurrentCodec()104 		virtual QTextCodec *getCurrentCodec() { return m_codec; }
105 	private:
106 		PageItem* m_item;
107 		ScribusDoc* m_Doc;
108 		QTextCodec *m_codec;
109 		QStack<ParagraphStyle> m_textStyle;
110 		QStack<CharStyle> m_textCharStyle;
111 		QList<QString> m_colourTable;
112 		QHash<int, FontTableEntry> m_fontTable;
113 		QHash<int, FontTableEntry> m_fontTableReal;
114 		QHash<int, ParagraphStyle> m_stylesTable;
115 		QList<QByteArray> m_codecList;
116 		bool m_keepn;
117 		bool m_isBold;
118 		bool m_isItalic;
119 		bool m_prefixName;
120 	};
121 }
122 #endif // SLADOCUMENTRTFOUTPUT_H
123