[CSS Grid Layout] Upgrade align-self and align-items parsing to CSS 3
[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 #include <initializer_list>
30
31 namespace WebCore {
32
33 static const size_t PrintColorAdjustBits = 1;
34 enum PrintColorAdjust {
35     PrintColorAdjustEconomy,
36     PrintColorAdjustExact
37 };
38
39 // The difference between two styles.  The following values are used:
40 // - StyleDifferenceEqual - The two styles are identical
41 // - StyleDifferenceRecompositeLayer - The layer needs its position and transform updated, but no repaint
42 // - StyleDifferenceRepaint - The object just needs to be repainted.
43 // - StyleDifferenceRepaintIfTextOrBorderOrOutline - The object needs to be repainted if it contains text or a border or outline.
44 // - StyleDifferenceRepaintLayer - The layer and its descendant layers needs to be repainted.
45 // - StyleDifferenceLayoutPositionedMovementOnly - Only the position of this positioned object has been updated
46 // - StyleDifferenceSimplifiedLayout - Only overflow needs to be recomputed
47 // - StyleDifferenceSimplifiedLayoutAndPositionedMovement - Both positioned movement and simplified layout updates are required.
48 // - StyleDifferenceLayout - A full layout is required.
49 enum StyleDifference {
50     StyleDifferenceEqual,
51     StyleDifferenceRecompositeLayer,
52     StyleDifferenceRepaint,
53     StyleDifferenceRepaintIfTextOrBorderOrOutline,
54     StyleDifferenceRepaintLayer,
55     StyleDifferenceLayoutPositionedMovementOnly,
56     StyleDifferenceSimplifiedLayout,
57     StyleDifferenceSimplifiedLayoutAndPositionedMovement,
58     StyleDifferenceLayout
59 };
60
61 // When some style properties change, different amounts of work have to be done depending on
62 // context (e.g. whether the property is changing on an element which has a compositing layer).
63 // A simple StyleDifference does not provide enough information so we return a bit mask of
64 // StyleDifferenceContextSensitiveProperties from RenderStyle::diff() too.
65 enum StyleDifferenceContextSensitiveProperty {
66     ContextSensitivePropertyNone = 0,
67     ContextSensitivePropertyTransform = (1 << 0),
68     ContextSensitivePropertyOpacity = (1 << 1),
69     ContextSensitivePropertyFilter = (1 << 2),
70     ContextSensitivePropertyClipRect = (1 << 3)
71 };
72
73 // Static pseudo styles. Dynamic ones are produced on the fly.
74 enum PseudoId : unsigned char {
75     // The order must be NOP ID, public IDs, and then internal IDs.
76     NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR,
77     // Internal IDs follow:
78     SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
79     AFTER_LAST_INTERNAL_PSEUDOID,
80     FIRST_PUBLIC_PSEUDOID = FIRST_LINE,
81     FIRST_INTERNAL_PSEUDOID = SCROLLBAR_THUMB,
82     PUBLIC_PSEUDOID_MASK = ((1 << FIRST_INTERNAL_PSEUDOID) - 1) & ~((1 << FIRST_PUBLIC_PSEUDOID) - 1)
83 };
84
85 class PseudoIdSet {
86 public:
87     PseudoIdSet()
88         : m_data(0)
89     {
90     }
91
92     PseudoIdSet(std::initializer_list<PseudoId> initializerList)
93         : m_data(0)
94     {
95         for (PseudoId pseudoId : initializerList)
96             add(pseudoId);
97     }
98
99     static PseudoIdSet fromMask(unsigned rawPseudoIdSet)
100     {
101         return PseudoIdSet(rawPseudoIdSet);
102     }
103
104     bool has(PseudoId pseudoId) const
105     {
106         ASSERT((sizeof(m_data) * 8) > pseudoId);
107         return m_data & (1U << pseudoId);
108     }
109
110     void add(PseudoId pseudoId)
111     {
112         ASSERT((sizeof(m_data) * 8) > pseudoId);
113         m_data |= (1U << pseudoId);
114     }
115
116     void merge(PseudoIdSet source)
117     {
118         m_data |= source.m_data;
119     }
120
121     PseudoIdSet operator &(const PseudoIdSet& pseudoIdSet) const
122     {
123         return PseudoIdSet(m_data & pseudoIdSet.m_data);
124     }
125
126     PseudoIdSet operator |(const PseudoIdSet& pseudoIdSet) const
127     {
128         return PseudoIdSet(m_data | pseudoIdSet.m_data);
129     }
130
131     explicit operator bool() const
132     {
133         return m_data;
134     }
135
136     unsigned data() const { return m_data; }
137 private:
138     explicit PseudoIdSet(unsigned rawPseudoIdSet)
139         : m_data(rawPseudoIdSet)
140     {
141     }
142
143     unsigned m_data;
144 };
145
146 enum ColumnFill { ColumnFillBalance, ColumnFillAuto };
147
148 enum ColumnSpan { ColumnSpanNone = 0, ColumnSpanAll };
149
150 enum EBorderCollapse { BSEPARATE = 0, BCOLLAPSE = 1 };
151
152 // These have been defined in the order of their precedence for border-collapsing. Do
153 // not change this order! This order also must match the order in CSSValueKeywords.in.
154 enum EBorderStyle { BNONE, BHIDDEN, INSET, GROOVE, OUTSET, RIDGE, DOTTED, DASHED, SOLID, DOUBLE };
155
156 enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL };
157
158 enum OutlineIsAuto { AUTO_OFF = 0, AUTO_ON };
159
160 enum EPosition {
161     StaticPosition = 0,
162     RelativePosition = 1,
163     AbsolutePosition = 2,
164     StickyPosition = 3,
165     // This value is required to pack our bits efficiently in RenderObject.
166     FixedPosition = 6
167 };
168
169 enum EFloat {
170     NoFloat, LeftFloat, RightFloat
171 };
172
173 enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };
174
175 // Box decoration attributes. Not inherited.
176
177 enum EBoxDecorationBreak { DSLICE, DCLONE };
178
179 // Box attributes. Not inherited.
180
181 enum EBoxSizing { CONTENT_BOX, BORDER_BOX };
182
183 // Random visual rendering model attributes. Not inherited.
184
185 enum EOverflow {
186     OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE, OPAGEDX, OPAGEDY
187 };
188
189 enum EVerticalAlign {
190     BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP,
191     TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH
192 };
193
194 enum EClear {
195     CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3
196 };
197
198 enum ETableLayout {
199     TAUTO, TFIXED
200 };
201
202 enum TextCombine {
203     TextCombineNone, TextCombineHorizontal
204 };
205
206 enum EFillAttachment {
207     ScrollBackgroundAttachment, LocalBackgroundAttachment, FixedBackgroundAttachment
208 };
209
210 enum EFillBox {
211     BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox
212 };
213
214 enum EFillRepeat {
215     RepeatFill, NoRepeatFill, RoundFill, SpaceFill
216 };
217
218 enum EFillLayerType {
219     BackgroundFillLayer, MaskFillLayer
220 };
221
222 // CSS3 Background Values
223 enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
224
225 // CSS3 Background Position
226 enum BackgroundEdgeOrigin { TopEdge, RightEdge, BottomEdge, LeftEdge };
227
228 // CSS3 Mask Source Types
229 enum EMaskSourceType { MaskAlpha, MaskLuminance };
230
231 // CSS3 Marquee Properties
232
233 enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE };
234 enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 };
235
236 // Deprecated Flexible Box Properties
237
238 enum EBoxPack { Start, Center, End, Justify };
239 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BBASELINE };
240 enum EBoxOrient { HORIZONTAL, VERTICAL };
241 enum EBoxLines { SINGLE, MULTIPLE };
242 enum EBoxDirection { BNORMAL, BREVERSE };
243
244 // CSS3 Flexbox Properties
245
246 enum EAlignContent { AlignContentFlexStart, AlignContentFlexEnd, AlignContentCenter, AlignContentSpaceBetween, AlignContentSpaceAround, AlignContentStretch };
247 enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse };
248 enum EFlexWrap { FlexNoWrap, FlexWrap, FlexWrapReverse };
249 enum EJustifyContent { JustifyFlexStart, JustifyFlexEnd, JustifyCenter, JustifySpaceBetween, JustifySpaceAround };
250 enum ItemPosition {ItemPositionAuto, ItemPositionStretch, ItemPositionBaseline, ItemPositionLastBaseline, ItemPositionCenter, ItemPositionStart, ItemPositionEnd, ItemPositionSelfStart, ItemPositionSelfEnd, ItemPositionFlexStart, ItemPositionFlexEnd, ItemPositionLeft, ItemPositionRight};
251 enum OverflowAlignment {OverflowAlignmentDefault, OverflowAlignmentTrue, OverflowAlignmentSafe};
252
253
254 enum ETextSecurity {
255     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
256 };
257
258 // CSS3 User Modify Properties
259
260 enum EUserModify {
261     READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
262 };
263
264 // CSS3 User Drag Values
265
266 enum EUserDrag {
267     DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
268 };
269
270 // CSS3 User Select Values
271
272 enum EUserSelect {
273     SELECT_NONE, SELECT_TEXT, SELECT_ALL
274 };
275
276 // CSS3 Image Values
277 enum ObjectFit {
278     ObjectFitFill, ObjectFitContain, ObjectFitCover, ObjectFitNone, ObjectFitScaleDown
279 };
280
281 enum AspectRatioType {
282     AspectRatioAuto, AspectRatioFromIntrinsic, AspectRatioFromDimensions, AspectRatioSpecified
283 };
284
285 // Word Break Values. Matches WinIE, rather than CSS3
286
287 enum EWordBreak {
288     NormalWordBreak, BreakAllWordBreak, BreakWordBreak
289 };
290
291 enum EOverflowWrap {
292     NormalOverflowWrap, BreakOverflowWrap
293 };
294
295 enum ENBSPMode {
296     NBNORMAL, SPACE
297 };
298
299 enum LineBreak {
300     LineBreakAuto, LineBreakLoose, LineBreakNormal, LineBreakStrict, LineBreakAfterWhiteSpace
301 };
302
303 enum EResize {
304     RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
305 };
306
307 // The order of this enum must match the order of the list style types in CSSValueKeywords.in.
308 enum EListStyleType {
309     Disc,
310     Circle,
311     Square,
312     DecimalListStyle,
313     DecimalLeadingZero,
314     ArabicIndic,
315     BinaryListStyle,
316     Bengali,
317     Cambodian,
318     Khmer,
319     Devanagari,
320     Gujarati,
321     Gurmukhi,
322     Kannada,
323     LowerHexadecimal,
324     Lao,
325     Malayalam,
326     Mongolian,
327     Myanmar,
328     Octal,
329     Oriya,
330     Persian,
331     Urdu,
332     Telugu,
333     Tibetan,
334     Thai,
335     UpperHexadecimal,
336     LowerRoman,
337     UpperRoman,
338     LowerGreek,
339     LowerAlpha,
340     LowerLatin,
341     UpperAlpha,
342     UpperLatin,
343     Afar,
344     EthiopicHalehameAaEt,
345     EthiopicHalehameAaEr,
346     Amharic,
347     EthiopicHalehameAmEt,
348     AmharicAbegede,
349     EthiopicAbegedeAmEt,
350     CjkEarthlyBranch,
351     CjkHeavenlyStem,
352     Ethiopic,
353     EthiopicHalehameGez,
354     EthiopicAbegede,
355     EthiopicAbegedeGez,
356     HangulConsonant,
357     Hangul,
358     LowerNorwegian,
359     Oromo,
360     EthiopicHalehameOmEt,
361     Sidama,
362     EthiopicHalehameSidEt,
363     Somali,
364     EthiopicHalehameSoEt,
365     Tigre,
366     EthiopicHalehameTig,
367     TigrinyaEr,
368     EthiopicHalehameTiEr,
369     TigrinyaErAbegede,
370     EthiopicAbegedeTiEr,
371     TigrinyaEt,
372     EthiopicHalehameTiEt,
373     TigrinyaEtAbegede,
374     EthiopicAbegedeTiEt,
375     UpperGreek,
376     UpperNorwegian,
377     Asterisks,
378     Footnotes,
379     Hebrew,
380     Armenian,
381     LowerArmenian,
382     UpperArmenian,
383     Georgian,
384     CJKIdeographic,
385     Hiragana,
386     Katakana,
387     HiraganaIroha,
388     KatakanaIroha,
389     NoneListStyle
390 };
391
392 enum QuoteType {
393     OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE
394 };
395
396 enum EBorderFit { BorderFitBorder, BorderFitLines };
397
398 enum EAnimationFillMode { AnimationFillModeNone, AnimationFillModeForwards, AnimationFillModeBackwards, AnimationFillModeBoth };
399
400 enum EAnimPlayState {
401     AnimPlayStatePlaying = 0x0,
402     AnimPlayStatePaused = 0x1
403 };
404
405 enum EWhiteSpace {
406     NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
407 };
408
409 // The order of this enum must match the order of the text align values in CSSValueKeywords.in.
410 enum ETextAlign {
411     LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND,
412 };
413
414 enum ETextTransform {
415     CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
416 };
417
418 #if ENABLE(LETTERPRESS)
419 static const size_t TextDecorationBits = 5;
420 #else
421 static const size_t TextDecorationBits = 4;
422 #endif
423 enum TextDecoration {
424     TextDecorationNone = 0x0,
425     TextDecorationUnderline = 0x1,
426     TextDecorationOverline = 0x2,
427     TextDecorationLineThrough = 0x4,
428     TextDecorationBlink = 0x8,
429 #if ENABLE(LETTERPRESS)
430     TextDecorationLetterpress = 0x10,
431 #endif
432 };
433 inline TextDecoration operator| (TextDecoration a, TextDecoration b) { return TextDecoration(int(a) | int(b)); }
434 inline TextDecoration& operator|= (TextDecoration& a, TextDecoration b) { return a = a | b; }
435
436 enum TextDecorationStyle {
437     TextDecorationStyleSolid,
438     TextDecorationStyleDouble,
439     TextDecorationStyleDotted,
440     TextDecorationStyleDashed,
441     TextDecorationStyleWavy
442 };
443
444 #if ENABLE(CSS3_TEXT)
445 enum TextAlignLast {
446     TextAlignLastAuto, TextAlignLastStart, TextAlignLastEnd, TextAlignLastLeft, TextAlignLastRight, TextAlignLastCenter, TextAlignLastJustify
447 };
448
449 enum TextJustify {
450     TextJustifyAuto, TextJustifyNone, TextJustifyInterWord, TextJustifyDistribute
451 };
452 #endif // CSS3_TEXT
453
454 enum TextDecorationSkipItems {
455     TextDecorationSkipNone = 0,
456     TextDecorationSkipInk = 1 << 0,
457     TextDecorationSkipObjects = 1 << 1,
458     TextDecorationSkipAuto = 1 << 2
459 };
460 typedef unsigned TextDecorationSkip;
461
462 enum TextUnderlinePosition {
463     // FIXME: Implement support for 'under left' and 'under right' values.
464     TextUnderlinePositionAuto = 0x1, TextUnderlinePositionAlphabetic = 0x2, TextUnderlinePositionUnder = 0x4
465 };
466
467 enum EPageBreak {
468     PBAUTO, PBALWAYS, PBAVOID
469 };
470
471 enum EEmptyCell {
472     SHOW, HIDE
473 };
474
475 enum ECaptionSide {
476     CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
477 };
478
479 enum EListStylePosition { OUTSIDE, INSIDE };
480
481 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
482
483 enum ECursor {
484     // The following must match the order in CSSValueKeywords.in.
485     CursorAuto,
486     CursorCross,
487     CursorDefault,
488     CursorPointer,
489     CursorMove,
490     CursorVerticalText,
491     CursorCell,
492     CursorContextMenu,
493     CursorAlias,
494     CursorProgress,
495     CursorNoDrop,
496     CursorNotAllowed,
497     CursorZoomIn,
498     CursorZoomOut,
499     CursorEResize,
500     CursorNeResize,
501     CursorNwResize,
502     CursorNResize,
503     CursorSeResize,
504     CursorSwResize,
505     CursorSResize,
506     CursorWResize,
507     CursorEwResize,
508     CursorNsResize,
509     CursorNeswResize,
510     CursorNwseResize,
511     CursorColResize,
512     CursorRowResize,
513     CursorText,
514     CursorWait,
515     CursorHelp,
516     CursorAllScroll,
517     CursorWebkitGrab,
518     CursorWebkitGrabbing,
519
520     // The following are handled as exceptions so don't need to match.
521     CursorCopy,
522     CursorNone
523 };
524
525 #if ENABLE(CURSOR_VISIBILITY)
526 enum CursorVisibility {
527     CursorVisibilityAuto,
528     CursorVisibilityAutoHide,
529 };
530 #endif
531
532 // The order of this enum must match the order of the display values in CSSValueKeywords.in.
533 enum EDisplay {
534     INLINE, BLOCK, LIST_ITEM, COMPACT, INLINE_BLOCK,
535     TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
536     TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
537     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
538     TABLE_CAPTION, BOX, INLINE_BOX,
539     FLEX, WEBKIT_FLEX, INLINE_FLEX, WEBKIT_INLINE_FLEX,
540 #if ENABLE(CSS_GRID_LAYOUT)
541     GRID, INLINE_GRID,
542 #endif
543     NONE
544 };
545
546 enum EInsideLink {
547     NotInsideLink, InsideUnvisitedLink, InsideVisitedLink
548 };
549     
550 enum EPointerEvents {
551     PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
552     PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
553 };
554
555 enum ETransformStyle3D {
556     TransformStyle3DFlat, TransformStyle3DPreserve3D
557 };
558
559 enum EBackfaceVisibility {
560     BackfaceVisibilityVisible, BackfaceVisibilityHidden
561 };
562     
563 enum ELineClampType { LineClampLineCount, LineClampPercentage };
564
565 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto };
566
567 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation };
568
569 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen };
570
571 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom };
572
573 enum TextEmphasisPositions {
574     TextEmphasisPositionOver = 1 << 0,
575     TextEmphasisPositionUnder = 1 << 1,
576     TextEmphasisPositionLeft = 1 << 2,
577     TextEmphasisPositionRight = 1 << 3
578 };
579 typedef unsigned TextEmphasisPosition;
580
581 enum TextOrientation { TextOrientationVerticalRight, TextOrientationUpright, TextOrientationSideways, TextOrientationSidewaysRight };
582
583 enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis };
584
585 enum EImageRendering { ImageRenderingAuto = 0, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingCrispEdges };
586
587 enum ImageResolutionSource { ImageResolutionSpecified = 0, ImageResolutionFromImage };
588
589 enum ImageResolutionSnap { ImageResolutionNoSnap = 0, ImageResolutionSnapPixels };
590
591 enum Order { LogicalOrder = 0, VisualOrder };
592
593 enum RegionFragment { AutoRegionFragment, BreakRegionFragment };
594
595 enum ColumnAxis { HorizontalColumnAxis, VerticalColumnAxis, AutoColumnAxis };
596
597 enum ColumnProgression { NormalColumnProgression, ReverseColumnProgression };
598
599 enum LineSnap { LineSnapNone, LineSnapBaseline, LineSnapContain };
600
601 enum LineAlign { LineAlignNone, LineAlignEdges };
602
603 enum RubyPosition { RubyPositionBefore, RubyPositionAfter, RubyPositionInterCharacter };
604
605 #if ENABLE(CSS_GRID_LAYOUT)
606 static const size_t GridAutoFlowBits = 5;
607 enum InternalGridAutoFlowAlgorithm {
608     InternalAutoFlowAlgorithmSparse = 0x1,
609     InternalAutoFlowAlgorithmDense = 0x2,
610     InternalAutoFlowAlgorithmStack = 0x4
611 };
612
613 enum InternalGridAutoFlowDirection {
614     InternalAutoFlowDirectionRow = 0x8,
615     InternalAutoFlowDirectionColumn = 0x10
616 };
617
618 enum GridAutoFlow {
619     AutoFlowRow = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionRow,
620     AutoFlowColumn = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionColumn,
621     AutoFlowRowDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionRow,
622     AutoFlowColumnDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionColumn,
623     AutoFlowStackRow = InternalAutoFlowAlgorithmStack | InternalAutoFlowDirectionRow,
624     AutoFlowStackColumn = InternalAutoFlowAlgorithmStack | InternalAutoFlowDirectionColumn
625 };
626 #endif
627
628 // Reasonable maximum to prevent insane font sizes from causing crashes on some platforms (such as Windows).
629 static const float maximumAllowedFontSize = 1000000.0f;
630
631 #if ENABLE(CSS3_TEXT)
632 enum TextIndentLine { TextIndentFirstLine, TextIndentEachLine };
633 enum TextIndentType { TextIndentNormal, TextIndentHanging };
634 #endif
635
636 enum Isolation { IsolationAuto, IsolationIsolate };
637
638 // Fill, Stroke, ViewBox are just used for SVG.
639 enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, Fill, Stroke, ViewBox };
640
641 #if ENABLE(CSS_SCROLL_SNAP)
642 enum class ScrollSnapType {
643     None,
644     Proximity,
645     Mandatory
646 };
647 #endif
648
649 } // namespace WebCore
650
651 #endif // RenderStyleConstants_h