1de57f2b4abed2e4ef63469cdf83a55851af3658
[WebKit-https.git] / Source / WebCore / rendering / style / RenderStyleConstants.h
1 /*
2  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
4  *           (C) 2000 Dirk Mueller (mueller@kde.org)
5  * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
6  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
7  * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Library General Public
11  * License as published by the Free Software Foundation; either
12  * version 2 of the License, or (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * Library General Public License for more details.
18  *
19  * You should have received a copy of the GNU Library General Public License
20  * along with this library; see the file COPYING.LIB.  If not, write to
21  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22  * Boston, MA 02110-1301, USA.
23  *
24  */
25
26 #ifndef RenderStyleConstants_h
27 #define RenderStyleConstants_h
28
29 namespace WebCore {
30
31 /*
32  * WARNING:
33  * --------
34  *
35  * The order of the values in the enums have to agree with the order specified
36  * in CSSValueKeywords.in, otherwise some optimizations in the parser will fail,
37  * and produce invalid results.
38  */
39
40 // The difference between two styles.  The following values are used:
41 // (1) StyleDifferenceEqual - The two styles are identical
42 // (2) StyleDifferenceRecompositeLayer - The layer needs its position and transform updated, but no repaint
43 // (3) StyleDifferenceRepaint - The object just needs to be repainted.
44 // (4) StyleDifferenceRepaintLayer - The layer and its descendant layers needs to be repainted.
45 // (5) StyleDifferenceLayoutPositionedMovementOnly - Only the position of this positioned object has been updated
46 // (6) StyleDifferenceSimplifiedLayout - Only overflow needs to be recomputed
47 // (7) StyleDifferenceSimplifiedLayoutAndPositionedMovement - Both positioned movement and simplified layout updates are required.
48 // (8) StyleDifferenceLayout - A full layout is required.
49 enum StyleDifference {
50     StyleDifferenceEqual,
51 #if USE(ACCELERATED_COMPOSITING)
52     StyleDifferenceRecompositeLayer,
53 #endif
54     StyleDifferenceRepaint,
55     StyleDifferenceRepaintLayer,
56     StyleDifferenceLayoutPositionedMovementOnly,
57     StyleDifferenceSimplifiedLayout,
58     StyleDifferenceSimplifiedLayoutAndPositionedMovement,
59     StyleDifferenceLayout
60 };
61
62 // When some style properties change, different amounts of work have to be done depending on
63 // context (e.g. whether the property is changing on an element which has a compositing layer).
64 // A simple StyleDifference does not provide enough information so we return a bit mask of
65 // StyleDifferenceContextSensitiveProperties from RenderStyle::diff() too.
66 enum StyleDifferenceContextSensitiveProperty {
67     ContextSensitivePropertyNone = 0,
68     ContextSensitivePropertyTransform = (1 << 0),
69     ContextSensitivePropertyOpacity = (1 << 1)
70 };
71
72 // Static pseudo styles. Dynamic ones are produced on the fly.
73 enum PseudoId {
74     // The order must be NOP ID, public IDs, and then internal IDs.
75     NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR,
76     // Internal IDs follow:
77     SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
78     INPUT_LIST_BUTTON, VISITED_LINK,
79     AFTER_LAST_INTERNAL_PSEUDOID,
80     FULL_SCREEN, FULL_SCREEN_DOCUMENT, FULL_SCREEN_ANCESTOR, ANIMATING_FULL_SCREEN_TRANSITION,
81     FIRST_PUBLIC_PSEUDOID = FIRST_LINE,
82     FIRST_INTERNAL_PSEUDOID = SCROLLBAR_THUMB,
83     PUBLIC_PSEUDOID_MASK = ((1 << FIRST_INTERNAL_PSEUDOID) - 1) & ~((1 << FIRST_PUBLIC_PSEUDOID) - 1)
84 };
85
86 enum EBorderCollapse { BSEPARATE = 0, BCOLLAPSE = 1 };
87
88 // These have been defined in the order of their precedence for border-collapsing. Do
89 // not change this order!
90 enum EBorderStyle { BNONE, BHIDDEN, INSET, GROOVE, OUTSET, RIDGE, DOTTED, DASHED, SOLID, DOUBLE };
91
92 enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL };
93
94 enum OutlineIsAuto { AUTO_OFF = 0, AUTO_ON };
95
96 enum EPosition {
97     StaticPosition, RelativePosition, AbsolutePosition, FixedPosition
98 };
99
100 enum EFloat {
101     NoFloat, LeftFloat, RightFloat, PositionedFloat
102 };
103
104 enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };
105
106 // Box attributes. Not inherited.
107
108 enum EBoxSizing { CONTENT_BOX, BORDER_BOX };
109
110 // Random visual rendering model attributes. Not inherited.
111
112 enum EOverflow {
113     OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE
114 };
115
116 enum EVerticalAlign {
117     BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP,
118     TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH
119 };
120
121 enum EClear {
122     CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3
123 };
124
125 enum ETableLayout {
126     TAUTO, TFIXED
127 };
128
129 // CSS Text Layout Module Level 3: Vertical writing support
130 enum WritingMode {
131     TopToBottomWritingMode, RightToLeftWritingMode, LeftToRightWritingMode, BottomToTopWritingMode
132 };
133
134 enum TextCombine {
135     TextCombineNone, TextCombineHorizontal
136 };
137
138 enum EFillAttachment {
139     ScrollBackgroundAttachment, LocalBackgroundAttachment, FixedBackgroundAttachment
140 };
141
142 enum EFillBox {
143     BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox
144 };
145
146 enum EFillRepeat {
147     RepeatFill, NoRepeatFill, RoundFill, SpaceFill
148 };
149
150 enum EFillLayerType {
151     BackgroundFillLayer, MaskFillLayer
152 };
153
154 // CSS3 Background Values
155 enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
156
157 // CSS3 Marquee Properties
158
159 enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE };
160 enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 };
161
162 // Deprecated Flexible Box Properties
163
164 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE };
165 enum EBoxOrient { HORIZONTAL, VERTICAL };
166 enum EBoxLines { SINGLE, MULTIPLE };
167 enum EBoxDirection { BNORMAL, BREVERSE };
168
169 // CSS3 Flexbox Properties
170
171 enum EFlexPack { PackStart, PackEnd, PackCenter, PackJustify };
172 enum EFlexAlign { AlignStart, AlignEnd, AlignCenter, AlignStretch, AlignBaseline };
173 enum EFlexFlow { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse};
174
175 enum ETextSecurity {
176     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
177 };
178
179 // CSS3 User Modify Properties
180
181 enum EUserModify {
182     READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
183 };
184
185 // CSS3 User Drag Values
186
187 enum EUserDrag {
188     DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
189 };
190
191 // CSS3 User Select Values
192
193 enum EUserSelect {
194     SELECT_NONE, SELECT_TEXT
195 };
196
197 // Word Break Values. Matches WinIE, rather than CSS3
198
199 enum EWordBreak {
200     NormalWordBreak, BreakAllWordBreak, BreakWordBreak
201 };
202
203 enum EWordWrap {
204     NormalWordWrap, BreakWordWrap
205 };
206
207 enum ENBSPMode {
208     NBNORMAL, SPACE
209 };
210
211 enum EKHTMLLineBreak {
212     LBNORMAL, AFTER_WHITE_SPACE
213 };
214
215 enum EMatchNearestMailBlockquoteColor {
216     BCNORMAL, MATCH
217 };
218
219 enum EResize {
220     RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
221 };
222
223 // The order of this enum must match the order of the list style types in CSSValueKeywords.in. 
224 enum EListStyleType {
225     Disc,
226     Circle,
227     Square,
228     DecimalListStyle,
229     DecimalLeadingZero,
230     ArabicIndic,
231     BinaryListStyle,
232     Bengali,
233     Cambodian,
234     Khmer,
235     Devanagari,
236     Gujarati,
237     Gurmukhi,
238     Kannada,
239     LowerHexadecimal,
240     Lao,
241     Malayalam,
242     Mongolian,
243     Myanmar,
244     Octal,
245     Oriya,
246     Persian,
247     Urdu,
248     Telugu,
249     Tibetan,
250     Thai,
251     UpperHexadecimal,
252     LowerRoman,
253     UpperRoman,
254     LowerGreek,
255     LowerAlpha,
256     LowerLatin,
257     UpperAlpha,
258     UpperLatin,
259     Afar,
260     EthiopicHalehameAaEt,
261     EthiopicHalehameAaEr,
262     Amharic,
263     EthiopicHalehameAmEt,
264     AmharicAbegede,
265     EthiopicAbegedeAmEt,
266     CjkEarthlyBranch,
267     CjkHeavenlyStem,
268     Ethiopic,
269     EthiopicHalehameGez,
270     EthiopicAbegede,
271     EthiopicAbegedeGez,
272     HangulConsonant,
273     Hangul,
274     LowerNorwegian,
275     Oromo,
276     EthiopicHalehameOmEt,
277     Sidama,
278     EthiopicHalehameSidEt,
279     Somali,
280     EthiopicHalehameSoEt,
281     Tigre,
282     EthiopicHalehameTig,
283     TigrinyaEr,
284     EthiopicHalehameTiEr,
285     TigrinyaErAbegede,
286     EthiopicAbegedeTiEr,
287     TigrinyaEt,
288     EthiopicHalehameTiEt,
289     TigrinyaEtAbegede,
290     EthiopicAbegedeTiEt,
291     UpperGreek,
292     UpperNorwegian,
293     Asterisks,
294     Footnotes,
295     Hebrew,
296     Armenian,
297     LowerArmenian,
298     UpperArmenian,
299     Georgian,
300     CJKIdeographic,
301     Hiragana,
302     Katakana,
303     HiraganaIroha,
304     KatakanaIroha,
305     NoneListStyle
306 };
307
308 enum StyleContentType {
309     CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER, CONTENT_QUOTE
310 };
311
312 enum QuoteType {
313     OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE
314 };
315
316 enum EBorderFit { BorderFitBorder, BorderFitLines };
317
318 enum EAnimationFillMode { AnimationFillModeNone, AnimationFillModeForwards, AnimationFillModeBackwards, AnimationFillModeBoth };
319
320 enum EAnimPlayState {
321     AnimPlayStatePlaying = 0x0,
322     AnimPlayStatePaused = 0x1
323 };
324
325 enum EWhiteSpace {
326     NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
327 };
328
329 enum ETextAlign {
330     TAAUTO, LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND,
331 };
332
333 enum ETextTransform {
334     CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
335 };
336
337 static const size_t ETextDecorationBits = 4;
338 enum ETextDecoration {
339     TDNONE = 0x0 , UNDERLINE = 0x1, OVERLINE = 0x2, LINE_THROUGH= 0x4, BLINK = 0x8
340 };
341 inline ETextDecoration operator|(ETextDecoration a, ETextDecoration b) { return ETextDecoration(int(a) | int(b)); }
342 inline ETextDecoration& operator|=(ETextDecoration& a, ETextDecoration b) { return a = a | b; }
343
344 enum EPageBreak {
345     PBAUTO, PBALWAYS, PBAVOID
346 };
347
348 enum EEmptyCell {
349     SHOW, HIDE
350 };
351
352 enum ECaptionSide {
353     CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
354 };
355
356 enum EListStylePosition { OUTSIDE, INSIDE };
357
358 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
359
360 enum ECursor {
361     // The following must match the order in CSSValueKeywords.in.
362     CURSOR_AUTO,
363     CURSOR_CROSS,
364     CURSOR_DEFAULT,
365     CURSOR_POINTER,
366     CURSOR_MOVE,
367     CURSOR_VERTICAL_TEXT,
368     CURSOR_CELL,
369     CURSOR_CONTEXT_MENU,
370     CURSOR_ALIAS,
371     CURSOR_PROGRESS,
372     CURSOR_NO_DROP,
373     CURSOR_NOT_ALLOWED,
374     CURSOR_WEBKIT_ZOOM_IN,
375     CURSOR_WEBKIT_ZOOM_OUT,
376     CURSOR_E_RESIZE,
377     CURSOR_NE_RESIZE,
378     CURSOR_NW_RESIZE,
379     CURSOR_N_RESIZE,
380     CURSOR_SE_RESIZE,
381     CURSOR_SW_RESIZE,
382     CURSOR_S_RESIZE,
383     CURSOR_W_RESIZE,
384     CURSOR_EW_RESIZE,
385     CURSOR_NS_RESIZE,
386     CURSOR_NESW_RESIZE,
387     CURSOR_NWSE_RESIZE,
388     CURSOR_COL_RESIZE,
389     CURSOR_ROW_RESIZE,
390     CURSOR_TEXT,
391     CURSOR_WAIT,
392     CURSOR_HELP,
393     CURSOR_ALL_SCROLL,
394     CURSOR_WEBKIT_GRAB,
395     CURSOR_WEBKIT_GRABBING,
396
397     // The following are handled as exceptions so don't need to match.
398     CURSOR_COPY,
399     CURSOR_NONE
400 };
401
402 enum EDisplay {
403     INLINE, BLOCK, LIST_ITEM, RUN_IN, COMPACT, INLINE_BLOCK,
404     TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
405     TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
406     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
407     TABLE_CAPTION, BOX, INLINE_BOX, 
408 #if ENABLE(CSS3_FLEXBOX)
409     FLEXBOX, INLINE_FLEXBOX,
410 #endif
411     NONE
412 };
413
414 enum EInsideLink {
415     NotInsideLink, InsideUnvisitedLink, InsideVisitedLink
416 };
417     
418 enum EPointerEvents {
419     PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
420     PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
421 };
422
423 enum ETransformStyle3D {
424     TransformStyle3DFlat, TransformStyle3DPreserve3D
425 };
426
427 enum EBackfaceVisibility {
428     BackfaceVisibilityVisible, BackfaceVisibilityHidden
429 };
430     
431 enum ELineClampType { LineClampLineCount, LineClampPercentage };
432
433 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto };
434
435 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation };
436
437 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen };
438
439 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom };
440
441 enum TextEmphasisPosition { TextEmphasisPositionOver, TextEmphasisPositionUnder };
442
443 enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis };
444
445 enum EImageRendering { ImageRenderingAuto, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingOptimizeContrast };
446
447 enum Order { LogicalOrder = 0, VisualOrder };
448
449 enum RegionOverflow { AutoRegionOverflow, BreakRegionOverflow };
450
451 } // namespace WebCore
452
453 #endif // RenderStyleConstants_h