e041944d158c5886af2d55d0caac5f0044bd9569
[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, RIDGE, OUTSET, 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 { AlignBefore, AlignAfter, AlignMiddle, AlignStretch, AlignBaseline };
173
174 enum ETextSecurity {
175     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
176 };
177
178 // CSS3 User Modify Properties
179
180 enum EUserModify {
181     READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
182 };
183
184 // CSS3 User Drag Values
185
186 enum EUserDrag {
187     DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
188 };
189
190 // CSS3 User Select Values
191
192 enum EUserSelect {
193     SELECT_NONE, SELECT_TEXT
194 };
195
196 // Word Break Values. Matches WinIE, rather than CSS3
197
198 enum EWordBreak {
199     NormalWordBreak, BreakAllWordBreak, BreakWordBreak
200 };
201
202 enum EWordWrap {
203     NormalWordWrap, BreakWordWrap
204 };
205
206 enum ENBSPMode {
207     NBNORMAL, SPACE
208 };
209
210 enum EKHTMLLineBreak {
211     LBNORMAL, AFTER_WHITE_SPACE
212 };
213
214 enum EMatchNearestMailBlockquoteColor {
215     BCNORMAL, MATCH
216 };
217
218 enum EResize {
219     RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
220 };
221
222 // The order of this enum must match the order of the list style types in CSSValueKeywords.in. 
223 enum EListStyleType {
224     Disc,
225     Circle,
226     Square,
227     DecimalListStyle,
228     DecimalLeadingZero,
229     ArabicIndic,
230     BinaryListStyle,
231     Bengali,
232     Cambodian,
233     Khmer,
234     Devanagari,
235     Gujarati,
236     Gurmukhi,
237     Kannada,
238     LowerHexadecimal,
239     Lao,
240     Malayalam,
241     Mongolian,
242     Myanmar,
243     Octal,
244     Oriya,
245     Persian,
246     Urdu,
247     Telugu,
248     Tibetan,
249     Thai,
250     UpperHexadecimal,
251     LowerRoman,
252     UpperRoman,
253     LowerGreek,
254     LowerAlpha,
255     LowerLatin,
256     UpperAlpha,
257     UpperLatin,
258     Afar,
259     EthiopicHalehameAaEt,
260     EthiopicHalehameAaEr,
261     Amharic,
262     EthiopicHalehameAmEt,
263     AmharicAbegede,
264     EthiopicAbegedeAmEt,
265     CjkEarthlyBranch,
266     CjkHeavenlyStem,
267     Ethiopic,
268     EthiopicHalehameGez,
269     EthiopicAbegede,
270     EthiopicAbegedeGez,
271     HangulConsonant,
272     Hangul,
273     LowerNorwegian,
274     Oromo,
275     EthiopicHalehameOmEt,
276     Sidama,
277     EthiopicHalehameSidEt,
278     Somali,
279     EthiopicHalehameSoEt,
280     Tigre,
281     EthiopicHalehameTig,
282     TigrinyaEr,
283     EthiopicHalehameTiEr,
284     TigrinyaErAbegede,
285     EthiopicAbegedeTiEr,
286     TigrinyaEt,
287     EthiopicHalehameTiEt,
288     TigrinyaEtAbegede,
289     EthiopicAbegedeTiEt,
290     UpperGreek,
291     UpperNorwegian,
292     Asterisks,
293     Footnotes,
294     Hebrew,
295     Armenian,
296     LowerArmenian,
297     UpperArmenian,
298     Georgian,
299     CJKIdeographic,
300     Hiragana,
301     Katakana,
302     HiraganaIroha,
303     KatakanaIroha,
304     NoneListStyle
305 };
306
307 enum StyleContentType {
308     CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER, CONTENT_QUOTE
309 };
310
311 enum QuoteType {
312     OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE
313 };
314
315 enum EBorderFit { BorderFitBorder, BorderFitLines };
316
317 enum EAnimationFillMode { AnimationFillModeNone, AnimationFillModeForwards, AnimationFillModeBackwards, AnimationFillModeBoth };
318
319 enum EAnimPlayState {
320     AnimPlayStatePlaying = 0x0,
321     AnimPlayStatePaused = 0x1
322 };
323
324 enum EWhiteSpace {
325     NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
326 };
327
328 enum ETextAlign {
329     TAAUTO, LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND,
330 };
331
332 enum ETextTransform {
333     CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
334 };
335
336 enum ETextDecoration {
337     TDNONE = 0x0 , UNDERLINE = 0x1, OVERLINE = 0x2, LINE_THROUGH= 0x4, BLINK = 0x8
338 };
339
340 enum EPageBreak {
341     PBAUTO, PBALWAYS, PBAVOID
342 };
343
344 enum EEmptyCell {
345     SHOW, HIDE
346 };
347
348 enum ECaptionSide {
349     CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
350 };
351
352 enum EListStylePosition { OUTSIDE, INSIDE };
353
354 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
355
356 enum ECursor {
357     // The following must match the order in CSSValueKeywords.in.
358     CURSOR_AUTO,
359     CURSOR_CROSS,
360     CURSOR_DEFAULT,
361     CURSOR_POINTER,
362     CURSOR_MOVE,
363     CURSOR_VERTICAL_TEXT,
364     CURSOR_CELL,
365     CURSOR_CONTEXT_MENU,
366     CURSOR_ALIAS,
367     CURSOR_PROGRESS,
368     CURSOR_NO_DROP,
369     CURSOR_NOT_ALLOWED,
370     CURSOR_WEBKIT_ZOOM_IN,
371     CURSOR_WEBKIT_ZOOM_OUT,
372     CURSOR_E_RESIZE,
373     CURSOR_NE_RESIZE,
374     CURSOR_NW_RESIZE,
375     CURSOR_N_RESIZE,
376     CURSOR_SE_RESIZE,
377     CURSOR_SW_RESIZE,
378     CURSOR_S_RESIZE,
379     CURSOR_W_RESIZE,
380     CURSOR_EW_RESIZE,
381     CURSOR_NS_RESIZE,
382     CURSOR_NESW_RESIZE,
383     CURSOR_NWSE_RESIZE,
384     CURSOR_COL_RESIZE,
385     CURSOR_ROW_RESIZE,
386     CURSOR_TEXT,
387     CURSOR_WAIT,
388     CURSOR_HELP,
389     CURSOR_ALL_SCROLL,
390     CURSOR_WEBKIT_GRAB,
391     CURSOR_WEBKIT_GRABBING,
392
393     // The following are handled as exceptions so don't need to match.
394     CURSOR_COPY,
395     CURSOR_NONE
396 };
397
398 enum EDisplay {
399     INLINE, BLOCK, LIST_ITEM, RUN_IN, COMPACT, INLINE_BLOCK,
400     TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
401     TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
402     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
403     TABLE_CAPTION, BOX, INLINE_BOX, 
404 #if ENABLE(WCSS)
405     WAP_MARQUEE,
406 #endif
407 #if ENABLE(CSS3_FLEXBOX)
408     FLEXBOX, INLINE_FLEXBOX,
409 #endif
410     NONE
411 };
412
413 enum EInsideLink {
414     NotInsideLink, InsideUnvisitedLink, InsideVisitedLink
415 };
416     
417 enum EPointerEvents {
418     PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
419     PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
420 };
421
422 enum ETransformStyle3D {
423     TransformStyle3DFlat, TransformStyle3DPreserve3D
424 };
425
426 enum EBackfaceVisibility {
427     BackfaceVisibilityVisible, BackfaceVisibilityHidden
428 };
429     
430 enum ELineClampType { LineClampLineCount, LineClampPercentage };
431
432 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto };
433
434 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation };
435
436 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen };
437
438 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom };
439
440 enum TextEmphasisPosition { TextEmphasisPositionOver, TextEmphasisPositionUnder };
441
442 enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis };
443
444 enum EImageRendering { ImageRenderingAuto, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingOptimizeContrast };
445
446 enum Order { LogicalOrder = 0, VisualOrder };
447
448 enum RegionOverflow { AutoRegionOverflow, BreakRegionOverflow };
449
450 } // namespace WebCore
451
452 #endif // RenderStyleConstants_h