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