header = """/* 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 https://mozilla.org/MPL/2.0/. */ // See the comment in ServoBindings.h about the same. #pragma GCC diagnostic push #ifdef __clang__ # pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" #endif // Work-around silly windows.h define. #pragma push_macro("STRICT") #undef STRICT """ trailer = """ #pragma pop_macro("STRICT") #pragma GCC diagnostic pop #include "mozilla/ServoStyleConstsInlines.h" """ autogen_warning = """/* DO NOT MODIFY THIS MANUALLY! This file was generated using cbindgen. * To generate this file: * 1. Get the latest cbindgen using `cargo install --force cbindgen` * a. Alternatively, you can clone `https://github.com/eqrion/cbindgen` and use a tagged release * 2. Run `rustup run nightly cbindgen toolkit/library/rust/ --lockfile Cargo.lock --crate style -o layout/style/ServoStyleConsts.h` */ """ include_guard = "mozilla_ServoStyleConsts_h" include_version = true braces = "SameLine" line_length = 80 tab_width = 2 language = "C++" namespaces = ["mozilla"] includes = ["mozilla/ServoStyleConstsForwards.h", "mozilla/ServoStyleSet.h"] [parse] parse_deps = true extra_bindings = ["style"] include = ["style", "app_units", "cssparser", "style_traits", "servo_arc"] [struct] associated_constants_in_body = true derive_eq = true derive_neq = true [defines] # These will actually never be defined, but is handy to avoid cbindgen # generating Servo-only types. "feature = servo" = "CBINDGEN_IS_SERVO" "feature = servo-layout-2013" = "CBINDGEN_IS_SERVO" "feature = servo-layout-2020" = "CBINDGEN_IS_SERVO" # These will always be defined. "feature = gecko" = "CBINDGEN_IS_GECKO" "feature = cbindgen" = "CBINDGEN_IS_GECKO" # These depend on the build. "target_pointer_width = 32" = "SERVO_32_BITS" "target_pointer_width = 64" = "HAVE_64BIT_BUILD" [macro_expansion] bitflags = true [enum] derive_helper_methods = true derive_const_casts = true derive_tagged_enum_destructor = true derive_tagged_enum_copy_constructor = true derive_tagged_enum_copy_assignment = true private_default_tagged_enum_constructor = true cast_assert_name = "MOZ_DIAGNOSTIC_ASSERT" [export] prefix = "Style" exclude = [ "NS_LogCtor", "NS_LogDtor", "SelectorList", "AuthorStyles", ] include = [ "AnimationTimeline", "AnimationIterationCount", "Appearance", "Au", "BreakBetween", "BreakWithin", "BorderStyle", "BoolInteger", "OutlineStyle", "CaptionSide", "FontSizeAdjust", "FontPalette", "ComputedFontStretchRange", "ComputedFontStyleDescriptor", "ComputedFontWeightRange", "ComputedTimingFunction", "ComputedValueFlags", "CursorKind", "DisplayOutside", "DisplayInside", "DisplayMode", "Platform", "PrefersColorScheme", "PrefersContrast", "DynamicRange", "Scripting", "FillRule", "FontDisplay", "FontFaceSourceListComponent", "FontFaceSourceTechFlags", "FontLanguageOverride", "FontSynthesis", "GenericFontFamily", "FontFamily", "FontFamilyNameSyntax", "OverflowWrap", "OffsetPath", "OffsetPosition", "OffsetRotate", "UnicodeRange", "UserSelect", "Float", "Clear", "OverscrollBehavior", "ScrollSnapAlign", "ScrollSnapAxis", "ScrollSnapStop", "ScrollSnapStrictness", "ScrollSnapType", "ScrollTimelineName", "ViewTimelineInset", "OverflowAnchor", "OverflowClipBox", "Resize", "Overflow", "LengthPercentage", "LetterSpacing", "NonNegativeLengthPercentage", "LengthPercentageOrAuto", "LineHeight", "NonNegativeLengthPercentageOrAuto", "NonNegativeLengthPercentageOrNormal", "LengthOrAuto", "NonNegativeLengthOrAuto", "TextDecorationSkipInk", "TextDecorationLength", "Time", "Rect", "IntersectionObserverRootMargin", "Size", "MaxSize", "FlexBasis", "Position", "PositionOrAuto", "BackgroundSize", "BaselineSource", "BorderImageSlice", "BorderSpacing", "BorderRadius", "ColorScheme", "NonNegativeLengthOrNumberRect", "Perspective", "ZIndex", "TransformOrigin", "LineBreak", "LineClamp", "WordBreak", "Contain", "ContainerType", "ContainerName", "ContentVisibility", "ContainIntrinsicSize", "Origin", "RestyleHint", "TouchAction", "WillChange", "TextDecorationLine", "MasonryAutoFlow", "MasonryPlacement", "MasonryItemOrder", "TextUnderlinePosition", "TextTransform", "TextJustify", "TextOverflow", "MozControlCharacterVisibility", "RubyPosition", "Owned", "OwnedOrNull", "Strong", "ScrollbarColor", "CaretColor", "Color", "ColorOrAuto", "SystemColor", "SystemColorScheme", "SystemFont", "GradientItem", "VerticalAlign", "BasicShape", "ShapeRadius", "ArcSlice", "ForgottenArcSlicePtr", "HeaderWithLength", "MozContextProperties", "Quotes", "BoxShadow", "SimpleShadow", "Transform", "Rotate", "Scale", "Translate", "BorderImageWidth", "ComputedUrl", "ComputedImageUrl", "UrlOrNone", "Filter", "Gradient", "GridTemplateAreas", "GridLine", "TrackSize", "TrackBreadth", "ImplicitGridTracks", "SVGPaint", "SVGPaintKind", "GridTemplateComponent", "TextEmphasisStyle", "TextEmphasisPosition", "FontVariantAlternates", "PaintOrder", "SVGPaintOrder", "ClipRectOrAuto", "CounterReset", "CounterSet", "CounterIncrement", "WritingMode", "Content", "ContentItem", "AlignSelf", "JustifySelf", "AlignItems", "ComputedJustifyItems", "AlignContent", "JustifyContent", "AlignTracks", "JustifyTracks", "TransformStyle", "Image", "ClipPath", "ShapeOutside", "GridAutoFlow", "Cursor", "SVGStrokeDashArray", "SVGLength", "SVGOpacity", "SVGWidth", "TextAlign", "TextAlignLast", "FontSizeKeyword", "AspectRatio", "DefaultFontSizes", "RuleChangeKind", "PageName", "PageOrientation", "PageSize", "DProperty", "ImageRendering", "PrintColorAdjust", "ForcedColorAdjust", "ScrollbarGutter", "ScrollDirection", "HyphenateCharacter", "ComputedLinearStop", "PiecewiseLinearFunction", "BeforeFlag", "XTextScale", ] item_types = ["enums", "structs", "unions", "typedefs", "functions", "constants"] renaming_overrides_prefixing = true # Prevent some renaming for Gecko types that cbindgen doesn't otherwise understand. [export.rename] "nscolor" = "nscolor" "nsAtom" = "nsAtom" "nsIURI" = "nsIURI" "imgRequestProxy" = "imgRequestProxy" "nsCompatibility" = "nsCompatibility" "nsSimpleContentList" = "nsSimpleContentList" "nsACString" = "nsACString" "nsAString" = "nsAString" "nsString" = "nsString" "CopyableTArray" = "CopyableTArray" "nsTArray" = "nsTArray" "nsPresContext" = "nsPresContext" "ComputedTiming" = "ComputedTiming" "CountedUnknownProperty" = "CountedUnknownProperty" "RefPtr" = "RefPtr" "nsCSSPropertyID" = "nsCSSPropertyID" "nsCSSPropertyIDSet" = "nsCSSPropertyIDSet" "nsCSSValueSharedList" = "nsCSSValueSharedList" "AnimationPropertySegment" = "AnimationPropertySegment" "RawServoAnimationValueTable" = "RawServoAnimationValueTable" "nsCSSUnit" = "nsCSSUnit" "ParsingMode" = "ParsingMode" "InheritTarget" = "InheritTarget" "PseudoStyleType" = "PseudoStyleType" "DeclarationBlockMutationClosure" = "DeclarationBlockMutationClosure" "AtomArray" = "AtomArray" "UpdateAnimationsTasks" = "UpdateAnimationsTasks" "StyleRuleInclusion" = "StyleRuleInclusion" "nsFontFaceRuleContainer" = "nsFontFaceRuleContainer" "MediumFeaturesChangedResult" = "MediumFeaturesChangedResult" "FontSizePrefs" = "FontSizePrefs" "nsCSSFontDesc" = "nsCSSFontDesc" "nsresult" = "nsresult" "gfxFontFeature" = "gfxFontFeature" "gfxFontFeatureValueSet" = "gfxFontFeatureValueSet" "SeenPtrs" = "SeenPtrs" "gfxFontVariation" = "gfxFontVariation" "URLExtraData" = "URLExtraData" "Keyframe" = "Keyframe" "nsChangeHint" = "nsChangeHint" "ServoElementSnapshotTable" = "ServoElementSnapshotTable" "Keyframe" = "Keyframe" "ComputedKeyframeValues" = "ComputedKeyframeValues" "OriginFlags" = "OriginFlags" "ServoTraversalFlags" = "ServoTraversalFlags" "ServoStyleSetSizes" = "ServoStyleSetSizes" "BeforeFlag" = "StyleEasingBeforeFlag" "FontPaletteValueSet" = "gfx::FontPaletteValueSet" "PaletteValues" = "gfx::FontPaletteValueSet::PaletteValues" "ThinVec" = "nsTArray" [export.body] "CSSPixelLength" = """ static StyleCSSPixelLength FromPixels(CSSCoord aCoord) { return {aCoord}; } static StyleCSSPixelLength Zero() { return FromPixels(0.0f); } inline nscoord ToAppUnits() const; inline bool IsZero() const; CSSCoord ToCSSPixels() const { return _0; } inline void ScaleBy(float); inline StyleCSSPixelLength ScaledBy(float) const; """ "GenericCalcNode" = """ private: template ResultT ResolveInternal(ResultT aPercentageBasis, PercentageConverter aPercentageConverter) const; public: CSSCoord ResolveToCSSPixels(CSSCoord aPercentageBasis) const; using CoordPercentageRounder = nscoord(*)(float); nscoord Resolve(nscoord aBasis, CoordPercentageRounder) const; void ScaleLengthsBy(float); """ "LengthPercentageUnion" = """ using Self = StyleLengthPercentageUnion; // TODO(emilio): cbindgen should be able to generate these in the body of the // union, but it seems it's only implemented for structs, not unions. static const uint8_t TAG_CALC = StyleLengthPercentageUnion_TAG_CALC; static const uint8_t TAG_LENGTH = StyleLengthPercentageUnion_TAG_LENGTH; static const uint8_t TAG_PERCENTAGE = StyleLengthPercentageUnion_TAG_PERCENTAGE; static const uint8_t TAG_MASK = StyleLengthPercentageUnion_TAG_MASK; private: uint8_t Tag() const { return tag.tag & TAG_MASK; } public: // We need to do all this manually because cbingen can't reason about unions. inline StyleLengthPercentageUnion(); inline StyleLengthPercentageUnion(const Self&); inline ~StyleLengthPercentageUnion(); inline Self& operator=(const Self&); inline bool operator==(const Self& aOther) const; inline bool operator!=(const Self& aOther) const; inline bool IsLength() const; inline bool IsPercentage() const; inline bool IsCalc() const; inline const StyleLength& AsLength() const; inline StyleLength& AsLength(); inline const StylePercentage& AsPercentage() const; inline StylePercentage& AsPercentage(); inline const StyleCalcLengthPercentage& AsCalc() const; inline StyleCalcLengthPercentage& AsCalc(); static inline Self Zero(); static inline Self FromAppUnits(nscoord); static inline Self FromPixels(CSSCoord); static inline Self FromPercentage(float); inline void ScaleLengthsBy(float); inline bool HasPercent() const; inline bool ConvertsToLength() const; inline nscoord ToLength() const; inline CSSCoord ToLengthInCSSPixels() const; inline bool ConvertsToPercentage() const; inline bool HasLengthAndPercentage() const; inline float ToPercentage() const; inline bool IsDefinitelyZero() const; inline CSSCoord ResolveToCSSPixels(CSSCoord aPercentageBasisInCSSPixels) const; template inline CSSCoord ResolveToCSSPixelsWith(T aPercentageGetter) const; template inline nscoord Resolve(T aPercentageGetter, U aPercentRoundingFunction) const; template inline nscoord Resolve(nscoord aPercentageBasis, T aPercentRoundingFunction) const; template inline nscoord Resolve(T aPercentageGetter) const; inline nscoord Resolve(nscoord aPercentageBasis) const; """ "GenericLengthPercentageOrAuto" = """ inline bool ConvertsToLength() const; inline nscoord ToLength() const; inline bool ConvertsToPercentage() const; inline float ToPercentage() const; inline bool HasPercent() const; inline bool HasLengthAndPercentage() const; // Just some convenient aliases for LengthOrAuto, to avoid confusing naming. inline bool IsLength() const; inline const StyleLength& AsLength() const; static inline StyleGenericLengthPercentageOrAuto Zero(); """ "GenericSize" = """ inline bool ConvertsToLength() const; inline nscoord ToLength() const; inline bool ConvertsToPercentage() const; inline float ToPercentage() const; inline bool HasPercent() const; inline bool HasLengthAndPercentage() const; inline bool BehavesLikeInitialValueOnBlockAxis() const; """ "GenericFlexBasis" = """ inline bool IsAuto() const; """ "GenericMaxSize" = """ inline bool ConvertsToLength() const; inline nscoord ToLength() const; inline bool ConvertsToPercentage() const; inline float ToPercentage() const; inline bool HasPercent() const; inline bool HasLengthAndPercentage() const; inline bool BehavesLikeInitialValueOnBlockAxis() const; """ "GenericPosition" = """ inline bool HasPercent() const; inline bool DependsOnPositioningAreaSize() const; static inline StyleGenericPosition FromPercentage(float); """ "GenericBackgroundSize" = """ bool IsInitialValue() const; """ "Rect" = """ template inline bool All(Predicate) const; template inline bool Any(Predicate) const; // Defined in WritingModes.h inline const T& Get(mozilla::Side) const; inline const T& Get(WritingMode, LogicalSide) const; inline const T& GetIStart(WritingMode) const; inline const T& GetBStart(WritingMode) const; inline const T& Start(LogicalAxis, WritingMode) const; inline const T& GetIEnd(WritingMode) const; inline const T& GetBEnd(WritingMode) const; inline const T& End(LogicalAxis, WritingMode) const; inline T& Get(mozilla::Side); inline T& Get(WritingMode, LogicalSide); inline T& GetIStart(WritingMode); inline T& GetBStart(WritingMode); inline T& GetIEnd(WritingMode); inline T& GetBEnd(WritingMode); """ "GenericBorderRadius" = """ inline const StyleLengthPercentage& Get(HalfCorner) const; """ "RestyleHint" = """ static inline StyleRestyleHint RestyleSubtree(); static inline StyleRestyleHint RecascadeSubtree(); static inline StyleRestyleHint ForAnimations(); // Returns true if this change hint is guaranteed to at least recascade all // elements in the subtree of the element it is applied to. inline bool DefinitelyRecascadesAllSubtree() const; """ "TextTransform" = """ static inline StyleTextTransform None(); inline bool IsNone() const; """ "TextUnderlinePosition" = """ inline bool IsAuto() const; inline bool IsFromFont() const; inline bool IsUnder() const; inline bool IsLeft() const; inline bool IsRight() const; """ # TODO(emilio): Add hooks to cbindgen to be able to generate [[nodiscard]] # on the functions. "Owned" = """ UniquePtr Consume() { UniquePtr ret(ptr); ptr = nullptr; return ret; } """ "OwnedOrNull" = """ UniquePtr Consume() { UniquePtr ret(ptr); ptr = nullptr; return ret; } """ "Strong" = """ already_AddRefed Consume() { already_AddRefed ret(const_cast(ptr)); ptr = nullptr; return ret; } """ "GenericColor" = """ static inline StyleGenericColor FromColor(nscolor); static inline StyleGenericColor Black(); static inline StyleGenericColor White(); static inline StyleGenericColor Transparent(); bool MaybeTransparent() const; /** * Compute the final color, taking into account the foreground color. **/ StyleAbsoluteColor ResolveColor(const StyleAbsoluteColor&) const; /** * Compute the final color, taking into account the foreground color from the * frame's ComputedStyle. */ nscolor CalcColor(const nsIFrame*) const; /** * Compute the final color, taking into account the foreground color from the * style. */ nscolor CalcColor(const ComputedStyle&) const; /** * Compute the final color, making the argument the foreground color. */ nscolor CalcColor(nscolor) const; nscolor CalcColor(const StyleAbsoluteColor&) const; """ "AbsoluteColor" = """ /** * Create a new AbsoluteColor in the sRGB color space. */ static inline StyleAbsoluteColor Srgb(float red, float green, float blue, float alpha); static inline StyleAbsoluteColor Transparent(); static inline StyleAbsoluteColor Black(); static inline StyleAbsoluteColor White(); static inline StyleAbsoluteColor FromColor(nscolor); /** * Convert this color into the given color space. */ StyleAbsoluteColor ToColorSpace(StyleColorSpace aColorSpace) const; /** * Convert this color to an nscolor. The color will be converted to sRGB first * if required. */ nscolor ToColor() const; """ "OwnedSlice" = """ constexpr StyleOwnedSlice() : ptr((T*)alignof(T)), len(0) {} inline void Clear(); inline void CopyFrom(const StyleOwnedSlice&); inline void SwapElements(StyleOwnedSlice&); StyleOwnedSlice& operator=(const StyleOwnedSlice&); StyleOwnedSlice& operator=(StyleOwnedSlice&&); inline StyleOwnedSlice(const StyleOwnedSlice&); inline StyleOwnedSlice(StyleOwnedSlice&&); inline explicit StyleOwnedSlice(Vector&&); inline ~StyleOwnedSlice(); Span AsSpan() const { return {ptr, len}; } size_t Length() const { return len; } bool IsEmpty() const { return Length() == 0; } bool operator==(const StyleOwnedSlice& other) const { return AsSpan() == other.AsSpan(); } bool operator!=(const StyleOwnedSlice& other) const { return !(*this == other); } """ "ArcInner" = """ // Increase the reference count. inline void IncrementRef(); // Release the reference count, and return whether the result must be freed or not. [[nodiscard]] inline bool DecrementRef(); """ "HeaderSlice" = """ StyleHeaderSlice() = delete; StyleHeaderSlice(const StyleHeaderSlice&) = delete; inline ~StyleHeaderSlice(); inline bool operator==(const StyleHeaderSlice& other) const; inline bool operator!=(const StyleHeaderSlice& other) const; inline Span AsSpan() const; inline size_t Length() const { return len; } inline bool IsEmpty() const { return len == 0; } """ "ArcSlice" = """ inline StyleArcSlice(); inline explicit StyleArcSlice(const StyleForgottenArcSlicePtr& aPtr); inline Span AsSpan() const; inline size_t Length() const; inline bool IsEmpty() const; """ "Arc" = """ StyleArc() = delete; inline StyleArc(const StyleArc& Other); private: inline void Release(); public: explicit StyleArc(decltype(p) aP) : p(aP) { MOZ_DIAGNOSTIC_ASSERT(p, "Arc shouldn't be null"); } inline ~StyleArc(); inline StyleArc& operator=(const StyleArc&); inline StyleArc& operator=(StyleArc&&); const T* operator->() const { MOZ_DIAGNOSTIC_ASSERT(p, "Arc shouldn't be null"); return &p->data; } const T& operator*() const { MOZ_DIAGNOSTIC_ASSERT(p, "Arc shouldn't be null"); return p->data; } bool operator==(const StyleArc& other) const { return p == other.p || *(*this) == *other; } bool operator!=(const StyleArc& other) const { return !(*this == other); } """ "CustomIdent" = """ inline nsAtom* AsAtom() const; """ "Atom" = """ StyleAtom(size_t) = delete; StyleAtom() = delete; inline bool IsStatic() const; inline nsAtom* AsAtom() const; private: inline void AddRef(); inline void Release(); public: inline explicit StyleAtom(already_AddRefed aAtom); inline StyleAtom(const StyleAtom& aOther); inline StyleAtom& operator=(const StyleAtom&); inline ~StyleAtom(); """ "OwnedStr" = """ inline nsDependentCSubstring AsString() const; """ "GenericTransformOrigin" = """ inline bool HasPercent() const; """ "GenericTransform" = """ inline Span Operations() const; inline bool IsNone() const; bool HasPercent() const; """ "Angle" = """ inline static StyleAngle Zero(); inline float ToDegrees() const; inline double ToRadians() const; StyleAngle operator+(const StyleAngle& aAngle) const { return StyleAngle{_0 + aAngle._0}; } StyleAngle operator-(const StyleAngle& aAngle) const { return StyleAngle{_0 - aAngle._0}; } """ "CoordPair" = """ explicit StyleCoordPair(const gfx::Point& aPoint): x(aPoint.x), y(aPoint.y) {} gfx::Point ConvertsToGfxPoint() const { return gfx::Point(x, y); } """ "TextOverflow" = """ StyleTextOverflow() : first(StyleTextOverflowSide::Clip()), second(StyleTextOverflowSide::Clip()), sides_are_logical(true) {} """ "UrlExtraData" = """ StyleUrlExtraData() = delete; // Could be implemented if wanted. StyleUrlExtraData(const StyleUrlExtraData&) = delete; StyleUrlExtraData& operator=(const StyleUrlExtraData&) = delete; inline bool IsShared() const; inline ~StyleUrlExtraData(); inline const URLExtraData& get() const; """ "CssUrlData" = """ // Implemented in nsStyleStruct.cpp bool operator==(const StyleCssUrlData& other) const; bool operator!=(const StyleCssUrlData& other) const { return !(*this == other); } """ "LoadData" = """ ~StyleLoadData(); """ "CssUrl" = """ inline nsDependentCSubstring SpecifiedSerialization() const; inline const URLExtraData& ExtraData() const; inline StyleLoadData& LoadData() const; inline nsIURI* GetURI() const; """ "ComputedUrl" = """ // Forwarded from CssUrl. inline nsDependentCSubstring SpecifiedSerialization() const; inline const URLExtraData& ExtraData() const; inline nsIURI* GetURI() const; inline StyleLoadData& LoadData() const; inline bool IsLocalRef() const; inline bool HasRef() const; inline StyleCorsMode CorsMode() const; already_AddRefed ResolveLocalRef(nsIURI* aBase) const; already_AddRefed ResolveLocalRef(const nsIContent* aContent) const; // Only relevant for images. inline bool IsImageResolved() const; inline imgRequestProxy* GetImage() const; void ResolveImage(dom::Document&, const StyleComputedUrl* aOldImage); """ "GenericGradient" = """ inline bool Repeating() const; bool IsOpaque() const; """ "GenericGridLine" = """ // Returns the `auto` value. inline StyleGenericGridLine(); inline bool IsAuto() const; // The line name, or nsGkAtoms::_empty if not present. inline nsAtom* LineName() const; """ "GenericTrackBreadth" = """ inline bool HasPercent() const; """ "GenericTrackSize" = """ // Implemented in nsGridContainerFrame.cpp inline const StyleGenericTrackBreadth& GetMin() const; inline const StyleGenericTrackBreadth& GetMax() const; """ "GenericGridTemplateComponent" = """ inline Maybe RepeatAutoIndex() const; inline const StyleGenericTrackRepeat* GetRepeatAutoValue() const; inline bool HasRepeatAuto() const; inline Span> LineNameLists(bool aIsSubgrid) const; inline Span> TrackListValues() const; """ "GenericClipRect" = """ // Get the layout rect, replacing auto right / bottom values for aAutoSize. inline nsRect ToLayoutRect(nscoord aAutoSize = NS_MAXSIZE) const; """ "TimingFunction" = """ public: bool IsLinearKeyword() const { return IsKeyword() && AsKeyword() == StyleTimingKeyword::Linear; } static StyleTimingFunction LinearKeyword() { return Keyword(StyleTimingKeyword::Linear); } inline double At(double, bool aBeforeFlag) const; inline void AppendToString(nsACString&) const; inline static double GetPortion(const Maybe&, double, bool aBeforeFlag); """ "GenericImage" = """ public: // Returns the intrinsic resolution of the image. // // The resolution is in dppx, and should be used to impact the intrinsic // size of the image. ImageResolution GetResolution() const; // Returns the intrinsic size of the image, if there's one, accounting for // resolution as needed. Maybe GetIntrinsicSize() const; // If this is an image-set(), the final image we've selected, otherwise it // returns *this. const StyleGenericImage& FinalImage() const; // Whether this image may have an image request associated with it. bool IsImageRequestType() const; // Gets the image request URL. const StyleComputedImageUrl* GetImageRequestURLValue() const; // Gets the image data of this image if it has any image request. imgRequestProxy* GetImageRequest() const; // Returns true if this image is fully loaded, and its size is calculated. // Always returns true if there's no image request involved and this image // is not `none`. bool IsComplete() const; // Returns true if this image has an available size and hasn't errored. // Always returns true if there's no image request involved and this image // is not `none`. bool IsSizeAvailable() const; // Returns true if the item is definitely opaque --- i.e., paints every // pixel within its bounds opaquely, and the bounds contains at least a pixel. bool IsOpaque() const; struct ActualCropRect { nsIntRect mRect; // in image pixels bool mIsEntireImage; }; Maybe ComputeActualCropRect() const; // Resolves the underlying image request if any. void ResolveImage(dom::Document&, const StyleGenericImage* aOld); // Returns whether this image has been resolved. bool IsResolved() const; """ "Ratio" = """ inline AspectRatio ToLayoutRatio(UseBoxSizing aUseBoxSizing) const; """ "GenericAspectRatio" = """ bool HasRatio() const { return ratio.IsRatio(); } bool HasFiniteRatio() const { return static_cast(ToLayoutRatio()); } bool BehavesAsAuto() const { return auto_ || !HasFiniteRatio(); } inline AspectRatio ToLayoutRatio() const; static StyleGenericAspectRatio Auto() { return {true, StylePreferredRatio::None()}; } """ "FontFamilyList" = """ static StyleFontFamilyList WithOneUnquotedFamily(const nsACString&); // Constructs a font family list with a list of names. static StyleFontFamilyList WithNames(nsTArray&&); """ "SingleFontFamily" = """ static StyleSingleFontFamily Parse(const nsACString& aName); void AppendToString(nsACString& aFamily, bool aIncludeQuotes = true) const; bool IsNamedFamily(const nsAString&) const; """ "TimelineOrKeyframesName" = """ public: inline nsAtom* AsAtom() const; """ "FontWeight" = """ SERVO_FIXED_POINT_HELPERS(StyleFontWeight, uint16_t, StyleFONT_WEIGHT_FRACTION_BITS); inline bool IsBold() const; """ "FontStyle" = """ SERVO_FIXED_POINT_HELPERS(StyleFontStyle, int16_t, StyleFONT_STYLE_FRACTION_BITS); inline bool IsItalic() const; inline bool IsOblique() const; inline float ObliqueAngle() const; // Only for use when IsOblique() is true inline float SlantAngle() const; // Returns angle for any font-style, including // normal/italic as well as explicit oblique """ "FontStretch" = """ SERVO_FIXED_POINT_HELPERS(StyleFontStretch, uint16_t, StyleFONT_STRETCH_FRACTION_BITS); """ "AnimationName" = """ public: StyleAnimationName(): _0(RefPtr(nsGkAtoms::_empty).forget()) {} """ "GenericViewTimelineInset" = """ public: inline StyleGenericViewTimelineInset(); """ "Time" = """ float ToSeconds() const { return seconds; } float ToMilliseconds() const { return seconds * 1000.0f; } """ "FontFaceSourceTechFlags" = """ inline static StyleFontFaceSourceTechFlags Empty() { return StyleFontFaceSourceTechFlags{0}; } """ "FontPalette" = """ inline static StyleFontPalette Normal() { return StyleFontPalette{StyleAtom(nsGkAtoms::normal->ToAddRefed())}; } """