|
1 /****************************************************************************** |
|
2 * |
|
3 * |
|
4 * |
|
5 * |
|
6 * Copyright (C) 1997-2008 by Dimitri van Heesch. |
|
7 * |
|
8 * Permission to use, copy, modify, and distribute this software and its |
|
9 * documentation under the terms of the GNU General Public License is hereby |
|
10 * granted. No representations are made about the suitability of this software |
|
11 * for any purpose. It is provided "as is" without express or implied warranty. |
|
12 * See the GNU General Public License for more details. |
|
13 * |
|
14 * Documents produced by Doxygen are derivative works derived from the |
|
15 * input used in their production; they are not affected by this license. |
|
16 * |
|
17 */ |
|
18 |
|
19 #ifndef _RTFDOCVISITOR_H |
|
20 #define _RTFDOCVISITOR_H |
|
21 |
|
22 #include "docvisitor.h" |
|
23 #include <qstack.h> |
|
24 #include <qcstring.h> |
|
25 |
|
26 class QTextStream; |
|
27 class CodeOutputInterface; |
|
28 class QString; |
|
29 |
|
30 /*! @brief Concrete visitor implementation for RTF output. */ |
|
31 class RTFDocVisitor : public DocVisitor |
|
32 { |
|
33 public: |
|
34 RTFDocVisitor(QTextStream &t,CodeOutputInterface &ci,const char *langExt); |
|
35 |
|
36 //-------------------------------------- |
|
37 // visitor functions for leaf nodes |
|
38 //-------------------------------------- |
|
39 |
|
40 void visit(DocWord *); |
|
41 void visit(DocLinkedWord *); |
|
42 void visit(DocWhiteSpace *); |
|
43 void visit(DocSymbol *); |
|
44 void visit(DocURL *); |
|
45 void visit(DocLineBreak *); |
|
46 void visit(DocHorRuler *); |
|
47 void visit(DocStyleChange *); |
|
48 void visit(DocVerbatim *); |
|
49 void visit(DocAnchor *); |
|
50 void visit(DocInclude *); |
|
51 void visit(DocIncOperator *); |
|
52 void visit(DocFormula *); |
|
53 void visit(DocIndexEntry *); |
|
54 void visit(DocSimpleSectSep *); |
|
55 |
|
56 //-------------------------------------- |
|
57 // visitor functions for compound nodes |
|
58 //-------------------------------------- |
|
59 |
|
60 void visitPre(DocAutoList *); |
|
61 void visitPost(DocAutoList *); |
|
62 void visitPre(DocAutoListItem *); |
|
63 void visitPost(DocAutoListItem *); |
|
64 void visitPre(DocPara *); |
|
65 void visitPost(DocPara *); |
|
66 void visitPre(DocRoot *); |
|
67 void visitPost(DocRoot *); |
|
68 void visitPre(DocSimpleSect *); |
|
69 void visitPost(DocSimpleSect *); |
|
70 void visitPre(DocTitle *); |
|
71 void visitPost(DocTitle *); |
|
72 void visitPre(DocSimpleList *); |
|
73 void visitPost(DocSimpleList *); |
|
74 void visitPre(DocSimpleListItem *); |
|
75 void visitPost(DocSimpleListItem *); |
|
76 void visitPre(DocSection *s); |
|
77 void visitPost(DocSection *); |
|
78 void visitPre(DocHtmlList *s); |
|
79 void visitPost(DocHtmlList *s); |
|
80 void visitPre(DocHtmlListItem *); |
|
81 void visitPost(DocHtmlListItem *); |
|
82 //void visitPre(DocHtmlPre *); |
|
83 //void visitPost(DocHtmlPre *); |
|
84 void visitPre(DocHtmlDescList *); |
|
85 void visitPost(DocHtmlDescList *); |
|
86 void visitPre(DocHtmlDescTitle *); |
|
87 void visitPost(DocHtmlDescTitle *); |
|
88 void visitPre(DocHtmlDescData *); |
|
89 void visitPost(DocHtmlDescData *); |
|
90 void visitPre(DocHtmlTable *t); |
|
91 void visitPost(DocHtmlTable *t); |
|
92 void visitPre(DocHtmlCaption *); |
|
93 void visitPost(DocHtmlCaption *); |
|
94 void visitPre(DocHtmlRow *); |
|
95 void visitPost(DocHtmlRow *) ; |
|
96 void visitPre(DocHtmlCell *); |
|
97 void visitPost(DocHtmlCell *); |
|
98 void visitPre(DocInternal *); |
|
99 void visitPost(DocInternal *); |
|
100 void visitPre(DocHRef *); |
|
101 void visitPost(DocHRef *); |
|
102 void visitPre(DocHtmlHeader *); |
|
103 void visitPost(DocHtmlHeader *) ; |
|
104 void visitPre(DocImage *); |
|
105 void visitPost(DocImage *); |
|
106 void visitPre(DocDotFile *); |
|
107 void visitPost(DocDotFile *); |
|
108 void visitPre(DocLink *lnk); |
|
109 void visitPost(DocLink *); |
|
110 void visitPre(DocRef *ref); |
|
111 void visitPost(DocRef *); |
|
112 void visitPre(DocSecRefItem *); |
|
113 void visitPost(DocSecRefItem *); |
|
114 void visitPre(DocSecRefList *); |
|
115 void visitPost(DocSecRefList *); |
|
116 //void visitPre(DocLanguage *); |
|
117 //void visitPost(DocLanguage *); |
|
118 void visitPre(DocParamSect *); |
|
119 void visitPost(DocParamSect *); |
|
120 void visitPre(DocParamList *); |
|
121 void visitPost(DocParamList *); |
|
122 void visitPre(DocXRefItem *); |
|
123 void visitPost(DocXRefItem *); |
|
124 void visitPre(DocInternalRef *); |
|
125 void visitPost(DocInternalRef *); |
|
126 void visitPre(DocCopy *); |
|
127 void visitPost(DocCopy *); |
|
128 void visitPre(DocText *); |
|
129 void visitPost(DocText *); |
|
130 |
|
131 private: |
|
132 |
|
133 //-------------------------------------- |
|
134 // helper functions |
|
135 //-------------------------------------- |
|
136 |
|
137 void filter(const char *str,bool verbatim=FALSE); |
|
138 void startLink(const QString &ref,const QString &file, |
|
139 const QString &anchor); |
|
140 void endLink(const QString &ref); |
|
141 QString getStyle(const char *name); |
|
142 void incIndentLevel(); |
|
143 void decIndentLevel(); |
|
144 |
|
145 void pushEnabled(); |
|
146 void popEnabled(); |
|
147 void writeDotFile(const QString &fileName); |
|
148 void writeMscFile(const QString &fileName); |
|
149 |
|
150 //-------------------------------------- |
|
151 // state variables |
|
152 //-------------------------------------- |
|
153 |
|
154 QTextStream &m_t; |
|
155 CodeOutputInterface &m_ci; |
|
156 bool m_insidePre; |
|
157 bool m_hide; |
|
158 int m_indentLevel; |
|
159 QStack<bool> m_enabled; |
|
160 bool m_lastIsPara; |
|
161 QCString m_langExt; |
|
162 }; |
|
163 |
|
164 #endif |