diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/style/RenderStyleConstants.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/rendering/style/RenderStyleConstants.h')
-rw-r--r-- | Source/WebCore/rendering/style/RenderStyleConstants.h | 322 |
1 files changed, 249 insertions, 73 deletions
diff --git a/Source/WebCore/rendering/style/RenderStyleConstants.h b/Source/WebCore/rendering/style/RenderStyleConstants.h index 11b428559..6daad935f 100644 --- a/Source/WebCore/rendering/style/RenderStyleConstants.h +++ b/Source/WebCore/rendering/style/RenderStyleConstants.h @@ -23,11 +23,14 @@ * */ -#ifndef RenderStyleConstants_h -#define RenderStyleConstants_h +#pragma once + +#include <initializer_list> namespace WebCore { +class TextStream; + static const size_t PrintColorAdjustBits = 1; enum PrintColorAdjust { PrintColorAdjustEconomy, @@ -46,16 +49,15 @@ enum PrintColorAdjust { // - StyleDifferenceLayout - A full layout is required. enum StyleDifference { StyleDifferenceEqual, -#if USE(ACCELERATED_COMPOSITING) StyleDifferenceRecompositeLayer, -#endif StyleDifferenceRepaint, StyleDifferenceRepaintIfTextOrBorderOrOutline, StyleDifferenceRepaintLayer, StyleDifferenceLayoutPositionedMovementOnly, StyleDifferenceSimplifiedLayout, StyleDifferenceSimplifiedLayoutAndPositionedMovement, - StyleDifferenceLayout + StyleDifferenceLayout, + StyleDifferenceNewStyle }; // When some style properties change, different amounts of work have to be done depending on @@ -63,26 +65,91 @@ enum StyleDifference { // A simple StyleDifference does not provide enough information so we return a bit mask of // StyleDifferenceContextSensitiveProperties from RenderStyle::diff() too. enum StyleDifferenceContextSensitiveProperty { - ContextSensitivePropertyNone = 0, - ContextSensitivePropertyTransform = (1 << 0), - ContextSensitivePropertyOpacity = (1 << 1), - ContextSensitivePropertyFilter = (1 << 2) + ContextSensitivePropertyNone = 0, + ContextSensitivePropertyTransform = 1 << 0, + ContextSensitivePropertyOpacity = 1 << 1, + ContextSensitivePropertyFilter = 1 << 2, + ContextSensitivePropertyClipRect = 1 << 3, + ContextSensitivePropertyClipPath = 1 << 4, + ContextSensitivePropertyWillChange = 1 << 5, }; // Static pseudo styles. Dynamic ones are produced on the fly. -enum PseudoId { +enum PseudoId : unsigned char { // The order must be NOP ID, public IDs, and then internal IDs. - NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR, + NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, SCROLLBAR, // Internal IDs follow: SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER, - INPUT_LIST_BUTTON, AFTER_LAST_INTERNAL_PSEUDOID, - FULL_SCREEN, FULL_SCREEN_DOCUMENT, FULL_SCREEN_ANCESTOR, ANIMATING_FULL_SCREEN_TRANSITION, FIRST_PUBLIC_PSEUDOID = FIRST_LINE, FIRST_INTERNAL_PSEUDOID = SCROLLBAR_THUMB, PUBLIC_PSEUDOID_MASK = ((1 << FIRST_INTERNAL_PSEUDOID) - 1) & ~((1 << FIRST_PUBLIC_PSEUDOID) - 1) }; +class PseudoIdSet { +public: + PseudoIdSet() + : m_data(0) + { + } + + PseudoIdSet(std::initializer_list<PseudoId> initializerList) + : m_data(0) + { + for (PseudoId pseudoId : initializerList) + add(pseudoId); + } + + static PseudoIdSet fromMask(unsigned rawPseudoIdSet) + { + return PseudoIdSet(rawPseudoIdSet); + } + + bool has(PseudoId pseudoId) const + { + ASSERT((sizeof(m_data) * 8) > pseudoId); + return m_data & (1U << pseudoId); + } + + void add(PseudoId pseudoId) + { + ASSERT((sizeof(m_data) * 8) > pseudoId); + m_data |= (1U << pseudoId); + } + + void merge(PseudoIdSet source) + { + m_data |= source.m_data; + } + + PseudoIdSet operator &(const PseudoIdSet& pseudoIdSet) const + { + return PseudoIdSet(m_data & pseudoIdSet.m_data); + } + + PseudoIdSet operator |(const PseudoIdSet& pseudoIdSet) const + { + return PseudoIdSet(m_data | pseudoIdSet.m_data); + } + + explicit operator bool() const + { + return m_data; + } + + unsigned data() const { return m_data; } + + static ptrdiff_t dataMemoryOffset() { return OBJECT_OFFSETOF(PseudoIdSet, m_data); } + +private: + explicit PseudoIdSet(unsigned rawPseudoIdSet) + : m_data(rawPseudoIdSet) + { + } + + unsigned m_data; +}; + enum ColumnFill { ColumnFillBalance, ColumnFillAuto }; enum ColumnSpan { ColumnSpanNone = 0, ColumnSpanAll }; @@ -123,7 +190,7 @@ enum EBoxSizing { CONTENT_BOX, BORDER_BOX }; // Random visual rendering model attributes. Not inherited. enum EOverflow { - OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE, OPAGEDX, OPAGEDY + OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OPAGEDX, OPAGEDY }; enum EVerticalAlign { @@ -162,8 +229,8 @@ enum EFillLayerType { // CSS3 Background Values enum EFillSizeType { Contain, Cover, SizeLength, SizeNone }; -// CSS3 Background Position -enum BackgroundEdgeOrigin { TopEdge, RightEdge, BottomEdge, LeftEdge }; +// CSS3 <position> +enum class Edge { Top, Right, Bottom, Left }; // CSS3 Mask Source Types enum EMaskSourceType { MaskAlpha, MaskLuminance }; @@ -184,10 +251,13 @@ enum EBoxDirection { BNORMAL, BREVERSE }; // CSS3 Flexbox Properties enum EAlignContent { AlignContentFlexStart, AlignContentFlexEnd, AlignContentCenter, AlignContentSpaceBetween, AlignContentSpaceAround, AlignContentStretch }; -enum EAlignItems { AlignAuto, AlignFlexStart, AlignFlexEnd, AlignCenter, AlignStretch, AlignBaseline }; enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse }; enum EFlexWrap { FlexNoWrap, FlexWrap, FlexWrapReverse }; -enum EJustifyContent { JustifyFlexStart, JustifyFlexEnd, JustifyCenter, JustifySpaceBetween, JustifySpaceAround }; +enum ItemPosition { ItemPositionAuto, ItemPositionNormal, ItemPositionStretch, ItemPositionBaseline, ItemPositionLastBaseline, ItemPositionCenter, ItemPositionStart, ItemPositionEnd, ItemPositionSelfStart, ItemPositionSelfEnd, ItemPositionFlexStart, ItemPositionFlexEnd, ItemPositionLeft, ItemPositionRight }; +enum OverflowAlignment { OverflowAlignmentDefault, OverflowAlignmentUnsafe, OverflowAlignmentSafe }; +enum ItemPositionType { NonLegacyPosition, LegacyPosition }; +enum ContentPosition { ContentPositionNormal, ContentPositionBaseline, ContentPositionLastBaseline, ContentPositionCenter, ContentPositionStart, ContentPositionEnd, ContentPositionFlexStart, ContentPositionFlexEnd, ContentPositionLeft, ContentPositionRight }; +enum ContentDistributionType { ContentDistributionDefault, ContentDistributionSpaceBetween, ContentDistributionSpaceAround, ContentDistributionSpaceEvenly, ContentDistributionStretch }; enum ETextSecurity { TSNONE, TSDISC, TSCIRCLE, TSSQUARE @@ -216,10 +286,12 @@ enum ObjectFit { ObjectFitFill, ObjectFitContain, ObjectFitCover, ObjectFitNone, ObjectFitScaleDown }; -// Word Break Values. Matches WinIE, rather than CSS3 +enum AspectRatioType { + AspectRatioAuto, AspectRatioFromIntrinsic, AspectRatioFromDimensions, AspectRatioSpecified +}; enum EWordBreak { - NormalWordBreak, BreakAllWordBreak, BreakWordBreak + NormalWordBreak, BreakAllWordBreak, KeepAllWordBreak, BreakWordBreak }; enum EOverflowWrap { @@ -381,13 +453,15 @@ enum TextAlignLast { }; enum TextJustify { - TextJustifyAuto, TextJustifyNone, TextJustifyInterWord, TextJustifyInterIdeograph, TextJustifyInterCluster, TextJustifyDistribute, TextJustifyKashida + TextJustifyAuto, TextJustifyNone, TextJustifyInterWord, TextJustifyDistribute }; #endif // CSS3_TEXT enum TextDecorationSkipItems { TextDecorationSkipNone = 0, - TextDecorationSkipInk = 1 << 0 + TextDecorationSkipInk = 1 << 0, + TextDecorationSkipObjects = 1 << 1, + TextDecorationSkipAuto = 1 << 2 }; typedef unsigned TextDecorationSkip; @@ -396,10 +470,29 @@ enum TextUnderlinePosition { TextUnderlinePositionAuto = 0x1, TextUnderlinePositionAlphabetic = 0x2, TextUnderlinePositionUnder = 0x4 }; -enum EPageBreak { - PBAUTO, PBALWAYS, PBAVOID +enum TextZoom { + TextZoomNormal, TextZoomReset }; +enum BreakBetween { + AutoBreakBetween, AvoidBreakBetween, AvoidColumnBreakBetween, AvoidPageBreakBetween, AvoidRegionBreakBetween, ColumnBreakBetween, RegionBreakBetween, PageBreakBetween, LeftPageBreakBetween, RightPageBreakBetween, RectoPageBreakBetween, VersoPageBreakBetween +}; +bool alwaysPageBreak(BreakBetween); + +enum BreakInside { + AutoBreakInside, AvoidBreakInside, AvoidColumnBreakInside, AvoidPageBreakInside, AvoidRegionBreakInside +}; + +enum HangingPunctuation { + NoHangingPunctuation = 0, + FirstHangingPunctuation = 1 << 0, + LastHangingPunctuation = 1 << 1, + AllowEndHangingPunctuation = 1 << 2, + ForceEndHangingPunctuation = 1 << 3 +}; +inline HangingPunctuation operator| (HangingPunctuation a, HangingPunctuation b) { return HangingPunctuation(int(a) | int(b)); } +inline HangingPunctuation& operator|= (HangingPunctuation& a, HangingPunctuation b) { return a = a | b; } + enum EEmptyCell { SHOW, HIDE }; @@ -414,44 +507,44 @@ enum EVisibility { VISIBLE, HIDDEN, COLLAPSE }; enum ECursor { // The following must match the order in CSSValueKeywords.in. - CURSOR_AUTO, - CURSOR_CROSS, - CURSOR_DEFAULT, - CURSOR_POINTER, - CURSOR_MOVE, - CURSOR_VERTICAL_TEXT, - CURSOR_CELL, - CURSOR_CONTEXT_MENU, - CURSOR_ALIAS, - CURSOR_PROGRESS, - CURSOR_NO_DROP, - CURSOR_NOT_ALLOWED, - CURSOR_WEBKIT_ZOOM_IN, - CURSOR_WEBKIT_ZOOM_OUT, - CURSOR_E_RESIZE, - CURSOR_NE_RESIZE, - CURSOR_NW_RESIZE, - CURSOR_N_RESIZE, - CURSOR_SE_RESIZE, - CURSOR_SW_RESIZE, - CURSOR_S_RESIZE, - CURSOR_W_RESIZE, - CURSOR_EW_RESIZE, - CURSOR_NS_RESIZE, - CURSOR_NESW_RESIZE, - CURSOR_NWSE_RESIZE, - CURSOR_COL_RESIZE, - CURSOR_ROW_RESIZE, - CURSOR_TEXT, - CURSOR_WAIT, - CURSOR_HELP, - CURSOR_ALL_SCROLL, - CURSOR_WEBKIT_GRAB, - CURSOR_WEBKIT_GRABBING, + CursorAuto, + CursorCross, + CursorDefault, + CursorPointer, + CursorMove, + CursorVerticalText, + CursorCell, + CursorContextMenu, + CursorAlias, + CursorProgress, + CursorNoDrop, + CursorNotAllowed, + CursorZoomIn, + CursorZoomOut, + CursorEResize, + CursorNeResize, + CursorNwResize, + CursorNResize, + CursorSeResize, + CursorSwResize, + CursorSResize, + CursorWResize, + CursorEwResize, + CursorNsResize, + CursorNeswResize, + CursorNwseResize, + CursorColResize, + CursorRowResize, + CursorText, + CursorWait, + CursorHelp, + CursorAllScroll, + CursorWebkitGrab, + CursorWebkitGrabbing, // The following are handled as exceptions so don't need to match. - CURSOR_COPY, - CURSOR_NONE + CursorCopy, + CursorNone }; #if ENABLE(CURSOR_VISIBILITY) @@ -463,14 +556,13 @@ enum CursorVisibility { // The order of this enum must match the order of the display values in CSSValueKeywords.in. enum EDisplay { - INLINE, BLOCK, LIST_ITEM, RUN_IN, COMPACT, INLINE_BLOCK, + INLINE, BLOCK, LIST_ITEM, COMPACT, INLINE_BLOCK, TABLE, INLINE_TABLE, TABLE_ROW_GROUP, TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW, TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL, TABLE_CAPTION, BOX, INLINE_BOX, - FLEX, INLINE_FLEX, - GRID, INLINE_GRID, - NONE + FLEX, WEBKIT_FLEX, INLINE_FLEX, WEBKIT_INLINE_FLEX, + CONTENTS, GRID, INLINE_GRID, NONE }; enum EInsideLink { @@ -508,11 +600,17 @@ enum TextEmphasisPositions { }; typedef unsigned TextEmphasisPosition; -enum TextOrientation { TextOrientationVerticalRight, TextOrientationUpright, TextOrientationSideways, TextOrientationSidewaysRight }; +enum class TextOrientation { Mixed, Upright, Sideways }; enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis }; -enum EImageRendering { ImageRenderingAuto = 0, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingCrispEdges }; +enum EImageRendering { + ImageRenderingAuto = 0, + ImageRenderingOptimizeSpeed, + ImageRenderingOptimizeQuality, + ImageRenderingCrispEdges, + ImageRenderingPixelated +}; enum ImageResolutionSource { ImageResolutionSpecified = 0, ImageResolutionFromImage }; @@ -530,13 +628,31 @@ enum LineSnap { LineSnapNone, LineSnapBaseline, LineSnapContain }; enum LineAlign { LineAlignNone, LineAlignEdges }; -enum WrapFlow { WrapFlowAuto, WrapFlowBoth, WrapFlowStart, WrapFlowEnd, WrapFlowMaximum, WrapFlowClear }; +enum RubyPosition { RubyPositionBefore, RubyPositionAfter, RubyPositionInterCharacter }; -enum WrapThrough { WrapThroughWrap, WrapThroughNone }; +static const size_t GridAutoFlowBits = 4; +enum InternalGridAutoFlowAlgorithm { + InternalAutoFlowAlgorithmSparse = 0x1, + InternalAutoFlowAlgorithmDense = 0x2, +}; -enum RubyPosition { RubyPositionBefore, RubyPositionAfter }; +enum InternalGridAutoFlowDirection { + InternalAutoFlowDirectionRow = 0x4, + InternalAutoFlowDirectionColumn = 0x8 +}; + +enum GridAutoFlow { + AutoFlowRow = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionRow, + AutoFlowColumn = InternalAutoFlowAlgorithmSparse | InternalAutoFlowDirectionColumn, + AutoFlowRowDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionRow, + AutoFlowColumnDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionColumn +}; -enum GridAutoFlow { AutoFlowNone, AutoFlowColumn, AutoFlowRow }; +enum AutoRepeatType { + NoAutoRepeat, + AutoFill, + AutoFit +}; // Reasonable maximum to prevent insane font sizes from causing crashes on some platforms (such as Windows). static const float maximumAllowedFontSize = 1000000.0f; @@ -546,8 +662,68 @@ enum TextIndentLine { TextIndentFirstLine, TextIndentEachLine }; enum TextIndentType { TextIndentNormal, TextIndentHanging }; #endif -enum LayoutBox { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, BoundingBox }; +enum Isolation { IsolationAuto, IsolationIsolate }; -} // namespace WebCore +// Fill, Stroke, ViewBox are just used for SVG. +enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, Fill, Stroke, ViewBox }; -#endif // RenderStyleConstants_h +#if ENABLE(TOUCH_EVENTS) +enum class TouchAction { + Auto, + Manipulation +}; +#endif + +#if ENABLE(CSS_SCROLL_SNAP) +enum class ScrollSnapStrictness { + None, + Proximity, + Mandatory +}; + +enum class ScrollSnapAxis { + XAxis, + YAxis, + Block, + Inline, + Both +}; + +enum class ScrollSnapAxisAlignType { + None, + Start, + Center, + End +}; +#endif + +#if ENABLE(CSS_TRAILING_WORD) +enum class TrailingWord { + Auto, + PartiallyBalanced +}; +#endif + +#if ENABLE(APPLE_PAY) +enum class ApplePayButtonStyle { + White, + WhiteOutline, + Black, +}; + +enum class ApplePayButtonType { + Plain, + Buy, + SetUp, + Donate, +}; +#endif + +TextStream& operator<<(TextStream&, EFillSizeType); +TextStream& operator<<(TextStream&, EFillAttachment); +TextStream& operator<<(TextStream&, EFillBox); +TextStream& operator<<(TextStream&, EFillRepeat); +TextStream& operator<<(TextStream&, EMaskSourceType); +TextStream& operator<<(TextStream&, Edge); + +} // namespace WebCore |