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/)
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.
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.
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.
26 #ifndef ComputedStyleConstants_h
27 #define ComputedStyleConstants_h
31 // Sides used when drawing borders and outlines. The values should run clockwise from top.
39 enum StyleRecalcChange
{
46 ReattachNoLayoutObject
49 static const size_t PrintColorAdjustBits
= 1;
50 enum PrintColorAdjust
{
51 PrintColorAdjustEconomy
,
55 // Static pseudo styles. Dynamic ones are produced on the fly.
57 // The order must be NOP ID, public IDs, and then internal IDs.
58 // If you add or remove a public ID, you must update _pseudoBits in ComputedStyle.
59 NOPSEUDO
, FIRST_LINE
, FIRST_LETTER
, BEFORE
, AFTER
, BACKDROP
, SELECTION
, FIRST_LINE_INHERITED
, SCROLLBAR
,
60 // Internal IDs follow:
61 SCROLLBAR_THUMB
, SCROLLBAR_BUTTON
, SCROLLBAR_TRACK
, SCROLLBAR_TRACK_PIECE
, SCROLLBAR_CORNER
, RESIZER
, INPUT_LIST_BUTTON
,
62 // Special values follow:
63 AFTER_LAST_INTERNAL_PSEUDOID
,
64 FIRST_PUBLIC_PSEUDOID
= FIRST_LINE
,
65 FIRST_INTERNAL_PSEUDOID
= SCROLLBAR_THUMB
,
66 PUBLIC_PSEUDOID_MASK
= ((1 << FIRST_INTERNAL_PSEUDOID
) - 1) & ~((1 << FIRST_PUBLIC_PSEUDOID
) - 1),
67 PSEUDO_ELEMENT_MASK
= (1 << (BEFORE
- 1)) | (1 << (AFTER
- 1)) | (1 << (BACKDROP
- 1))
70 enum ColumnFill
{ ColumnFillBalance
, ColumnFillAuto
};
72 enum ColumnSpan
{ ColumnSpanNone
= 0, ColumnSpanAll
};
74 enum EBorderCollapse
{ BSEPARATE
= 0, BCOLLAPSE
= 1 };
76 // These have been defined in the order of their precedence for border-collapsing. Do
77 // not change this order! This order also must match the order in CSSValueKeywords.in.
78 enum EBorderStyle
{ BNONE
, BHIDDEN
, INSET
, GROOVE
, OUTSET
, RIDGE
, DOTTED
, DASHED
, SOLID
, DOUBLE
};
80 enum EBorderPrecedence
{ BOFF
, BTABLE
, BCOLGROUP
, BCOL
, BROWGROUP
, BROW
, BCELL
};
82 enum OutlineIsAuto
{ AUTO_OFF
= 0, AUTO_ON
};
88 // This value is required to pack our bits efficiently in LayoutObject.
89 // FIXME: Is this still true now that we've remove position: sticky.
94 NoFloat
, LeftFloat
, RightFloat
97 enum EMarginCollapse
{ MCOLLAPSE
, MSEPARATE
, MDISCARD
};
99 // Box decoration attributes. Not inherited.
101 enum EBoxDecorationBreak
{ DSLICE
, DCLONE
};
103 // Box attributes. Not inherited.
105 enum EBoxSizing
{ CONTENT_BOX
, BORDER_BOX
};
107 // Random visual rendering model attributes. Not inherited.
110 OVISIBLE
, OHIDDEN
, OSCROLL
, OAUTO
, OOVERLAY
, OPAGEDX
, OPAGEDY
113 enum EVerticalAlign
{
114 BASELINE
, MIDDLE
, SUB
, SUPER
, TEXT_TOP
,
115 TEXT_BOTTOM
, TOP
, BOTTOM
, BASELINE_MIDDLE
, LENGTH
119 CNONE
= 0, CLEFT
= 1, CRIGHT
= 2, CBOTH
= 3
127 TextCombineNone
, TextCombineHorizontal
130 enum EFillAttachment
{
131 ScrollBackgroundAttachment
, LocalBackgroundAttachment
, FixedBackgroundAttachment
135 BorderFillBox
, PaddingFillBox
, ContentFillBox
, TextFillBox
139 RepeatFill
, NoRepeatFill
, RoundFill
, SpaceFill
142 enum EFillLayerType
{
143 BackgroundFillLayer
, MaskFillLayer
146 // CSS3 Background Values
147 enum EFillSizeType
{ Contain
, Cover
, SizeLength
, SizeNone
};
149 // CSS3 Background Position
150 enum BackgroundEdgeOrigin
{ TopEdge
, RightEdge
, BottomEdge
, LeftEdge
};
152 // CSS Mask Source Types
153 enum EMaskSourceType
{ MaskAlpha
, MaskLuminance
};
155 // Deprecated Flexible Box Properties
157 enum EBoxPack
{ Start
, Center
, End
, Justify
};
158 enum EBoxAlignment
{ BSTRETCH
, BSTART
, BCENTER
, BEND
, BBASELINE
};
159 enum EBoxOrient
{ HORIZONTAL
, VERTICAL
};
160 enum EBoxLines
{ SINGLE
, MULTIPLE
};
161 enum EBoxDirection
{ BNORMAL
, BREVERSE
};
163 // CSS3 Flexbox Properties
165 enum EFlexDirection
{ FlowRow
, FlowRowReverse
, FlowColumn
, FlowColumnReverse
};
166 enum EFlexWrap
{ FlexNoWrap
, FlexWrap
, FlexWrapReverse
};
169 TSNONE
, TSDISC
, TSCIRCLE
, TSSQUARE
172 // CSS3 User Modify Properties
175 READ_ONLY
, READ_WRITE
, READ_WRITE_PLAINTEXT_ONLY
178 // CSS3 User Drag Values
181 DRAG_AUTO
, DRAG_NONE
, DRAG_ELEMENT
184 // CSS3 User Select Values
187 SELECT_NONE
, SELECT_TEXT
, SELECT_ALL
191 enum ObjectFit
{ ObjectFitFill
, ObjectFitContain
, ObjectFitCover
, ObjectFitNone
, ObjectFitScaleDown
};
193 // Word Break Values. Matches WinIE and CSS3
196 NormalWordBreak
, BreakAllWordBreak
, KeepAllWordBreak
, BreakWordBreak
200 NormalOverflowWrap
, BreakOverflowWrap
204 LineBreakAuto
, LineBreakLoose
, LineBreakNormal
, LineBreakStrict
, LineBreakAfterWhiteSpace
208 RESIZE_NONE
, RESIZE_BOTH
, RESIZE_HORIZONTAL
, RESIZE_VERTICAL
211 // The order of this enum must match the order of the list style types in CSSValueKeywords.in.
212 enum EListStyleType
{
247 EthiopicHalehameTiEr
,
248 EthiopicHalehameTiEt
,
265 OPEN_QUOTE
, CLOSE_QUOTE
, NO_OPEN_QUOTE
, NO_CLOSE_QUOTE
268 enum EAnimPlayState
{
269 AnimPlayStatePlaying
,
274 NORMAL
, PRE
, PRE_WRAP
, PRE_LINE
, NOWRAP
, KHTML_NOWRAP
277 // The order of this enum must match the order of the text align values in CSSValueKeywords.in.
279 LEFT
, RIGHT
, CENTER
, JUSTIFY
, WEBKIT_LEFT
, WEBKIT_RIGHT
, WEBKIT_CENTER
, TASTART
, TAEND
,
282 enum ETextTransform
{
283 CAPITALIZE
, UPPERCASE
, LOWERCASE
, TTNONE
286 static const size_t TextDecorationBits
= 4;
287 enum TextDecoration
{
288 TextDecorationNone
= 0x0,
289 TextDecorationUnderline
= 0x1,
290 TextDecorationOverline
= 0x2,
291 TextDecorationLineThrough
= 0x4,
292 TextDecorationBlink
= 0x8
294 inline TextDecoration
operator| (TextDecoration a
, TextDecoration b
) { return TextDecoration(int(a
) | int(b
)); }
295 inline TextDecoration
& operator|= (TextDecoration
& a
, TextDecoration b
) { return a
= a
| b
; }
297 enum TextDecorationStyle
{
298 TextDecorationStyleSolid
,
299 TextDecorationStyleDouble
,
300 TextDecorationStyleDotted
,
301 TextDecorationStyleDashed
,
302 TextDecorationStyleWavy
306 TextAlignLastAuto
, TextAlignLastStart
, TextAlignLastEnd
, TextAlignLastLeft
, TextAlignLastRight
, TextAlignLastCenter
, TextAlignLastJustify
309 enum TextUnderlinePosition
{
310 // FIXME: Implement support for 'under left' and 'under right' values.
311 TextUnderlinePositionAuto
,
312 TextUnderlinePositionUnder
316 PBAUTO
, PBALWAYS
, PBAVOID
324 CAPTOP
, CAPBOTTOM
, CAPLEFT
, CAPRIGHT
327 enum EListStylePosition
{ OUTSIDE
, INSIDE
};
329 enum EVisibility
{ VISIBLE
, HIDDEN
, COLLAPSE
};
332 // The following must match the order in CSSValueKeywords.in.
338 CURSOR_VERTICAL_TEXT
,
366 CURSOR_WEBKIT_GRABBING
,
368 // The following are handled as exceptions so don't need to match.
373 // The order of this enum must match the order of the display values in CSSValueKeywords.in.
375 INLINE
, BLOCK
, LIST_ITEM
, INLINE_BLOCK
,
376 TABLE
, INLINE_TABLE
, TABLE_ROW_GROUP
,
377 TABLE_HEADER_GROUP
, TABLE_FOOTER_GROUP
, TABLE_ROW
,
378 TABLE_COLUMN_GROUP
, TABLE_COLUMN
, TABLE_CELL
,
379 TABLE_CAPTION
, BOX
, INLINE_BOX
,
383 FIRST_TABLE_DISPLAY
= TABLE
,
384 LAST_TABLE_DISPLAY
= TABLE_CAPTION
388 NotInsideLink
, InsideUnvisitedLink
, InsideVisitedLink
391 enum EPointerEvents
{
392 PE_NONE
, PE_AUTO
, PE_STROKE
, PE_FILL
, PE_PAINTED
, PE_VISIBLE
,
393 PE_VISIBLE_STROKE
, PE_VISIBLE_FILL
, PE_VISIBLE_PAINTED
, PE_BOUNDINGBOX
,
397 enum ETransformStyle3D
{
398 TransformStyle3DFlat
, TransformStyle3DPreserve3D
401 enum MotionRotationType
{ MotionRotationAuto
, MotionRotationFixed
};
403 enum EBackfaceVisibility
{
404 BackfaceVisibilityVisible
, BackfaceVisibilityHidden
407 enum ELineClampType
{ LineClampLineCount
, LineClampPercentage
};
409 enum Hyphens
{ HyphensNone
, HyphensManual
, HyphensAuto
};
411 enum ESpeak
{ SpeakNone
, SpeakNormal
, SpeakSpellOut
, SpeakDigits
, SpeakLiteralPunctuation
, SpeakNoPunctuation
};
413 enum TextEmphasisFill
{ TextEmphasisFillFilled
, TextEmphasisFillOpen
};
415 enum TextEmphasisMark
{ TextEmphasisMarkNone
, TextEmphasisMarkAuto
, TextEmphasisMarkDot
, TextEmphasisMarkCircle
, TextEmphasisMarkDoubleCircle
, TextEmphasisMarkTriangle
, TextEmphasisMarkSesame
, TextEmphasisMarkCustom
};
417 enum TextEmphasisPosition
{ TextEmphasisPositionOver
, TextEmphasisPositionUnder
};
419 enum TextOrientation
{ TextOrientationVerticalRight
, TextOrientationUpright
, TextOrientationSideways
, TextOrientationSidewaysRight
};
421 enum TextOverflow
{ TextOverflowClip
= 0, TextOverflowEllipsis
};
423 enum EImageRendering
{ ImageRenderingAuto
, ImageRenderingOptimizeSpeed
, ImageRenderingOptimizeQuality
, ImageRenderingOptimizeContrast
, ImageRenderingPixelated
};
425 enum ImageResolutionSource
{ ImageResolutionSpecified
= 0, ImageResolutionFromImage
};
427 enum ImageResolutionSnap
{ ImageResolutionNoSnap
= 0, ImageResolutionSnapPixels
};
429 enum Order
{ LogicalOrder
= 0, VisualOrder
};
431 enum WrapFlow
{ WrapFlowAuto
, WrapFlowBoth
, WrapFlowStart
, WrapFlowEnd
, WrapFlowMaximum
, WrapFlowClear
};
433 enum WrapThrough
{ WrapThroughWrap
, WrapThroughNone
};
435 enum RubyPosition
{ RubyPositionBefore
, RubyPositionAfter
};
437 static const size_t GridAutoFlowBits
= 4;
438 enum InternalGridAutoFlowAlgorithm
{
439 InternalAutoFlowAlgorithmSparse
= 0x1,
440 InternalAutoFlowAlgorithmDense
= 0x2
443 enum InternalGridAutoFlowDirection
{
444 InternalAutoFlowDirectionRow
= 0x4,
445 InternalAutoFlowDirectionColumn
= 0x8
449 AutoFlowRow
= InternalAutoFlowAlgorithmSparse
| InternalAutoFlowDirectionRow
,
450 AutoFlowColumn
= InternalAutoFlowAlgorithmSparse
| InternalAutoFlowDirectionColumn
,
451 AutoFlowRowDense
= InternalAutoFlowAlgorithmDense
| InternalAutoFlowDirectionRow
,
452 AutoFlowColumnDense
= InternalAutoFlowAlgorithmDense
| InternalAutoFlowDirectionColumn
455 enum DraggableRegionMode
{ DraggableRegionNone
, DraggableRegionDrag
, DraggableRegionNoDrag
};
457 static const size_t TouchActionBits
= 6;
459 TouchActionAuto
= 0x0,
460 TouchActionNone
= 0x1,
461 TouchActionPanLeft
= 0x2,
462 TouchActionPanRight
= 0x4,
463 TouchActionPanX
= TouchActionPanLeft
| TouchActionPanRight
,
464 TouchActionPanUp
= 0x8,
465 TouchActionPanDown
= 0x10,
466 TouchActionPanY
= TouchActionPanUp
| TouchActionPanDown
,
467 TouchActionPinchZoom
= 0x20,
469 inline TouchAction
operator| (TouchAction a
, TouchAction b
) { return TouchAction(int(a
) | int(b
)); }
470 inline TouchAction
& operator|= (TouchAction
& a
, TouchAction b
) { return a
= a
| b
; }
471 inline TouchAction
operator& (TouchAction a
, TouchAction b
) { return TouchAction(int(a
) & int(b
)); }
472 inline TouchAction
& operator&= (TouchAction
& a
, TouchAction b
) { return a
= a
& b
; }
474 enum EIsolation
{ IsolationAuto
, IsolationIsolate
};
479 ItemPositionBaseline
,
480 ItemPositionLastBaseline
,
484 ItemPositionSelfStart
,
486 ItemPositionFlexStart
,
492 enum OverflowAlignment
{
493 OverflowAlignmentDefault
,
494 OverflowAlignmentTrue
,
495 OverflowAlignmentSafe
498 enum ItemPositionType
{
503 enum ContentPosition
{
505 ContentPositionBaseline
,
506 ContentPositionLastBaseline
,
507 ContentPositionCenter
,
508 ContentPositionStart
,
510 ContentPositionFlexStart
,
511 ContentPositionFlexEnd
,
516 enum ContentDistributionType
{
517 ContentDistributionDefault
,
518 ContentDistributionSpaceBetween
,
519 ContentDistributionSpaceAround
,
520 ContentDistributionSpaceEvenly
,
521 ContentDistributionStretch
524 // Reasonable maximum to prevent insane font sizes from causing crashes on some platforms (such as Windows).
525 static const float maximumAllowedFontSize
= 1000000.0f
;
527 enum TextIndentLine
{ TextIndentFirstLine
, TextIndentEachLine
};
528 enum TextIndentType
{ TextIndentNormal
, TextIndentHanging
};
530 enum CSSBoxType
{ BoxMissing
= 0, MarginBox
, BorderBox
, PaddingBox
, ContentBox
};
532 enum ScrollSnapType
{
534 ScrollSnapTypeMandatory
,
535 ScrollSnapTypeProximity
540 #endif // ComputedStyleConstants_h