mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-02 01:48:05 +00:00
fce57b44fd
Had to implement some OwnedSlice bits that the canvas code used. Differential Revision: https://phabricator.services.mozilla.com/D31799
577 lines
16 KiB
TOML
577 lines
16 KiB
TOML
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"""
|
|
trailer = """
|
|
#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"]
|
|
|
|
[parse]
|
|
parse_deps = true
|
|
include = ["style", "cssparser", "style_traits", "servo_arc"]
|
|
|
|
[struct]
|
|
derive_eq = true
|
|
derive_neq = true
|
|
|
|
[defines]
|
|
# This will actually never be defined, but is handy to avoid cbindgen
|
|
# generating Servo-only types.
|
|
"feature = servo" = "CBINDGEN_IS_SERVO"
|
|
|
|
[macro_expansion]
|
|
bitflags = true
|
|
|
|
[enum]
|
|
derive_helper_methods = true
|
|
derive_const_casts = true
|
|
derive_tagged_enum_destructor = true
|
|
cast_assert_name = "MOZ_ASSERT"
|
|
|
|
[export]
|
|
prefix = "Style"
|
|
include = [
|
|
"Appearance",
|
|
"BreakBetween",
|
|
"BreakWithin",
|
|
"BorderStyle",
|
|
"OutlineStyle",
|
|
"ComputedFontStretchRange",
|
|
"ComputedFontStyleDescriptor",
|
|
"ComputedFontWeightRange",
|
|
"ComputedTimingFunction",
|
|
"CursorKind",
|
|
"Display",
|
|
"DisplayMode",
|
|
"PrefersColorScheme",
|
|
"ExtremumLength",
|
|
"FillRule",
|
|
"FontDisplay",
|
|
"FontFaceSourceListComponent",
|
|
"FontLanguageOverride",
|
|
"GenericFontFamily",
|
|
"FontFamilyNameSyntax",
|
|
"OverflowWrap",
|
|
"TimingFunction",
|
|
"OffsetPath",
|
|
"OffsetRotate",
|
|
"UnicodeRange",
|
|
"UserSelect",
|
|
"Float",
|
|
"OverscrollBehavior",
|
|
"ScrollSnapAlign",
|
|
"ScrollSnapAxis",
|
|
"ScrollSnapStrictness",
|
|
"ScrollSnapType",
|
|
"OverflowAnchor",
|
|
"OverflowClipBox",
|
|
"Resize",
|
|
"Overflow",
|
|
"LengthPercentage",
|
|
"LetterSpacing",
|
|
"NonNegativeLengthPercentage",
|
|
"LengthPercentageOrAuto",
|
|
"LineHeight",
|
|
"NonNegativeLengthPercentageOrAuto",
|
|
"NonNegativeLengthPercentageOrNormal",
|
|
"LengthOrAuto",
|
|
"NonNegativeLengthOrAuto",
|
|
"Rect",
|
|
"IntersectionObserverRootMargin",
|
|
"Size",
|
|
"MaxSize",
|
|
"FlexBasis",
|
|
"Position",
|
|
"BackgroundSize",
|
|
"BorderImageSlice",
|
|
"BorderSpacing",
|
|
"BorderRadius",
|
|
"NonNegativeLengthOrNumberRect",
|
|
"Perspective",
|
|
"ZIndex",
|
|
"TransformOrigin",
|
|
"LineBreak",
|
|
"WordBreak",
|
|
"Contain",
|
|
"Origin",
|
|
"RestyleHint",
|
|
"TouchAction",
|
|
"WillChange",
|
|
"TextDecorationLine",
|
|
"TextTransform",
|
|
"TextOverflow",
|
|
"MozListReversed",
|
|
"Owned",
|
|
"OwnedOrNull",
|
|
"Strong",
|
|
"ScrollbarColor",
|
|
"Color",
|
|
"ColorOrAuto",
|
|
"SystemColor",
|
|
"GradientItem",
|
|
"VerticalAlign",
|
|
"BasicShape",
|
|
"ShapeRadius",
|
|
"ArcSlice",
|
|
"ForgottenArcSlicePtr",
|
|
"HeaderWithLength",
|
|
"MozContextProperties",
|
|
"Quotes",
|
|
"BoxShadow",
|
|
"SimpleShadow",
|
|
"Transform",
|
|
"Rotate",
|
|
"Scale",
|
|
"Translate",
|
|
"BorderImageWidth",
|
|
"ComputedUrl",
|
|
"ComputedImageUrl",
|
|
"UrlOrNone",
|
|
"Filter",
|
|
]
|
|
item_types = ["enums", "structs", "typedefs", "functions"]
|
|
renaming_overrides_prefixing = true
|
|
|
|
# Prevent some renaming for Gecko types that cbindgen doesn't otherwise understand.
|
|
[export.rename]
|
|
"nscolor" = "nscolor"
|
|
"nsAtom" = "nsAtom"
|
|
"nsIURI" = "nsIURI"
|
|
"nsCompatibility" = "nsCompatibility"
|
|
"SharedFontList" = "SharedFontList"
|
|
"nsSimpleContentList" = "nsSimpleContentList"
|
|
"nsACString" = "nsACString"
|
|
"nsAString" = "nsAString"
|
|
"nsString" = "nsString"
|
|
"nsTArray" = "nsTArray"
|
|
"nsPresContext" = "nsPresContext"
|
|
"ComputedTiming" = "ComputedTiming"
|
|
"RefPtr" = "RefPtr"
|
|
"nsCSSPropertyID" = "nsCSSPropertyID"
|
|
"nsCSSPropertyIDSet" = "nsCSSPropertyIDSet"
|
|
"nsCSSValueSharedList" = "nsCSSValueSharedList"
|
|
"AnimationPropertySegment" = "AnimationPropertySegment"
|
|
"RawServoAnimationValueMap" = "RawServoAnimationValueMap"
|
|
"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"
|
|
"nsTimingFunction" = "nsTimingFunction"
|
|
"Keyframe" = "Keyframe"
|
|
"ComputedKeyframeValues" = "ComputedKeyframeValues"
|
|
"OriginFlags" = "OriginFlags"
|
|
"ServoTraversalFlags" = "ServoTraversalFlags"
|
|
"ServoStyleSetSizes" = "ServoStyleSetSizes"
|
|
|
|
[export.body]
|
|
"CSSPixelLength" = """
|
|
inline nscoord ToAppUnits() const;
|
|
inline bool IsZero() const;
|
|
float ToCSSPixels() const { return _0; }
|
|
"""
|
|
|
|
"LengthPercentage" = """
|
|
// Defined in nsStyleCoord.h
|
|
static constexpr inline StyleLengthPercentage Zero();
|
|
static inline StyleLengthPercentage FromAppUnits(nscoord);
|
|
static inline StyleLengthPercentage FromPixels(CSSCoord);
|
|
static inline StyleLengthPercentage FromPercentage(float);
|
|
inline CSSCoord LengthInCSSPixels() const;
|
|
inline float Percentage() const;
|
|
inline bool HasPercent() const;
|
|
inline bool ConvertsToLength() const;
|
|
inline nscoord ToLength() const;
|
|
inline bool ConvertsToPercentage() const;
|
|
inline bool HasLengthAndPercentage() const;
|
|
inline float ToPercentage() const;
|
|
inline bool IsDefinitelyZero() const;
|
|
inline CSSCoord ResolveToCSSPixels(CSSCoord aPercentageBasisInCSSPixels) const;
|
|
template<typename T> inline CSSCoord ResolveToCSSPixelsWith(T aPercentageGetter) const;
|
|
template<typename T, typename U>
|
|
inline nscoord Resolve(T aPercentageGetter, U aPercentRoundingFunction) const;
|
|
template<typename T>
|
|
inline nscoord Resolve(nscoord aPercentageBasis, T aPercentRoundingFunction) const;
|
|
template<typename T> 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;
|
|
"""
|
|
|
|
"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 DependsOnPositioningAreaSize() const;
|
|
static inline StyleGenericPosition FromPercentage(float);
|
|
"""
|
|
|
|
"GenericBackgroundSize" = """
|
|
bool IsInitialValue() const;
|
|
"""
|
|
|
|
"Rect" = """
|
|
// Defined in nsStyleCoord.h
|
|
template<typename Predicate> inline bool All(Predicate) const;
|
|
template<typename Predicate> inline bool Any(Predicate) const;
|
|
|
|
// Defined in WritingModes.h
|
|
inline const T& Get(mozilla::Side) const;
|
|
inline const T& Get(mozilla::WritingMode, mozilla::LogicalSide) const;
|
|
inline const T& GetIStart(mozilla::WritingMode) const;
|
|
inline const T& GetBStart(mozilla::WritingMode) const;
|
|
inline const T& GetIEnd(mozilla::WritingMode) const;
|
|
inline const T& GetBEnd(mozilla::WritingMode) const;
|
|
"""
|
|
|
|
"GenericBorderRadius" = """
|
|
inline const StyleLengthPercentage& Get(mozilla::HalfCorner) const;
|
|
"""
|
|
|
|
"RestyleHint" = """
|
|
static inline StyleRestyleHint RestyleSubtree();
|
|
static inline StyleRestyleHint RecascadeSubtree();
|
|
static inline StyleRestyleHint ForAnimations();
|
|
"""
|
|
|
|
"TextTransform" = """
|
|
static inline StyleTextTransform None();
|
|
inline bool IsNone() const;
|
|
"""
|
|
|
|
# TODO(emilio): Add hooks to cbindgen to be able to generate MOZ_MUST_USE_TYPE
|
|
# or MOZ_MUST_USE on the functions.
|
|
"Owned" = """
|
|
UniquePtr<GeckoType> Consume() {
|
|
UniquePtr<GeckoType> ret(ptr);
|
|
ptr = nullptr;
|
|
return ret;
|
|
}
|
|
"""
|
|
|
|
"OwnedOrNull" = """
|
|
UniquePtr<GeckoType> Consume() {
|
|
UniquePtr<GeckoType> ret(ptr);
|
|
ptr = nullptr;
|
|
return ret;
|
|
}
|
|
"""
|
|
|
|
"Strong" = """
|
|
already_AddRefed<GeckoType> Consume() {
|
|
already_AddRefed<GeckoType> ret(const_cast<GeckoType*>(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 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 StyleRGBA&) const;
|
|
"""
|
|
|
|
"RGBA" = """
|
|
static inline StyleRGBA Transparent();
|
|
static inline StyleRGBA FromColor(nscolor);
|
|
|
|
inline nscolor ToColor() const;
|
|
"""
|
|
|
|
"OwnedSlice" = """
|
|
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 ~StyleOwnedSlice();
|
|
|
|
Span<const T> AsSpan() const {
|
|
return MakeSpan(ptr, len);
|
|
}
|
|
|
|
size_t Length() const {
|
|
return AsSpan().Length();
|
|
}
|
|
|
|
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.
|
|
MOZ_MUST_USE inline bool DecrementRef();
|
|
"""
|
|
|
|
"ArcSlice" = """
|
|
inline StyleArcSlice();
|
|
inline StyleArcSlice(const StyleArcSlice& aOther);
|
|
|
|
// Should be easily implementable if wanted, but the default implementation would leak.
|
|
StyleArcSlice& operator=(const StyleArcSlice&) = delete;
|
|
StyleArcSlice& operator=(StyleArcSlice&&) = delete;
|
|
|
|
inline explicit StyleArcSlice(const StyleForgottenArcSlicePtr<T>& aPtr);
|
|
inline ~StyleArcSlice();
|
|
inline Span<const T> AsSpan() const;
|
|
inline size_t Length() const;
|
|
inline bool IsEmpty() const;
|
|
inline bool operator==(const StyleArcSlice& other) const;
|
|
inline bool operator!=(const StyleArcSlice& other) const;
|
|
"""
|
|
|
|
"Arc" = """
|
|
StyleArc() = delete;
|
|
inline StyleArc(const StyleArc& Other);
|
|
private:
|
|
inline void Release();
|
|
public:
|
|
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;
|
|
|
|
// NOTE(emilio): For now we don't need to expose anything else, but it'd be trivial if we wanted to.
|
|
inline bool IsStatic() const;
|
|
inline nsAtom* AsAtom() const;
|
|
|
|
// Could be implemented if wanted.
|
|
StyleAtom& operator=(const StyleAtom&) = delete;
|
|
|
|
inline StyleAtom(const StyleAtom& aOther);
|
|
inline ~StyleAtom();
|
|
"""
|
|
|
|
"OwnedStr" = """
|
|
inline nsDependentCSubstring AsString() const;
|
|
"""
|
|
|
|
"GenericTransform" = """
|
|
inline Span<const T> Operations() const;
|
|
inline bool IsNone() const;
|
|
"""
|
|
|
|
"GenericTransformOperation" = """
|
|
private:
|
|
// Private default constructor without initialization so that the helper
|
|
// constructor functions still work as expected. They take care of
|
|
// initializing the fields properly.
|
|
StyleGenericTransformOperation() {}
|
|
public:
|
|
"""
|
|
|
|
"GenericUrlOrNone" = """
|
|
private:
|
|
// Private default constructor without initialization so that the helper
|
|
// constructor functions still work as expected. They take care of
|
|
// initializing the fields properly.
|
|
StyleGenericUrlOrNone() {}
|
|
public:
|
|
"""
|
|
"Angle" = """
|
|
inline static StyleAngle Zero();
|
|
inline float ToDegrees() const;
|
|
inline double ToRadians() const;
|
|
"""
|
|
|
|
"OffsetPath" = """
|
|
private:
|
|
// Private default constructor without initialization so that the helper
|
|
// constructor functions still work as expected. They take care of
|
|
// initializing the fields properly.
|
|
StyleOffsetPath() {}
|
|
public:
|
|
"""
|
|
|
|
"TextOverflowSide" = """
|
|
private:
|
|
// Private default constructor without initialization so that the helper
|
|
// constructor functions still work as expected. They take care of
|
|
// initializing the fields properly.
|
|
StyleTextOverflowSide() {}
|
|
public:
|
|
"""
|
|
|
|
"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 CORSMode CorsMode() const;
|
|
already_AddRefed<nsIURI> ResolveLocalRef(nsIURI* aBase) const;
|
|
already_AddRefed<nsIURI> ResolveLocalRef(const nsIContent* aContent) const;
|
|
imgRequestProxy* LoadImage(mozilla::dom::Document&);
|
|
"""
|