Bump version to 21.06.18.1
[LibreOffice.git] / include / svtools / htmltokn.h
blobc4acf8dbeef71977a73584315ef72d01807e1be7
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #pragma once
22 #include <svtools/svtdllapi.h>
23 #include <sal/types.h>
24 #include <stdexcept>
26 namespace rtl {
27 class OUString;
29 enum class HtmlOptionId;
30 enum class HtmlTokenId : sal_Int16;
32 // search the char for the CharName
33 sal_Unicode GetHTMLCharName( const rtl::OUString& rName );
35 // search the TokenID for the token
36 SVT_DLLPUBLIC HtmlTokenId GetHTMLToken( const rtl::OUString& rName );
38 // search the TokenId for an attribute token
39 HtmlOptionId GetHTMLOption( const rtl::OUString& rName );
41 // search the 24-bit color for a color name (not found = SAL_MAX_UINT32)
42 SVT_DLLPUBLIC sal_uInt32 GetHTMLColor( const rtl::OUString& rName );
44 enum class HtmlTokenId : sal_Int16
46 INVALID = -1,
47 NONE = 0,
48 // always starting from 256 on, greater than a char
49 TEXTTOKEN = 0x100,
50 SINGLECHAR,
51 NEWPARA,
52 TABCHAR,
53 RAWDATA,
54 LINEFEEDCHAR,
56 // these will only be turned on
57 AREA, // Netscape 2.0
58 BASE, // HTML 3.0
59 COMMENT,
60 DOCTYPE,
61 EMBED, // Netscape 2.0 ignore </EMBED>
62 HORZRULE, // ignore </HR>
63 IMAGE, // ignore </IMG>
64 INPUT, // ignore </INPUT>
65 LINEBREAK, // </BR> -> <BR>
66 LINK, // HTML 3.0
67 META, // HTML 3.0 ignore </META>
68 OPTION, // ignore </OPTION>
69 PARAM, // HotJava
70 SPACER, // Netscape 3.0b5 // ignore </SPACER>
72 // tokens recognised using HTML character
73 NONBREAKSPACE,
74 SOFTHYPH,
76 // these will be turned back off,
77 // the off value is always located behind (+1) !!
78 ONOFF_START,
79 ABBREVIATION_ON = ONOFF_START, // HTML 3.0
80 ABBREVIATION_OFF, // HTML 3.0
81 ACRONYM_ON, // HTML 3.0
82 ACRONYM_OFF, // HTML 3.0
83 ADDRESS_ON,
84 ADDRESS_OFF,
85 ANCHOR_ON,
86 ANCHOR_OFF,
87 APPLET_ON, // HotJava
88 APPLET_OFF, // HotJava
89 AUTHOR_ON, // HTML 3.0
90 AUTHOR_OFF, // HTML 3.0
91 BANNER_ON, // HTML 3.0
92 BANNER_OFF, // HTML 3.0
93 BASEFONT_ON, // Netscape
94 BASEFONT_OFF, // Netscape
95 BIGPRINT_ON, // HTML 3.0
96 BIGPRINT_OFF, // HTML 3.0
97 BLINK_ON, // Netscape
98 BLINK_OFF, // Netscape
99 BLOCKQUOTE30_ON, // HTML 3.0
100 BLOCKQUOTE30_OFF, // HTML 3.0
101 BLOCKQUOTE_ON,
102 BLOCKQUOTE_OFF,
103 BODY_ON,
104 BODY_OFF,
105 BOLD_ON,
106 BOLD_OFF,
107 CAPTION_ON, // HTML 3.0
108 CAPTION_OFF, // HTML 3.0
109 CENTER_ON, // Netscape
110 CENTER_OFF, // Netscape
111 CITIATION_ON,
112 CITIATION_OFF,
113 CODE_ON,
114 CODE_OFF,
115 COL_ON, // HTML3 Table Model Draft
116 COL_OFF, // HTML3 Table Model Draft
117 COLGROUP_ON, // HTML3 Table Model Draft
118 COLGROUP_OFF, // HTML3 Table Model Draft
119 CREDIT_ON, // HTML 3.0
120 CREDIT_OFF, // HTML 3.0
121 DD_ON,
122 DD_OFF,
123 DEFLIST_ON,
124 DEFLIST_OFF,
125 DELETEDTEXT_ON, // HTML 3.0
126 DELETEDTEXT_OFF, // HTML 3.0
127 DIRLIST_ON,
128 DIRLIST_OFF,
129 DIVISION_ON, // HTML 3.0
130 DIVISION_OFF, // HTML 3.0
131 DT_ON,
132 DT_OFF,
133 EMPHASIS_ON,
134 EMPHASIS_OFF,
135 FIGURE_ON, // HTML 3.0
136 FIGURE_OFF, // HTML 3.0
137 FONT_ON, // Netscape
138 FONT_OFF, // Netscape
139 FOOTNOTE_ON, // HTML 3.0
140 FOOTNOTE_OFF, // HTML 3.0
141 FORM_ON,
142 FORM_OFF,
143 FRAME_ON, // Netscape 2.0
144 FRAME_OFF, // Netscape 2.0
145 FRAMESET_ON, // Netscape 2.0
146 FRAMESET_OFF, // Netscape 2.0
147 HEAD1_ON,
148 HEAD1_OFF,
149 HEAD2_ON,
150 HEAD2_OFF,
151 HEAD3_ON,
152 HEAD3_OFF,
153 HEAD4_ON,
154 HEAD4_OFF,
155 HEAD5_ON,
156 HEAD5_OFF,
157 HEAD6_ON,
158 HEAD6_OFF,
159 HEAD_ON,
160 HEAD_OFF,
161 HTML_ON,
162 HTML_OFF,
163 IFRAME_ON, // IE 3.0b2
164 IFRAME_OFF, // IE 3.0b2
165 INSERTEDTEXT_ON, // HTML 3.0
166 INSERTEDTEXT_OFF, // HTML 3.0
167 ITALIC_ON,
168 ITALIC_OFF,
169 KEYBOARD_ON,
170 KEYBOARD_OFF,
171 LANGUAGE_ON, // HTML 3.0
172 LANGUAGE_OFF, // HTML 3.0
173 LISTHEADER_ON, // HTML 3.0
174 LISTHEADER_OFF, // HTML 3.0
175 LI_ON,
176 LI_OFF,
177 MAP_ON, // Netscape 2.0
178 MAP_OFF, // Netscape 2.0
179 MENULIST_ON,
180 MENULIST_OFF,
181 MULTICOL_ON, // Netscape 3.0b5
182 MULTICOL_OFF, // Netscape 3.0b5
183 NOBR_ON, // Netscape
184 NOBR_OFF, // Netscape
185 NOEMBED_ON, // Netscape 2.0
186 NOEMBED_OFF, // Netscape 2.0
187 NOFRAMES_ON, // Netscape 2.0
188 NOFRAMES_OFF, // Netscape 2.0
189 NOSCRIPT_ON, // Netscape 2.0
190 NOSCRIPT_OFF, // Netscape 3.0
191 NOTE_ON, // HTML 3.0
192 NOTE_OFF, // HTML 3.0
193 OBJECT_ON, // HotJava
194 OBJECT_OFF, // HotJava
195 ORDERLIST_ON,
196 ORDERLIST_OFF,
197 PARABREAK_ON,
198 PARABREAK_OFF,
199 PERSON_ON, // HTML 3.0
200 PERSON_OFF, // HTML 3.0
201 PLAINTEXT_ON, // HTML 3.0
202 PLAINTEXT_OFF, // HTML 3.0
203 PREFORMTXT_ON,
204 PREFORMTXT_OFF,
205 SAMPLE_ON,
206 SAMPLE_OFF,
207 SCRIPT_ON, // HTML 3.2
208 SCRIPT_OFF, // HTML 3.2
209 SELECT_ON,
210 SELECT_OFF,
211 SHORTQUOTE_ON, // HTML 3.0
212 SHORTQUOTE_OFF, // HTML 3.0
213 SMALLPRINT_ON, // HTML 3.0
214 SMALLPRINT_OFF, // HTML 3.0
215 SPAN_ON, // Style Sheets
216 SPAN_OFF, // Style Sheets
217 STRIKETHROUGH_ON, // HTML 3.0
218 STRIKETHROUGH_OFF, // HTML 3.0
219 STRONG_ON,
220 STRONG_OFF,
221 STYLE_ON, // HTML 3.0
222 STYLE_OFF, // HTML 3.0
223 SUBSCRIPT_ON, // HTML 3.0
224 SUBSCRIPT_OFF, // HTML 3.0
225 SUPERSCRIPT_ON, // HTML 3.0
226 SUPERSCRIPT_OFF, // HTML 3.0
227 TABLE_ON, // HTML 3.0
228 TABLE_OFF, // HTML 3.0
229 TABLEDATA_ON, // HTML 3.0
230 TABLEDATA_OFF, // HTML 3.0
231 TABLEHEADER_ON, // HTML 3.0
232 TABLEHEADER_OFF, // HTML 3.0
233 TABLEROW_ON, // HTML 3.0
234 TABLEROW_OFF, // HTML 3.0
235 TBODY_ON, // HTML3 Table Model Draft
236 TBODY_OFF, // HTML3 Table Model Draft
237 TELETYPE_ON,
238 TELETYPE_OFF,
239 TEXTAREA_ON,
240 TEXTAREA_OFF,
241 TFOOT_ON, // HTML3 Table Model Draft
242 TFOOT_OFF, // HTML3 Table Model Draft
243 THEAD_ON, // HTML3 Table Model Draft
244 THEAD_OFF, // HTML3 Table Model Draft
245 TITLE_ON,
246 TITLE_OFF,
247 UNDERLINE_ON,
248 UNDERLINE_OFF,
249 UNORDERLIST_ON,
250 UNORDERLIST_OFF,
251 VARIABLE_ON,
252 VARIABLE_OFF,
254 // obsolete features
255 XMP_ON,
256 XMP_OFF,
257 LISTING_ON,
258 LISTING_OFF,
260 // proposed features
261 DEFINSTANCE_ON,
262 DEFINSTANCE_OFF,
263 STRIKE_ON,
264 STRIKE_OFF,
266 UNKNOWNCONTROL_ON,
267 UNKNOWNCONTROL_OFF,
269 // Microsoft features
270 COMMENT2_ON, // HTML 2.0 ?
271 COMMENT2_OFF, // HTML 2.0 ?
272 MARQUEE_ON,
273 MARQUEE_OFF,
274 PLAINTEXT2_ON, // HTML 2.0 ?
275 PLAINTEXT2_OFF, // HTML 2.0 ?
277 SDFIELD_ON,
278 SDFIELD_OFF
281 constexpr bool isOffToken(HtmlTokenId nToken)
283 return (nToken == HtmlTokenId::NONE || nToken >= HtmlTokenId::ONOFF_START)
284 ? (1 & static_cast<int>(nToken))
285 : throw std::logic_error("Assertion failed!"); // C++11 does not do assert in constexpr
288 constexpr HtmlTokenId getOnToken(HtmlTokenId nToken)
290 return (nToken == HtmlTokenId::NONE || nToken >= HtmlTokenId::ONOFF_START)
291 ? HtmlTokenId(~1 & static_cast<int>(nToken))
292 : throw std::logic_error("Assertion failed!"); // C++11 does not do assert in constexpr
295 // HTML attribute token (=Options)
297 enum class HtmlOptionId
299 // always starting from 256 on, greater than a char
300 BOOL_START = 0x100,
302 // attributes without value
303 CHECKED = BOOL_START,
304 COMPACT,
305 DECLARE, // IExplorer 3.0b5
306 DISABLED,
307 ISMAP,
308 MAYSCRIPT, // Netscape 3.0
309 MULTIPLE,
310 NOHREF, // Netscape
311 NORESIZE, // Netscape 2.0
312 NOSHADE, // Netscape
313 NOWRAP,
314 SDFIXED,
315 SELECTED,
316 BOOL_END,
318 // attributes with a string as value
319 STRING_START = BOOL_END,
320 ACCEPT = STRING_START,
321 ACCESSKEY,
322 ALT,
323 AXIS,
324 CHAR, // HTML3 Table Model Draft
325 CHARSET,
326 CLASS,
327 CODE, // HotJava
328 CODETYPE,
329 CONTENT,
330 COORDS, // Netscape 2.0
331 ENCTYPE,
332 FACE, // IExplorer 2.0
333 FRAMEBORDER, // IExplorer 3.0
334 HTTPEQUIV,
335 LANGUAGE, // JavaScript
336 NAME,
337 PROMPT,
338 SHAPE,
339 STANDBY,
340 STYLE, // Style Sheets
341 TITLE,
342 VALUE,
343 SDVAL, // StarDiv NumberValue
344 SDNUM, // StarDiv NumberFormat
345 SDLIBRARY,
346 SDMODULE,
347 STRING_END,
349 // attributes with an SGML identifier as value
350 SGMLID_START = STRING_END,
351 ID = SGMLID_START,
352 TARGET, // Netscape 2.0
354 SGMLID_END,
356 // attributes with a URI as value
357 URI_START = SGMLID_END,
358 ACTION = URI_START,
359 ARCHIVE,
360 BACKGROUND,
361 CLASSID,
362 CODEBASE, // HotJava
363 DATA,
364 HREF,
365 SCRIPT,
366 SRC,
367 USEMAP, // Netscape 2.0
368 URI_END,
370 // attributes with a color as value (all Netscape)
371 COLOR_START = URI_END,
372 ALINK = COLOR_START,
373 BGCOLOR,
374 BORDERCOLOR, // IExplorer 2.0
375 BORDERCOLORLIGHT, // IExplorer 2.0
376 BORDERCOLORDARK, // IExplorer 2.0
377 COLOR,
378 LINK,
379 TEXT,
380 VLINK,
381 COLOR_END,
383 // attributes with a numeric value
384 NUMBER_START = COLOR_END,
385 BORDER = NUMBER_START,
386 CELLSPACING, // HTML3 Table Model Draft
387 CELLPADDING, // HTML3 Table Model Draft
388 CHAROFF, // HTML3 Table Model Draft
389 COLSPAN,
390 FRAMESPACING, // IExplorer 3.0
391 GUTTER, // Netscape 3.0b5
392 HEIGHT,
393 HSPACE, // Netscape
394 LEFT,
395 LOOP, // IExplorer 2.0
396 MARGINWIDTH, // Netscape 2.0
397 MARGINHEIGHT, // Netscape 2.0
398 MAXLENGTH,
399 ROWSPAN,
400 SCROLLAMOUNT, // IExplorer 2.0
401 SCROLLDELAY, // IExplorer 2.0
402 SPAN, // HTML3 Table Model Draft
403 TABINDEX,
404 VSPACE, // Netscape
405 WIDTH,
406 ZINDEX,
407 NUMBER_END,
409 // attributes with Enum values
410 ENUM_START = NUMBER_END,
411 BEHAVIOR = ENUM_START, // IExplorer 2.0
412 CLEAR,
413 DIR,
414 DIRECTION, // IExplorer 2.0
415 FORMAT,
416 FRAME, // HTML3 Table Model Draft
417 LANG,
418 METHOD,
419 REL,
420 REV,
421 RULES, // HTML3 Table Model Draft
422 SCROLLING, // Netscape 2.0
423 SDREADONLY,
424 SUBTYPE,
425 TYPE,
426 VALIGN,
427 VALUETYPE,
428 WRAP,
429 ENUM_END,
431 // attributes with script code as value
432 SCRIPT_START = ENUM_END,
433 ONABORT = SCRIPT_START, // JavaScript
434 ONBLUR, // JavaScript
435 ONCHANGE, // JavaScript
436 ONCLICK, // JavaScript
437 ONERROR, // JavaScript
438 ONFOCUS, // JavaScript
439 ONLOAD, // JavaScript
440 ONMOUSEOUT, // JavaScript
441 ONMOUSEOVER, // JavaScript
442 ONRESET, // JavaScript
443 ONSELECT, // JavaScript
444 ONSUBMIT, // JavaScript
445 ONUNLOAD, // JavaScript
447 SDONABORT, // StarBasic
448 SDONBLUR, // StarBasic
449 SDONCHANGE, // StarBasic
450 SDONCLICK, // StarBasic
451 SDONERROR, // StarBasic
452 SDONFOCUS, // StarBasic
453 SDONLOAD, // StarBasic
454 SDONMOUSEOUT, // StarBasic
455 SDONMOUSEOVER, // StarBasic
456 SDONRESET, // StarBasic
457 SDONSELECT, // StarBasic
458 SDONSUBMIT, // StarBasic
459 SDONUNLOAD, // StarBasic
460 SCRIPT_END,
462 // attributes with context dependent values
463 CONTEXT_START = SCRIPT_END,
464 ALIGN = CONTEXT_START,
465 COLS, // Netscape 2.0 vs HTML 2.0
466 ROWS, // Netscape 2.0 vs HTML 2.0
467 SIZE,
468 START,
469 CONTEXT_END,
471 // an unknown option
472 UNKNOWN = CONTEXT_END,
476 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */