diff options
Diffstat (limited to 'layout/style/nsStyleConsts.h')
-rw-r--r-- | layout/style/nsStyleConsts.h | 795 |
1 files changed, 795 insertions, 0 deletions
diff --git a/layout/style/nsStyleConsts.h b/layout/style/nsStyleConsts.h new file mode 100644 index 0000000000..a482121135 --- /dev/null +++ b/layout/style/nsStyleConsts.h @@ -0,0 +1,795 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* constants used in the style struct data provided by ComputedStyle */ + +#ifndef nsStyleConsts_h___ +#define nsStyleConsts_h___ + +#include <inttypes.h> + +#include "X11UndefineNone.h" + +#include "gfxFontConstants.h" +#include "mozilla/ServoStyleConsts.h" + +// XXX fold this into ComputedStyle and group by nsStyleXXX struct + +namespace mozilla { + +static constexpr uint16_t STYLE_DISPLAY_LIST_ITEM_BIT = 0x8000; +static constexpr uint8_t STYLE_DISPLAY_OUTSIDE_BITS = 7; +static constexpr uint8_t STYLE_DISPLAY_INSIDE_BITS = 8; + +// The `display` longhand. +uint16_t constexpr StyleDisplayFrom(StyleDisplayOutside aOuter, + StyleDisplayInside aInner) { + return uint16_t(uint16_t(aOuter) << STYLE_DISPLAY_INSIDE_BITS) | + uint16_t(aInner); +} + +enum class StyleDisplay : uint16_t { + // These MUST be in sync with the Rust enum values in + // servo/components/style/values/specified/box.rs + /// https://drafts.csswg.org/css-display/#the-display-properties + None = StyleDisplayFrom(StyleDisplayOutside::None, StyleDisplayInside::None), + Contents = + StyleDisplayFrom(StyleDisplayOutside::None, StyleDisplayInside::Contents), + Inline = + StyleDisplayFrom(StyleDisplayOutside::Inline, StyleDisplayInside::Flow), + Block = + StyleDisplayFrom(StyleDisplayOutside::Block, StyleDisplayInside::Flow), + FlowRoot = StyleDisplayFrom(StyleDisplayOutside::Block, + StyleDisplayInside::FlowRoot), + Flex = StyleDisplayFrom(StyleDisplayOutside::Block, StyleDisplayInside::Flex), + Grid = StyleDisplayFrom(StyleDisplayOutside::Block, StyleDisplayInside::Grid), + Table = + StyleDisplayFrom(StyleDisplayOutside::Block, StyleDisplayInside::Table), + InlineTable = + StyleDisplayFrom(StyleDisplayOutside::Inline, StyleDisplayInside::Table), + TableCaption = StyleDisplayFrom(StyleDisplayOutside::TableCaption, + StyleDisplayInside::Flow), + Ruby = + StyleDisplayFrom(StyleDisplayOutside::Inline, StyleDisplayInside::Ruby), + WebkitBox = StyleDisplayFrom(StyleDisplayOutside::Block, + StyleDisplayInside::WebkitBox), + WebkitInlineBox = StyleDisplayFrom(StyleDisplayOutside::Inline, + StyleDisplayInside::WebkitBox), + ListItem = Block | STYLE_DISPLAY_LIST_ITEM_BIT, + + /// Internal table boxes. + TableRowGroup = StyleDisplayFrom(StyleDisplayOutside::InternalTable, + StyleDisplayInside::TableRowGroup), + TableHeaderGroup = StyleDisplayFrom(StyleDisplayOutside::InternalTable, + StyleDisplayInside::TableHeaderGroup), + TableFooterGroup = StyleDisplayFrom(StyleDisplayOutside::InternalTable, + StyleDisplayInside::TableFooterGroup), + TableColumn = StyleDisplayFrom(StyleDisplayOutside::InternalTable, + StyleDisplayInside::TableColumn), + TableColumnGroup = StyleDisplayFrom(StyleDisplayOutside::InternalTable, + StyleDisplayInside::TableColumnGroup), + TableRow = StyleDisplayFrom(StyleDisplayOutside::InternalTable, + StyleDisplayInside::TableRow), + TableCell = StyleDisplayFrom(StyleDisplayOutside::InternalTable, + StyleDisplayInside::TableCell), + + /// Internal ruby boxes. + RubyBase = StyleDisplayFrom(StyleDisplayOutside::InternalRuby, + StyleDisplayInside::RubyBase), + RubyBaseContainer = StyleDisplayFrom(StyleDisplayOutside::InternalRuby, + StyleDisplayInside::RubyBaseContainer), + RubyText = StyleDisplayFrom(StyleDisplayOutside::InternalRuby, + StyleDisplayInside::RubyText), + RubyTextContainer = StyleDisplayFrom(StyleDisplayOutside::InternalRuby, + StyleDisplayInside::RubyTextContainer), + + /// XUL boxes. + MozBox = + StyleDisplayFrom(StyleDisplayOutside::Block, StyleDisplayInside::MozBox), + MozInlineBox = + StyleDisplayFrom(StyleDisplayOutside::Inline, StyleDisplayInside::MozBox), + MozStack = + StyleDisplayFrom(StyleDisplayOutside::XUL, StyleDisplayInside::MozStack), + MozDeck = + StyleDisplayFrom(StyleDisplayOutside::XUL, StyleDisplayInside::MozDeck), + MozPopup = + StyleDisplayFrom(StyleDisplayOutside::XUL, StyleDisplayInside::MozPopup), +}; +// The order of the StyleDisplay values isn't meaningful. +bool operator<(const StyleDisplay&, const StyleDisplay&) = delete; +bool operator<=(const StyleDisplay&, const StyleDisplay&) = delete; +bool operator>(const StyleDisplay&, const StyleDisplay&) = delete; +bool operator>=(const StyleDisplay&, const StyleDisplay&) = delete; + +// Basic shapes +enum class StyleBasicShapeType : uint8_t { + Polygon, + Circle, + Ellipse, + Inset, +}; + +// box-align +enum class StyleBoxAlign : uint8_t { + Stretch, + Start, + Center, + Baseline, + End, +}; + +// box-decoration-break +enum class StyleBoxDecorationBreak : uint8_t { + Slice, + Clone, +}; + +// box-direction +enum class StyleBoxDirection : uint8_t { + Normal, + Reverse, +}; + +// box-orient +enum class StyleBoxOrient : uint8_t { + Horizontal, + Vertical, +}; + +// box-pack +enum class StyleBoxPack : uint8_t { + Start, + Center, + End, + Justify, +}; + +// box-sizing +enum class StyleBoxSizing : uint8_t { Content, Border }; + +// box-shadow +enum class StyleBoxShadowType : uint8_t { + Inset, +}; + +// clear +enum class StyleClear : uint8_t { + None = 0, + Left, + Right, + Both, + // StyleClear::Line can be added to one of the other values in layout + // so it needs to use a bit value that none of the other values can have. + // + // FIXME(emilio): Doesn't look like we do that anymore, so probably can be + // made a single value instead, and Max removed. + Line = 8, + Max = 13 // Max = (Both | Line) +}; + +enum class StyleColumnFill : uint8_t { + Balance, + Auto, +}; + +enum class StyleColumnSpan : uint8_t { + None, + All, +}; + +// Define geometry box for clip-path's reference-box, background-clip, +// background-origin, mask-clip, mask-origin, shape-box and transform-box. +enum class StyleGeometryBox : uint8_t { + ContentBox, // Used by everything, except transform-box. + PaddingBox, // Used by everything, except transform-box. + BorderBox, + MarginBox, // XXX Bug 1260094 comment 9. + // Although margin-box is required by mask-origin and mask-clip, + // we do not implement that due to lack of support in other + // browsers. clip-path reference-box only. + FillBox, // Used by everything, except shape-box. + StrokeBox, // mask-clip, mask-origin and clip-path reference-box only. + ViewBox, // Used by everything, except shape-box. + NoClip, // mask-clip only. + Text, // background-clip only. + NoBox, // Depending on which kind of element this style value applied on, + // the default value of a reference-box can be different. + // For an HTML element, the default value of reference-box is + // border-box; for an SVG element, the default value is fill-box. + // Since we can not determine the default value at parsing time, + // set it as NoBox so that we make a decision later. + // clip-path reference-box only. + MozAlmostPadding = 127 // A magic value that we use for our "pretend that + // background-clip is 'padding' when we have a solid + // border" optimization. This isn't actually equal + // to StyleGeometryBox::Padding because using that + // causes antialiasing seams between the background + // and border. + // background-clip only. +}; + +// float-edge +enum class StyleFloatEdge : uint8_t { + ContentBox, + MarginBox, +}; + +// Hyphens +enum class StyleHyphens : uint8_t { + None, + Manual, + Auto, +}; + +// image-orientation +enum class StyleImageOrientation : uint8_t { + None, + FromImage, +}; + +// scrollbar-width +enum class StyleScrollbarWidth : uint8_t { + Auto, + Thin, + None, +}; + +// Shape source type +enum class StyleShapeSourceType : uint8_t { + None, + Image, // shape-outside / clip-path only, and clip-path only uses it for + // <url>s + Shape, + Box, + Path, // SVG path function +}; + +// text-justify +enum class StyleTextJustify : uint8_t { + None, + Auto, + InterWord, + InterCharacter, +}; + +// user-focus +enum class StyleUserFocus : uint8_t { + None, + Ignore, + Normal, + SelectAll, + SelectBefore, + SelectAfter, + SelectSame, + SelectMenu, +}; + +// user-input +enum class StyleUserInput : uint8_t { + None, + Auto, +}; + +// user-modify +enum class StyleUserModify : uint8_t { + ReadOnly, + ReadWrite, + WriteOnly, +}; + +// -moz-inert +enum class StyleInert : uint8_t { + None, + Inert, +}; + +// -moz-window-dragging +enum class StyleWindowDragging : uint8_t { + Default, + Drag, + NoDrag, +}; + +// orient +enum class StyleOrient : uint8_t { + Inline, + Block, + Horizontal, + Vertical, +}; + +// See AnimationEffect.webidl +// and mozilla/dom/AnimationEffectBinding.h +namespace dom { +enum class PlaybackDirection : uint8_t; +enum class FillMode : uint8_t; +} // namespace dom + +// Animation play state +enum class StyleAnimationPlayState : uint8_t { Running, Paused }; + +// See nsStyleImageLayers +enum class StyleImageLayerAttachment : uint8_t { Scroll, Fixed, Local }; + +// See nsStyleImageLayers +enum class StyleImageLayerRepeat : uint8_t { + NoRepeat = 0x00, + RepeatX, + RepeatY, + Repeat, + Space, + Round +}; + +// Mask mode +enum class StyleMaskMode : uint8_t { Alpha = 0, Luminance, MatchSource }; + +// See nsStyleTable +enum class StyleBorderCollapse : uint8_t { Collapse, Separate }; + +// border-image-repeat +enum class StyleBorderImageRepeat : uint8_t { Stretch, Repeat, Round, Space }; + +// See nsStyleVisibility +enum class StyleDirection : uint8_t { Ltr, Rtl }; + +// See nsStyleVisibility +// NOTE: WritingModes.h depends on the particular values used here. + +// Single-bit flag, used in combination with VerticalLR and RL to specify +// the corresponding Sideways* modes. +// (To avoid ambiguity, this bit must be high enough such that no other +// values here accidentally use it in their binary representation.) +static constexpr uint8_t kWritingModeSidewaysMask = 4; + +enum class StyleWritingModeProperty : uint8_t { + HorizontalTb = 0, + VerticalRl = 1, + // HorizontalBT = 2, // hypothetical + VerticalLr = 3, + SidewaysRl = VerticalRl | kWritingModeSidewaysMask, + SidewaysLr = VerticalLr | kWritingModeSidewaysMask, +}; + +// See nsStylePosition +enum class StyleFlexDirection : uint8_t { + Row, + RowReverse, + Column, + ColumnReverse, +}; + +// See nsStylePosition +enum class StyleFlexWrap : uint8_t { + Nowrap, + Wrap, + WrapReverse, +}; + +// See nsStylePosition +// NOTE: This is the initial value of the integer-valued 'order' property +// (rather than an internal numerical representation of some keyword). +#define NS_STYLE_ORDER_INITIAL 0 + +#define NS_STYLE_MASONRY_PLACEMENT_PACK (1 << 0) +#define NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST (1 << 1) +#define NS_STYLE_MASONRY_AUTO_FLOW_INITIAL_VALUE \ + (NS_STYLE_MASONRY_PLACEMENT_PACK | NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST) + +// 'subgrid' keyword in grid-template-{columns,rows} +#define NS_STYLE_GRID_TEMPLATE_SUBGRID 0 + +// CSS Grid <track-breadth> keywords +// Should not overlap with NS_STYLE_GRID_TEMPLATE_SUBGRID +enum class StyleGridTrackBreadth : uint8_t { + MaxContent = 1, + MinContent = 2, +}; + +// defaults per MathML spec +#define NS_MATHML_DEFAULT_SCRIPT_SIZE_MULTIPLIER 0.71f +#define NS_MATHML_DEFAULT_SCRIPT_MIN_SIZE_PT 8 + +// See nsStyleFont +#define NS_MATHML_MATHVARIANT_NONE 0 +#define NS_MATHML_MATHVARIANT_NORMAL 1 +#define NS_MATHML_MATHVARIANT_BOLD 2 +#define NS_MATHML_MATHVARIANT_ITALIC 3 +#define NS_MATHML_MATHVARIANT_BOLD_ITALIC 4 +#define NS_MATHML_MATHVARIANT_SCRIPT 5 +#define NS_MATHML_MATHVARIANT_BOLD_SCRIPT 6 +#define NS_MATHML_MATHVARIANT_FRAKTUR 7 +#define NS_MATHML_MATHVARIANT_DOUBLE_STRUCK 8 +#define NS_MATHML_MATHVARIANT_BOLD_FRAKTUR 9 +#define NS_MATHML_MATHVARIANT_SANS_SERIF 10 +#define NS_MATHML_MATHVARIANT_BOLD_SANS_SERIF 11 +#define NS_MATHML_MATHVARIANT_SANS_SERIF_ITALIC 12 +#define NS_MATHML_MATHVARIANT_SANS_SERIF_BOLD_ITALIC 13 +#define NS_MATHML_MATHVARIANT_MONOSPACE 14 +#define NS_MATHML_MATHVARIANT_INITIAL 15 +#define NS_MATHML_MATHVARIANT_TAILED 16 +#define NS_MATHML_MATHVARIANT_LOOPED 17 +#define NS_MATHML_MATHVARIANT_STRETCHED 18 + +// See nsStyleFont::mMathStyle +#define NS_STYLE_MATH_STYLE_COMPACT 0 +#define NS_STYLE_MATH_STYLE_NORMAL 1 + +// See nsStyleDisplay.mPosition +enum class StylePositionProperty : uint8_t { + Static, + Relative, + Absolute, + Fixed, + Sticky, +}; + +// See nsStyleEffects.mClip, mClipFlags +#define NS_STYLE_CLIP_AUTO 0x00 +#define NS_STYLE_CLIP_RECT 0x01 +#define NS_STYLE_CLIP_TYPE_MASK 0x0F +#define NS_STYLE_CLIP_LEFT_AUTO 0x10 +#define NS_STYLE_CLIP_TOP_AUTO 0x20 +#define NS_STYLE_CLIP_RIGHT_AUTO 0x40 +#define NS_STYLE_CLIP_BOTTOM_AUTO 0x80 + +// FRAME/FRAMESET/IFRAME specific values including backward compatibility. +// Boolean values with the same meaning (e.g. 1 & yes) may need to be +// distinguished for correct mode processing +#define NS_STYLE_FRAME_YES 0 +#define NS_STYLE_FRAME_NO 1 +#define NS_STYLE_FRAME_0 2 +#define NS_STYLE_FRAME_1 3 +#define NS_STYLE_FRAME_ON 4 +#define NS_STYLE_FRAME_OFF 5 +#define NS_STYLE_FRAME_AUTO 6 +#define NS_STYLE_FRAME_SCROLL 7 +#define NS_STYLE_FRAME_NOSCROLL 8 + +// See nsStyleList +#define NS_STYLE_LIST_STYLE_CUSTOM -1 // for @counter-style +#define NS_STYLE_LIST_STYLE_NONE 0 +#define NS_STYLE_LIST_STYLE_DECIMAL 1 +#define NS_STYLE_LIST_STYLE_DISC 2 +#define NS_STYLE_LIST_STYLE_CIRCLE 3 +#define NS_STYLE_LIST_STYLE_SQUARE 4 +#define NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED 5 +#define NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN 6 +#define NS_STYLE_LIST_STYLE_HEBREW 7 +#define NS_STYLE_LIST_STYLE_JAPANESE_INFORMAL 8 +#define NS_STYLE_LIST_STYLE_JAPANESE_FORMAL 9 +#define NS_STYLE_LIST_STYLE_KOREAN_HANGUL_FORMAL 10 +#define NS_STYLE_LIST_STYLE_KOREAN_HANJA_INFORMAL 11 +#define NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL 12 +#define NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL 13 +#define NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL 14 +#define NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL 15 +#define NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL 16 +#define NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC 17 +// These styles are handled as custom styles defined in counterstyles.css. +// They are preserved here only for html attribute map. +#define NS_STYLE_LIST_STYLE_LOWER_ROMAN 100 +#define NS_STYLE_LIST_STYLE_UPPER_ROMAN 101 +#define NS_STYLE_LIST_STYLE_LOWER_ALPHA 102 +#define NS_STYLE_LIST_STYLE_UPPER_ALPHA 103 + +// See nsStyleList +#define NS_STYLE_LIST_STYLE_POSITION_INSIDE 0 +#define NS_STYLE_LIST_STYLE_POSITION_OUTSIDE 1 + +// See nsStyleVisibility +enum class StylePointerEvents : uint8_t { + None, + Visiblepainted, + Visiblefill, + Visiblestroke, + Visible, + Painted, + Fill, + Stroke, + All, + Auto, +}; + +enum class StyleIsolation : uint8_t { + Auto, + Isolate, +}; + +// See nsStylePosition.mObjectFit +enum class StyleObjectFit : uint8_t { + Fill, + Contain, + Cover, + None, + ScaleDown, +}; + +// See nsStyleText +#define NS_STYLE_TEXT_DECORATION_STYLE_NONE \ + 0 // not in CSS spec, mapped to -moz-none +#define NS_STYLE_TEXT_DECORATION_STYLE_DOTTED 1 +#define NS_STYLE_TEXT_DECORATION_STYLE_DASHED 2 +#define NS_STYLE_TEXT_DECORATION_STYLE_SOLID 3 +#define NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE 4 +#define NS_STYLE_TEXT_DECORATION_STYLE_WAVY 5 +#define NS_STYLE_TEXT_DECORATION_STYLE_MAX NS_STYLE_TEXT_DECORATION_STYLE_WAVY + +// See nsStyleText +#define NS_STYLE_TEXT_TRANSFORM_NONE 0 +#define NS_STYLE_TEXT_TRANSFORM_CAPITALIZE 1 +#define NS_STYLE_TEXT_TRANSFORM_LOWERCASE 2 +#define NS_STYLE_TEXT_TRANSFORM_UPPERCASE 3 +#define NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH 4 +#define NS_STYLE_TEXT_TRANSFORM_FULL_SIZE_KANA 5 + +// See nsStyleDisplay +enum class StyleTopLayer : uint8_t { + None, + Top, +}; + +// See nsStyleVisibility +enum class StyleVisibility : uint8_t { + Hidden, + Visible, + Collapse, +}; + +// See nsStyleText +#define NS_STYLE_TABSIZE_INITIAL 8 + +// See nsStyleText +enum class StyleWhiteSpace : uint8_t { + Normal = 0, + Pre, + Nowrap, + PreWrap, + PreLine, + PreSpace, + BreakSpaces, +}; + +// ruby-align, see nsStyleText +enum class StyleRubyAlign : uint8_t { + Start, + Center, + SpaceBetween, + SpaceAround, +}; + +// ruby-position, see nsStyleText +enum class StyleRubyPosition : uint8_t { + Over, + Under, +}; + +// See nsStyleText +enum class StyleTextSizeAdjust : uint8_t { + None, + Auto, +}; + +// See nsStyleText +enum class StyleTextOrientation : uint8_t { + Mixed, + Upright, + Sideways, +}; + +// See nsStyleText +#define NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE 0 +#define NS_STYLE_TEXT_COMBINE_UPRIGHT_ALL 1 + +// See nsStyleText +#define NS_STYLE_UNICODE_BIDI_NORMAL 0x0 +#define NS_STYLE_UNICODE_BIDI_EMBED 0x1 +#define NS_STYLE_UNICODE_BIDI_ISOLATE 0x2 +#define NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE 0x4 +#define NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE 0x6 +#define NS_STYLE_UNICODE_BIDI_PLAINTEXT 0x8 + +enum class StyleTableLayout : uint8_t { + Auto, + Fixed, +}; + +enum class StyleEmptyCells : uint8_t { + Hide, + Show, +}; + +// Constants for the caption-side property. Note that despite having "physical" +// names, these are actually interpreted according to the table's writing-mode: +// TOP and BOTTOM are treated as block-start and -end respectively, and LEFT +// and RIGHT are treated as line-left and -right. +#define NS_STYLE_CAPTION_SIDE_TOP 0 +#define NS_STYLE_CAPTION_SIDE_RIGHT 1 +#define NS_STYLE_CAPTION_SIDE_BOTTOM 2 +#define NS_STYLE_CAPTION_SIDE_LEFT 3 +#define NS_STYLE_CAPTION_SIDE_TOP_OUTSIDE 4 +#define NS_STYLE_CAPTION_SIDE_BOTTOM_OUTSIDE 5 + +// constants for cell "scope" attribute +#define NS_STYLE_CELL_SCOPE_ROW 0 +#define NS_STYLE_CELL_SCOPE_COL 1 +#define NS_STYLE_CELL_SCOPE_ROWGROUP 2 +#define NS_STYLE_CELL_SCOPE_COLGROUP 3 + +// See nsStylePage +#define NS_STYLE_PAGE_MARKS_NONE 0x00 +#define NS_STYLE_PAGE_MARKS_CROP 0x01 +#define NS_STYLE_PAGE_MARKS_REGISTER 0x02 + +// See nsStylePage +#define NS_STYLE_PAGE_SIZE_AUTO 0 +#define NS_STYLE_PAGE_SIZE_PORTRAIT 1 +#define NS_STYLE_PAGE_SIZE_LANDSCAPE 2 + +// See nsStyleBreaks +#define NS_STYLE_PAGE_BREAK_AUTO 0 +#define NS_STYLE_PAGE_BREAK_ALWAYS 1 +#define NS_STYLE_PAGE_BREAK_AVOID 2 +#define NS_STYLE_PAGE_BREAK_LEFT 3 +#define NS_STYLE_PAGE_BREAK_RIGHT 4 + +// See nsStyleUIReset +enum class StyleImeMode : uint8_t { + Auto, + Normal, + Active, + Disabled, + Inactive, +}; + +// See nsStyleSVG + +/* + * -moz-window-shadow + * Also used in widget code + */ +enum class StyleWindowShadow : uint8_t { + None, + Default, + Menu, + Tooltip, + Sheet, +}; + +// dominant-baseline +enum class StyleDominantBaseline : uint8_t { + Auto, + Ideographic, + Alphabetic, + Hanging, + Mathematical, + Central, + Middle, + TextAfterEdge, + TextBeforeEdge, +}; + +// image-rendering +enum class StyleImageRendering : uint8_t { + Auto, + Optimizespeed, + Optimizequality, + CrispEdges, +}; + +// mask-type +enum class StyleMaskType : uint8_t { + Luminance, + Alpha, +}; + +// shape-rendering +enum class StyleShapeRendering : uint8_t { + Auto, + Optimizespeed, + Crispedges, + Geometricprecision, +}; + +// stroke-linecap +enum class StyleStrokeLinecap : uint8_t { + Butt, + Round, + Square, +}; + +// stroke-linejoin +enum class StyleStrokeLinejoin : uint8_t { + Miter, + Round, + Bevel, +}; + +// text-anchor +enum class StyleTextAnchor : uint8_t { + Start, + Middle, + End, +}; + +// text-emphasis-position +#define NS_STYLE_TEXT_EMPHASIS_POSITION_OVER (1 << 0) +#define NS_STYLE_TEXT_EMPHASIS_POSITION_UNDER (1 << 1) +#define NS_STYLE_TEXT_EMPHASIS_POSITION_LEFT (1 << 2) +#define NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT (1 << 3) +#define NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT \ + (NS_STYLE_TEXT_EMPHASIS_POSITION_OVER | NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT) +#define NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT_ZH \ + (NS_STYLE_TEXT_EMPHASIS_POSITION_UNDER | \ + NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT) + +// text-rendering +enum class StyleTextRendering : uint8_t { + Auto, + Optimizespeed, + Optimizelegibility, + Geometricprecision, +}; + +// color-adjust +enum class StyleColorAdjust : uint8_t { + Economy = 0, + Exact = 1, +}; + +// color-interpolation and color-interpolation-filters +enum class StyleColorInterpolation : uint8_t { + Auto = 0, + Srgb = 1, + Linearrgb = 2, +}; + +// vector-effect +enum class StyleVectorEffect : uint8_t { None = 0, NonScalingStroke = 1 }; + +// 3d Transforms - Backface visibility +enum class StyleBackfaceVisibility : uint8_t { Hidden = 0, Visible = 1 }; + +// blending +enum class StyleBlend : uint8_t { + Normal = 0, + Multiply, + Screen, + Overlay, + Darken, + Lighten, + ColorDodge, + ColorBurn, + HardLight, + SoftLight, + Difference, + Exclusion, + Hue, + Saturation, + Color, + Luminosity, +}; + +// composite +enum class StyleMaskComposite : uint8_t { + Add = 0, + Subtract, + Intersect, + Exclude +}; + +// See nsStyleText::mControlCharacterVisibility +enum class StyleControlCharacterVisibility : uint8_t { Hidden = 0, Visible }; + +// scroll-behavior +enum class StyleScrollBehavior : uint8_t { + Auto, + Smooth, +}; + +} // namespace mozilla + +#endif /* nsStyleConsts_h___ */ |