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