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 RenderStyleConstants_h
27 #define RenderStyleConstants_h
31 // Sides used when drawing borders and outlines. The values should run clockwise from top.
39 enum StyleRecalcChange {
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 RenderStyle.
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 RenderObject.
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 EAlignContent { AlignContentFlexStart, AlignContentFlexEnd, AlignContentCenter, AlignContentSpaceBetween, AlignContentSpaceAround, AlignContentStretch };
166 enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse };
167 enum EFlexWrap { FlexNoWrap, FlexWrap, FlexWrapReverse };
170 TSNONE, TSDISC, TSCIRCLE, TSSQUARE
173 // CSS3 User Modify Properties
176 READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
179 // CSS3 User Drag Values
182 DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
185 // CSS3 User Select Values
188 SELECT_NONE, SELECT_TEXT, SELECT_ALL
192 enum ObjectFit { ObjectFitFill, ObjectFitContain, ObjectFitCover, ObjectFitNone, ObjectFitScaleDown };
194 // Word Break Values. Matches WinIE, rather than CSS3
197 NormalWordBreak, BreakAllWordBreak, BreakWordBreak
201 NormalOverflowWrap, BreakOverflowWrap
205 LineBreakAuto, LineBreakLoose, LineBreakNormal, LineBreakStrict, LineBreakAfterWhiteSpace
209 RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
212 // The order of this enum must match the order of the list style types in CSSValueKeywords.in.
213 enum EListStyleType {
249 EthiopicHalehameAaEt,
250 EthiopicHalehameAaEr,
252 EthiopicHalehameAmEt,
265 EthiopicHalehameOmEt,
267 EthiopicHalehameSidEt,
269 EthiopicHalehameSoEt,
273 EthiopicHalehameTiEr,
277 EthiopicHalehameTiEt,
298 OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE
301 enum EAnimPlayState {
302 AnimPlayStatePlaying,
307 NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
310 // The order of this enum must match the order of the text align values in CSSValueKeywords.in.
312 LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND,
315 enum ETextTransform {
316 CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
319 static const size_t TextDecorationBits = 4;
320 enum TextDecoration {
321 TextDecorationNone = 0x0,
322 TextDecorationUnderline = 0x1,
323 TextDecorationOverline = 0x2,
324 TextDecorationLineThrough = 0x4,
325 TextDecorationBlink = 0x8
327 inline TextDecoration operator| (TextDecoration a, TextDecoration b) { return TextDecoration(int(a) | int(b)); }
328 inline TextDecoration& operator|= (TextDecoration& a, TextDecoration b) { return a = a | b; }
330 enum TextDecorationStyle {
331 TextDecorationStyleSolid,
332 TextDecorationStyleDouble,
333 TextDecorationStyleDotted,
334 TextDecorationStyleDashed,
335 TextDecorationStyleWavy
339 TextAlignLastAuto, TextAlignLastStart, TextAlignLastEnd, TextAlignLastLeft, TextAlignLastRight, TextAlignLastCenter, TextAlignLastJustify
343 TextJustifyAuto, TextJustifyNone, TextJustifyInterWord, TextJustifyDistribute
346 enum TextUnderlinePosition {
347 // FIXME: Implement support for 'under left' and 'under right' values.
348 TextUnderlinePositionAuto,
349 TextUnderlinePositionUnder
353 PBAUTO, PBALWAYS, PBAVOID
361 CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
364 enum EListStylePosition { OUTSIDE, INSIDE };
366 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
369 // The following must match the order in CSSValueKeywords.in.
375 CURSOR_VERTICAL_TEXT,
403 CURSOR_WEBKIT_GRABBING,
405 // The following are handled as exceptions so don't need to match.
410 // The order of this enum must match the order of the display values in CSSValueKeywords.in.
412 INLINE, BLOCK, LIST_ITEM, INLINE_BLOCK,
413 TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
414 TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
415 TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
416 TABLE_CAPTION, BOX, INLINE_BOX,
420 FIRST_TABLE_DISPLAY = TABLE,
421 LAST_TABLE_DISPLAY = TABLE_CAPTION
425 NotInsideLink, InsideUnvisitedLink, InsideVisitedLink
428 enum EPointerEvents {
429 PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
430 PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_BOUNDINGBOX,
434 enum ETransformStyle3D {
435 TransformStyle3DFlat, TransformStyle3DPreserve3D
438 enum EBackfaceVisibility {
439 BackfaceVisibilityVisible, BackfaceVisibilityHidden
442 enum ELineClampType { LineClampLineCount, LineClampPercentage };
444 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto };
446 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation };
448 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen };
450 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom };
452 enum TextEmphasisPosition { TextEmphasisPositionOver, TextEmphasisPositionUnder };
454 enum TextOrientation { TextOrientationVerticalRight, TextOrientationUpright, TextOrientationSideways, TextOrientationSidewaysRight };
456 enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis };
458 enum EImageRendering { ImageRenderingAuto, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingOptimizeContrast, ImageRenderingPixelated };
460 enum ImageResolutionSource { ImageResolutionSpecified = 0, ImageResolutionFromImage };
462 enum ImageResolutionSnap { ImageResolutionNoSnap = 0, ImageResolutionSnapPixels };
464 enum Order { LogicalOrder = 0, VisualOrder };
466 enum WrapFlow { WrapFlowAuto, WrapFlowBoth, WrapFlowStart, WrapFlowEnd, WrapFlowMaximum, WrapFlowClear };
468 enum WrapThrough { WrapThroughWrap, WrapThroughNone };
470 enum RubyPosition { RubyPositionBefore, RubyPositionAfter };
472 static const size_t GridAutoFlowBits = 5;
473 enum InternalGridAutoFlowAlgorithm {
474 InternalAutoFlowAlgorithmSparse = 0x1,
475 InternalAutoFlowAlgorithmDense = 0x2,
476 InternalAutoFlowAlgorithmStack = 0x4
479 enum InternalGridAutoFlowDirection {
480 InternalAutoFlowDirectionRow = 0x8,
481 InternalAutoFlowDirectionColumn = 0x10
485 AutoFlowRow = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionRow,
486 AutoFlowColumn = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionColumn,
487 AutoFlowRowDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionRow,
488 AutoFlowColumnDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionColumn,
489 AutoFlowStackRow = InternalAutoFlowAlgorithmStack | InternalAutoFlowDirectionRow,
490 AutoFlowStackColumn = InternalAutoFlowAlgorithmStack | InternalAutoFlowDirectionColumn
493 enum DraggableRegionMode { DraggableRegionNone, DraggableRegionDrag, DraggableRegionNoDrag };
495 static const size_t TouchActionBits = 4;
497 TouchActionAuto = 0x0,
498 TouchActionNone = 0x1,
499 TouchActionPanX = 0x2,
500 TouchActionPanY = 0x4,
501 TouchActionPinchZoom = 0x8,
503 inline TouchAction operator| (TouchAction a, TouchAction b) { return TouchAction(int(a) | int(b)); }
504 inline TouchAction& operator|= (TouchAction& a, TouchAction b) { return a = a | b; }
505 inline TouchAction operator& (TouchAction a, TouchAction b) { return TouchAction(int(a) & int(b)); }
506 inline TouchAction& operator&= (TouchAction& a, TouchAction b) { return a = a & b; }
508 enum EIsolation { IsolationAuto, IsolationIsolate };
510 enum TouchActionDelay { TouchActionDelayNone, TouchActionDelayScript };
515 ItemPositionBaseline,
516 ItemPositionLastBaseline,
520 ItemPositionSelfStart,
522 ItemPositionFlexStart,
528 enum OverflowAlignment {
529 OverflowAlignmentDefault,
530 OverflowAlignmentTrue,
531 OverflowAlignmentSafe
534 enum ItemPositionType {
539 enum ContentPosition {
541 ContentPositionBaseline,
542 ContentPositionLastBaseline,
543 ContentPositionCenter,
544 ContentPositionStart,
546 ContentPositionFlexStart,
547 ContentPositionFlexEnd,
552 enum ContentDistributionType {
553 ContentDistributionDefault,
554 ContentDistributionSpaceBetween,
555 ContentDistributionSpaceAround,
556 ContentDistributionSpaceEvenly,
557 ContentDistributionStretch
560 // Reasonable maximum to prevent insane font sizes from causing crashes on some platforms (such as Windows).
561 static const float maximumAllowedFontSize = 1000000.0f;
563 enum TextIndentLine { TextIndentFirstLine, TextIndentEachLine };
564 enum TextIndentType { TextIndentNormal, TextIndentHanging };
566 enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox };
570 #endif // RenderStyleConstants_h