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