cc9492d607d0eb3f6b12a1c4eafa9af31b715098
[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 EAlignItems { AlignAuto, AlignFlexStart, AlignFlexEnd, AlignCenter, AlignStretch, AlignBaseline };
249 enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse };
250 enum EFlexWrap { FlexNoWrap, FlexWrap, FlexWrapReverse };
251 enum EJustifyContent { JustifyFlexStart, JustifyFlexEnd, JustifyCenter, JustifySpaceBetween, JustifySpaceAround };
252 enum EJustifySelf {JustifySelfAuto, JustifySelfStretch, JustifySelfBaseline, JustifySelfCenter, JustifySelfStart, JustifySelfEnd, JustifySelfSelfStart, JustifySelfSelfEnd, JustifySelfFlexStart, JustifySelfFlexEnd, JustifySelfLeft, JustifySelfRight};
253 enum EJustifySelfOverflowAlignment {JustifySelfOverflowAlignmentDefault, JustifySelfOverflowAlignmentTrue, JustifySelfOverflowAlignmentSafe};
254
255
256 enum ETextSecurity {
257     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
258 };
259
260 // CSS3 User Modify Properties
261
262 enum EUserModify {
263     READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
264 };
265
266 // CSS3 User Drag Values
267
268 enum EUserDrag {
269     DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
270 };
271
272 // CSS3 User Select Values
273
274 enum EUserSelect {
275     SELECT_NONE, SELECT_TEXT, SELECT_ALL
276 };
277
278 // CSS3 Image Values
279 enum ObjectFit {
280     ObjectFitFill, ObjectFitContain, ObjectFitCover, ObjectFitNone, ObjectFitScaleDown
281 };
282
283 enum AspectRatioType {
284     AspectRatioAuto, AspectRatioFromIntrinsic, AspectRatioFromDimensions, AspectRatioSpecified
285 };
286
287 // Word Break Values. Matches WinIE, rather than CSS3
288
289 enum EWordBreak {
290     NormalWordBreak, BreakAllWordBreak, BreakWordBreak
291 };
292
293 enum EOverflowWrap {
294     NormalOverflowWrap, BreakOverflowWrap
295 };
296
297 enum ENBSPMode {
298     NBNORMAL, SPACE
299 };
300
301 enum LineBreak {
302     LineBreakAuto, LineBreakLoose, LineBreakNormal, LineBreakStrict, LineBreakAfterWhiteSpace
303 };
304
305 enum EResize {
306     RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
307 };
308
309 // The order of this enum must match the order of the list style types in CSSValueKeywords.in.
310 enum EListStyleType {
311     Disc,
312     Circle,
313     Square,
314     DecimalListStyle,
315     DecimalLeadingZero,
316     ArabicIndic,
317     BinaryListStyle,
318     Bengali,
319     Cambodian,
320     Khmer,
321     Devanagari,
322     Gujarati,
323     Gurmukhi,
324     Kannada,
325     LowerHexadecimal,
326     Lao,
327     Malayalam,
328     Mongolian,
329     Myanmar,
330     Octal,
331     Oriya,
332     Persian,
333     Urdu,
334     Telugu,
335     Tibetan,
336     Thai,
337     UpperHexadecimal,
338     LowerRoman,
339     UpperRoman,
340     LowerGreek,
341     LowerAlpha,
342     LowerLatin,
343     UpperAlpha,
344     UpperLatin,
345     Afar,
346     EthiopicHalehameAaEt,
347     EthiopicHalehameAaEr,
348     Amharic,
349     EthiopicHalehameAmEt,
350     AmharicAbegede,
351     EthiopicAbegedeAmEt,
352     CjkEarthlyBranch,
353     CjkHeavenlyStem,
354     Ethiopic,
355     EthiopicHalehameGez,
356     EthiopicAbegede,
357     EthiopicAbegedeGez,
358     HangulConsonant,
359     Hangul,
360     LowerNorwegian,
361     Oromo,
362     EthiopicHalehameOmEt,
363     Sidama,
364     EthiopicHalehameSidEt,
365     Somali,
366     EthiopicHalehameSoEt,
367     Tigre,
368     EthiopicHalehameTig,
369     TigrinyaEr,
370     EthiopicHalehameTiEr,
371     TigrinyaErAbegede,
372     EthiopicAbegedeTiEr,
373     TigrinyaEt,
374     EthiopicHalehameTiEt,
375     TigrinyaEtAbegede,
376     EthiopicAbegedeTiEt,
377     UpperGreek,
378     UpperNorwegian,
379     Asterisks,
380     Footnotes,
381     Hebrew,
382     Armenian,
383     LowerArmenian,
384     UpperArmenian,
385     Georgian,
386     CJKIdeographic,
387     Hiragana,
388     Katakana,
389     HiraganaIroha,
390     KatakanaIroha,
391     NoneListStyle
392 };
393
394 enum QuoteType {
395     OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE
396 };
397
398 enum EBorderFit { BorderFitBorder, BorderFitLines };
399
400 enum EAnimationFillMode { AnimationFillModeNone, AnimationFillModeForwards, AnimationFillModeBackwards, AnimationFillModeBoth };
401
402 enum EAnimPlayState {
403     AnimPlayStatePlaying = 0x0,
404     AnimPlayStatePaused = 0x1
405 };
406
407 enum EWhiteSpace {
408     NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
409 };
410
411 // The order of this enum must match the order of the text align values in CSSValueKeywords.in.
412 enum ETextAlign {
413     LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND,
414 };
415
416 enum ETextTransform {
417     CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
418 };
419
420 #if ENABLE(LETTERPRESS)
421 static const size_t TextDecorationBits = 5;
422 #else
423 static const size_t TextDecorationBits = 4;
424 #endif
425 enum TextDecoration {
426     TextDecorationNone = 0x0,
427     TextDecorationUnderline = 0x1,
428     TextDecorationOverline = 0x2,
429     TextDecorationLineThrough = 0x4,
430     TextDecorationBlink = 0x8,
431 #if ENABLE(LETTERPRESS)
432     TextDecorationLetterpress = 0x10,
433 #endif
434 };
435 inline TextDecoration operator| (TextDecoration a, TextDecoration b) { return TextDecoration(int(a) | int(b)); }
436 inline TextDecoration& operator|= (TextDecoration& a, TextDecoration b) { return a = a | b; }
437
438 enum TextDecorationStyle {
439     TextDecorationStyleSolid,
440     TextDecorationStyleDouble,
441     TextDecorationStyleDotted,
442     TextDecorationStyleDashed,
443     TextDecorationStyleWavy
444 };
445
446 #if ENABLE(CSS3_TEXT)
447 enum TextAlignLast {
448     TextAlignLastAuto, TextAlignLastStart, TextAlignLastEnd, TextAlignLastLeft, TextAlignLastRight, TextAlignLastCenter, TextAlignLastJustify
449 };
450
451 enum TextJustify {
452     TextJustifyAuto, TextJustifyNone, TextJustifyInterWord, TextJustifyDistribute
453 };
454 #endif // CSS3_TEXT
455
456 enum TextDecorationSkipItems {
457     TextDecorationSkipNone = 0,
458     TextDecorationSkipInk = 1 << 0,
459     TextDecorationSkipObjects = 1 << 1,
460     TextDecorationSkipAuto = 1 << 2
461 };
462 typedef unsigned TextDecorationSkip;
463
464 enum TextUnderlinePosition {
465     // FIXME: Implement support for 'under left' and 'under right' values.
466     TextUnderlinePositionAuto = 0x1, TextUnderlinePositionAlphabetic = 0x2, TextUnderlinePositionUnder = 0x4
467 };
468
469 enum EPageBreak {
470     PBAUTO, PBALWAYS, PBAVOID
471 };
472
473 enum EEmptyCell {
474     SHOW, HIDE
475 };
476
477 enum ECaptionSide {
478     CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
479 };
480
481 enum EListStylePosition { OUTSIDE, INSIDE };
482
483 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
484
485 enum ECursor {
486     // The following must match the order in CSSValueKeywords.in.
487     CursorAuto,
488     CursorCross,
489     CursorDefault,
490     CursorPointer,
491     CursorMove,
492     CursorVerticalText,
493     CursorCell,
494     CursorContextMenu,
495     CursorAlias,
496     CursorProgress,
497     CursorNoDrop,
498     CursorNotAllowed,
499     CursorZoomIn,
500     CursorZoomOut,
501     CursorEResize,
502     CursorNeResize,
503     CursorNwResize,
504     CursorNResize,
505     CursorSeResize,
506     CursorSwResize,
507     CursorSResize,
508     CursorWResize,
509     CursorEwResize,
510     CursorNsResize,
511     CursorNeswResize,
512     CursorNwseResize,
513     CursorColResize,
514     CursorRowResize,
515     CursorText,
516     CursorWait,
517     CursorHelp,
518     CursorAllScroll,
519     CursorWebkitGrab,
520     CursorWebkitGrabbing,
521
522     // The following are handled as exceptions so don't need to match.
523     CursorCopy,
524     CursorNone
525 };
526
527 #if ENABLE(CURSOR_VISIBILITY)
528 enum CursorVisibility {
529     CursorVisibilityAuto,
530     CursorVisibilityAutoHide,
531 };
532 #endif
533
534 // The order of this enum must match the order of the display values in CSSValueKeywords.in.
535 enum EDisplay {
536     INLINE, BLOCK, LIST_ITEM, COMPACT, INLINE_BLOCK,
537     TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
538     TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
539     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
540     TABLE_CAPTION, BOX, INLINE_BOX,
541     FLEX, WEBKIT_FLEX, INLINE_FLEX, WEBKIT_INLINE_FLEX,
542 #if ENABLE(CSS_GRID_LAYOUT)
543     GRID, INLINE_GRID,
544 #endif
545     NONE
546 };
547
548 enum EInsideLink {
549     NotInsideLink, InsideUnvisitedLink, InsideVisitedLink
550 };
551     
552 enum EPointerEvents {
553     PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
554     PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
555 };
556
557 enum ETransformStyle3D {
558     TransformStyle3DFlat, TransformStyle3DPreserve3D
559 };
560
561 enum EBackfaceVisibility {
562     BackfaceVisibilityVisible, BackfaceVisibilityHidden
563 };
564     
565 enum ELineClampType { LineClampLineCount, LineClampPercentage };
566
567 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto };
568
569 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation };
570
571 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen };
572
573 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom };
574
575 enum TextEmphasisPositions {
576     TextEmphasisPositionOver = 1 << 0,
577     TextEmphasisPositionUnder = 1 << 1,
578     TextEmphasisPositionLeft = 1 << 2,
579     TextEmphasisPositionRight = 1 << 3
580 };
581 typedef unsigned TextEmphasisPosition;
582
583 enum TextOrientation { TextOrientationVerticalRight, TextOrientationUpright, TextOrientationSideways, TextOrientationSidewaysRight };
584
585 enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis };
586
587 enum EImageRendering { ImageRenderingAuto = 0, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingCrispEdges };
588
589 enum ImageResolutionSource { ImageResolutionSpecified = 0, ImageResolutionFromImage };
590
591 enum ImageResolutionSnap { ImageResolutionNoSnap = 0, ImageResolutionSnapPixels };
592
593 enum Order { LogicalOrder = 0, VisualOrder };
594
595 enum RegionFragment { AutoRegionFragment, BreakRegionFragment };
596
597 enum ColumnAxis { HorizontalColumnAxis, VerticalColumnAxis, AutoColumnAxis };
598
599 enum ColumnProgression { NormalColumnProgression, ReverseColumnProgression };
600
601 enum LineSnap { LineSnapNone, LineSnapBaseline, LineSnapContain };
602
603 enum LineAlign { LineAlignNone, LineAlignEdges };
604
605 enum RubyPosition { RubyPositionBefore, RubyPositionAfter, RubyPositionInterCharacter };
606
607 #if ENABLE(CSS_GRID_LAYOUT)
608 static const size_t GridAutoFlowBits = 4;
609 enum InternalGridAutoFlowAlgorithm {
610     InternalAutoFlowAlgorithmSparse = 0x1,
611     InternalAutoFlowAlgorithmDense = 0x2,
612 };
613
614 enum InternalGridAutoFlowDirection {
615     InternalAutoFlowDirectionRow = 0x4,
616     InternalAutoFlowDirectionColumn = 0x8
617 };
618
619 enum GridAutoFlow {
620     AutoFlowRow = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionRow,
621     AutoFlowColumn = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionColumn,
622     AutoFlowRowDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionRow,
623     AutoFlowColumnDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionColumn
624 };
625 #endif
626
627 // Reasonable maximum to prevent insane font sizes from causing crashes on some platforms (such as Windows).
628 static const float maximumAllowedFontSize = 1000000.0f;
629
630 #if ENABLE(CSS3_TEXT)
631 enum TextIndentLine { TextIndentFirstLine, TextIndentEachLine };
632 enum TextIndentType { TextIndentNormal, TextIndentHanging };
633 #endif
634
635 enum Isolation { IsolationAuto, IsolationIsolate };
636
637 // Fill, Stroke, ViewBox are just used for SVG.
638 enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, Fill, Stroke, ViewBox };
639
640 #if ENABLE(CSS_SCROLL_SNAP)
641 enum class ScrollSnapType {
642     None,
643     Proximity,
644     Mandatory
645 };
646 #endif
647
648 #if ENABLE(CSS_TRAILING_WORD)
649 enum class TrailingWord {
650     Auto,
651     PartiallyBalanced
652 };
653 #endif
654
655 } // namespace WebCore
656
657 #endif // RenderStyleConstants_h