Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #ifndef _RTFLISTENER_HXX_
11 : #define _RTFLISTENER_HXX_
12 :
13 : #include <rtfcontrolwords.hxx>
14 :
15 : namespace writerfilter {
16 : namespace rtftok {
17 : enum RTFInternalState
18 : {
19 : INTERNAL_NORMAL,
20 : INTERNAL_BIN,
21 : INTERNAL_HEX
22 : };
23 :
24 : // Note that this is not a 1:1 mapping between destination control
25 : // words, e.g. RTF_PICT gets mapped to DESTINATION_PICT or
26 : // DESTINATION_SHAPEPROPERTYVALUEPICT, etc.
27 : enum RTFDestinationState
28 : {
29 : DESTINATION_NORMAL,
30 : DESTINATION_SKIP,
31 : DESTINATION_FONTTABLE,
32 : DESTINATION_FONTENTRY,
33 : DESTINATION_COLORTABLE,
34 : DESTINATION_STYLESHEET,
35 : DESTINATION_STYLEENTRY,
36 : DESTINATION_FIELD,
37 : DESTINATION_FIELDINSTRUCTION,
38 : DESTINATION_FIELDRESULT,
39 : DESTINATION_LISTTABLE,
40 : DESTINATION_LISTPICTURE,
41 : DESTINATION_LISTENTRY,
42 : DESTINATION_LISTOVERRIDETABLE,
43 : DESTINATION_LISTOVERRIDEENTRY,
44 : DESTINATION_LISTLEVEL,
45 : DESTINATION_LEVELTEXT,
46 : DESTINATION_LEVELNUMBERS,
47 : DESTINATION_SHPPICT,
48 : DESTINATION_PICT,
49 : DESTINATION_PICPROP,
50 : DESTINATION_SHAPEPROPERTY,
51 : DESTINATION_SHAPEPROPERTYNAME,
52 : DESTINATION_SHAPEPROPERTYVALUE,
53 : DESTINATION_SHAPE,
54 : DESTINATION_SHAPEINSTRUCTION,
55 : DESTINATION_SHAPEPROPERTYVALUEPICT,
56 : DESTINATION_NESTEDTABLEPROPERTIES,
57 : DESTINATION_FOOTNOTE,
58 : DESTINATION_BOOKMARKSTART,
59 : DESTINATION_BOOKMARKEND,
60 : DESTINATION_REVISIONTABLE,
61 : DESTINATION_REVISIONENTRY,
62 : DESTINATION_SHAPETEXT,
63 : DESTINATION_FORMFIELD,
64 : DESTINATION_FORMFIELDNAME,
65 : DESTINATION_FORMFIELDLIST,
66 : DESTINATION_DATAFIELD,
67 : DESTINATION_INFO,
68 : DESTINATION_CREATIONTIME,
69 : DESTINATION_REVISIONTIME,
70 : DESTINATION_PRINTTIME,
71 : DESTINATION_AUTHOR,
72 : DESTINATION_KEYWORDS,
73 : DESTINATION_OPERATOR,
74 : DESTINATION_COMPANY,
75 : DESTINATION_COMMENT,
76 : DESTINATION_OBJECT,
77 : DESTINATION_OBJDATA,
78 : DESTINATION_RESULT,
79 : DESTINATION_ANNOTATIONDATE,
80 : DESTINATION_ANNOTATIONAUTHOR,
81 : DESTINATION_FALT,
82 : DESTINATION_FLYMAINCONTENT,
83 : DESTINATION_DRAWINGOBJECT,
84 : DESTINATION_PARAGRAPHNUMBERING,
85 : DESTINATION_PARAGRAPHNUMBERING_TEXTBEFORE,
86 : DESTINATION_PARAGRAPHNUMBERING_TEXTAFTER,
87 : DESTINATION_TITLE,
88 : DESTINATION_SUBJECT,
89 : DESTINATION_DOCCOMM,
90 : DESTINATION_ATNID,
91 : DESTINATION_MOMATH,
92 : DESTINATION_MR,
93 : DESTINATION_MF,
94 : DESTINATION_MFPR,
95 : DESTINATION_MCTRLPR,
96 : DESTINATION_MNUM,
97 : DESTINATION_MDEN,
98 : DESTINATION_MACC,
99 : DESTINATION_MACCPR,
100 : DESTINATION_MCHR,
101 : DESTINATION_MPOS,
102 : DESTINATION_MVERTJC,
103 : DESTINATION_MSTRIKEH,
104 : DESTINATION_MDEGHIDE,
105 : DESTINATION_ME,
106 : DESTINATION_MBAR,
107 : DESTINATION_MBARPR,
108 : DESTINATION_MD,
109 : DESTINATION_MDPR,
110 : DESTINATION_MBEGCHR,
111 : DESTINATION_MSEPCHR,
112 : DESTINATION_MENDCHR,
113 : DESTINATION_MFUNC,
114 : DESTINATION_MFUNCPR,
115 : DESTINATION_MFNAME,
116 : DESTINATION_MLIMLOW,
117 : DESTINATION_MLIMLOWPR,
118 : DESTINATION_MLIM,
119 : DESTINATION_MM,
120 : DESTINATION_MMPR,
121 : DESTINATION_MMR,
122 : DESTINATION_MNARY,
123 : DESTINATION_MNARYPR,
124 : DESTINATION_MSUB,
125 : DESTINATION_MSUP,
126 : DESTINATION_MSUBHIDE,
127 : DESTINATION_MSUPHIDE,
128 : DESTINATION_MLIMUPP,
129 : DESTINATION_MLIMUPPPR,
130 : DESTINATION_MGROUPCHR,
131 : DESTINATION_MGROUPCHRPR,
132 : DESTINATION_MBORDERBOX,
133 : DESTINATION_MBORDERBOXPR,
134 : DESTINATION_MRAD,
135 : DESTINATION_MRADPR,
136 : DESTINATION_MDEG,
137 : DESTINATION_MSSUB,
138 : DESTINATION_MSSUBPR,
139 : DESTINATION_MSSUP,
140 : DESTINATION_MSSUPPR,
141 : DESTINATION_MSSUBSUP,
142 : DESTINATION_MSSUBSUPPR,
143 : DESTINATION_MSPRE,
144 : DESTINATION_MSPREPR,
145 : DESTINATION_MTYPE,
146 : DESTINATION_MGROW,
147 : DESTINATION_MBOX,
148 : DESTINATION_MEQARR,
149 : DESTINATION_UPR,
150 : DESTINATION_LFOLEVEL,
151 : DESTINATION_BACKGROUND,
152 : DESTINATION_SHAPEGROUP,
153 : };
154 :
155 : enum RTFErrors
156 : {
157 : ERROR_OK,
158 : ERROR_GROUP_UNDER,
159 : ERROR_GROUP_OVER,
160 : ERROR_EOF,
161 : ERROR_HEX_INVALID,
162 : ERROR_CHAR_OVER
163 : };
164 :
165 : /**
166 : * RTFTokenizer needs a class implementing this this interface. While
167 : * RTFTokenizer separates control words (and their arguments) from
168 : * text, the class implementing this interface is expected to map the
169 : * raw RTF tokens to dmapper tokens.
170 : */
171 207 : class RTFListener
172 : {
173 : public:
174 207 : virtual ~RTFListener() { }
175 : // Dispatching of control words and characters.
176 : virtual int dispatchDestination(RTFKeyword nKeyword) = 0;
177 : virtual int dispatchFlag(RTFKeyword nKeyword) = 0;
178 : virtual int dispatchSymbol(RTFKeyword nKeyword) = 0;
179 : virtual int dispatchToggle(RTFKeyword nKeyword, bool bParam, int nParam) = 0;
180 : virtual int dispatchValue(RTFKeyword nKeyword, int nParam) = 0;
181 : virtual int resolveChars(char ch) = 0;
182 :
183 : // State handling.
184 : virtual int pushState() = 0;
185 : virtual int popState() = 0;
186 :
187 : virtual RTFDestinationState getDestinationState() = 0;
188 : virtual void setDestinationState(RTFDestinationState nDestinationState) = 0;
189 : virtual RTFInternalState getInternalState() = 0;
190 : virtual void setInternalState(RTFInternalState nInternalState) = 0;
191 : virtual bool getSkipUnknown() = 0;
192 : virtual void setSkipUnknown(bool bSkipUnknown) = 0;
193 :
194 : // Substream handling.
195 : virtual void finishSubstream() = 0;
196 : virtual bool isSubstream() const = 0;
197 : };
198 : } // namespace rtftok
199 : } // namespace writerfilter
200 :
201 : #endif // _RTFLISTENER_HXX_
202 :
203 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|