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