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