1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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 .
22 #include <svtools/svtdllapi.h>
23 #include <sal/types.h>
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
48 // always starting from 256 on, greater than a char
56 // these will only be turned on
61 EMBED
, // Netscape 2.0 ignore </EMBED>
62 HORZRULE
, // ignore </HR>
63 IMAGE
, // ignore </IMG>
64 INPUT
, // ignore </INPUT>
65 LINEBREAK
, // </BR> -> <BR>
67 META
, // HTML 3.0 ignore </META>
68 OPTION
, // ignore </OPTION>
70 SPACER
, // Netscape 3.0b5 // ignore </SPACER>
72 // tokens recognised using HTML character
76 // these will be turned back off,
77 // the off value is always located behind (+1) !!
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
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
98 BLINK_OFF
, // Netscape
99 BLOCKQUOTE30_ON
, // HTML 3.0
100 BLOCKQUOTE30_OFF
, // HTML 3.0
107 CAPTION_ON
, // HTML 3.0
108 CAPTION_OFF
, // HTML 3.0
109 CENTER_ON
, // Netscape
110 CENTER_OFF
, // Netscape
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
125 DELETEDTEXT_ON
, // HTML 3.0
126 DELETEDTEXT_OFF
, // HTML 3.0
129 DIVISION_ON
, // HTML 3.0
130 DIVISION_OFF
, // HTML 3.0
135 FIGURE_ON
, // HTML 3.0
136 FIGURE_OFF
, // HTML 3.0
138 FONT_OFF
, // Netscape
139 FOOTNOTE_ON
, // HTML 3.0
140 FOOTNOTE_OFF
, // HTML 3.0
143 FRAME_ON
, // Netscape 2.0
144 FRAME_OFF
, // Netscape 2.0
145 FRAMESET_ON
, // Netscape 2.0
146 FRAMESET_OFF
, // Netscape 2.0
163 IFRAME_ON
, // IE 3.0b2
164 IFRAME_OFF
, // IE 3.0b2
165 INSERTEDTEXT_ON
, // HTML 3.0
166 INSERTEDTEXT_OFF
, // HTML 3.0
171 LANGUAGE_ON
, // HTML 3.0
172 LANGUAGE_OFF
, // HTML 3.0
173 LISTHEADER_ON
, // HTML 3.0
174 LISTHEADER_OFF
, // HTML 3.0
177 MAP_ON
, // Netscape 2.0
178 MAP_OFF
, // Netscape 2.0
181 MULTICOL_ON
, // Netscape 3.0b5
182 MULTICOL_OFF
, // Netscape 3.0b5
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
192 NOTE_OFF
, // HTML 3.0
193 OBJECT_ON
, // HotJava
194 OBJECT_OFF
, // HotJava
199 PERSON_ON
, // HTML 3.0
200 PERSON_OFF
, // HTML 3.0
201 PLAINTEXT_ON
, // HTML 3.0
202 PLAINTEXT_OFF
, // HTML 3.0
207 SCRIPT_ON
, // HTML 3.2
208 SCRIPT_OFF
, // HTML 3.2
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
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
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
269 // Microsoft features
270 COMMENT2_ON
, // HTML 2.0 ?
271 COMMENT2_OFF
, // HTML 2.0 ?
274 PLAINTEXT2_ON
, // HTML 2.0 ?
275 PLAINTEXT2_OFF
, // HTML 2.0 ?
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
302 // attributes without value
303 CHECKED
= BOOL_START
,
305 DECLARE
, // IExplorer 3.0b5
308 MAYSCRIPT
, // Netscape 3.0
311 NORESIZE
, // Netscape 2.0
318 // attributes with a string as value
319 STRING_START
= BOOL_END
,
320 ACCEPT
= STRING_START
,
324 CHAR
, // HTML3 Table Model Draft
330 COORDS
, // Netscape 2.0
332 FACE
, // IExplorer 2.0
333 FRAMEBORDER
, // IExplorer 3.0
335 LANGUAGE
, // JavaScript
340 STYLE
, // Style Sheets
343 SDVAL
, // StarDiv NumberValue
344 SDNUM
, // StarDiv NumberFormat
349 // attributes with an SGML identifier as value
350 SGMLID_START
= STRING_END
,
352 TARGET
, // Netscape 2.0
356 // attributes with a URI as value
357 URI_START
= SGMLID_END
,
367 USEMAP
, // Netscape 2.0
370 // attributes with a color as value (all Netscape)
371 COLOR_START
= URI_END
,
374 BORDERCOLOR
, // IExplorer 2.0
375 BORDERCOLORLIGHT
, // IExplorer 2.0
376 BORDERCOLORDARK
, // IExplorer 2.0
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
390 FRAMESPACING
, // IExplorer 3.0
391 GUTTER
, // Netscape 3.0b5
395 LOOP
, // IExplorer 2.0
396 MARGINWIDTH
, // Netscape 2.0
397 MARGINHEIGHT
, // Netscape 2.0
400 SCROLLAMOUNT
, // IExplorer 2.0
401 SCROLLDELAY
, // IExplorer 2.0
402 SPAN
, // HTML3 Table Model Draft
409 // attributes with Enum values
410 ENUM_START
= NUMBER_END
,
411 BEHAVIOR
= ENUM_START
, // IExplorer 2.0
414 DIRECTION
, // IExplorer 2.0
416 FRAME
, // HTML3 Table Model Draft
421 RULES
, // HTML3 Table Model Draft
422 SCROLLING
, // Netscape 2.0
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
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
472 UNKNOWN
= CONTEXT_END
,
476 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */