mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-25 00:27:29 +09:00
Issue #2489: Create ColorMixValue structure
This commit is contained in:
parent
99d7fb8e95
commit
cb60df2169
1 changed files with 53 additions and 0 deletions
|
|
@ -521,6 +521,7 @@ enum nsCSSUnit {
|
||||||
eCSSUnit_HSLColor = 89, // (nsCSSValueFloatColor*)
|
eCSSUnit_HSLColor = 89, // (nsCSSValueFloatColor*)
|
||||||
eCSSUnit_HSLAColor = 90, // (nsCSSValueFloatColor*)
|
eCSSUnit_HSLAColor = 90, // (nsCSSValueFloatColor*)
|
||||||
eCSSUnit_ComplexColor = 91, // (ComplexColorValue*)
|
eCSSUnit_ComplexColor = 91, // (ComplexColorValue*)
|
||||||
|
eCSSUnit_ColorMix = 92, // (ColorMixValue*)
|
||||||
|
|
||||||
eCSSUnit_Percent = 100, // (float) 1.0 == 100%) value is percentage of something
|
eCSSUnit_Percent = 100, // (float) 1.0 == 100%) value is percentage of something
|
||||||
eCSSUnit_Number = 101, // (float) value is numeric (usually multiplier, different behavior than percent)
|
eCSSUnit_Number = 101, // (float) value is numeric (usually multiplier, different behavior than percent)
|
||||||
|
|
@ -606,6 +607,13 @@ struct nsCSSValueTriplet;
|
||||||
struct nsCSSValueTriplet_heap;
|
struct nsCSSValueTriplet_heap;
|
||||||
class nsCSSValueFloatColor;
|
class nsCSSValueFloatColor;
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace css {
|
||||||
|
enum class ColorMixColorSpace;
|
||||||
|
struct ColorMixValue;
|
||||||
|
} // namespace css
|
||||||
|
} // namespace mozilla
|
||||||
|
|
||||||
class nsCSSValue {
|
class nsCSSValue {
|
||||||
public:
|
public:
|
||||||
struct Array;
|
struct Array;
|
||||||
|
|
@ -805,6 +813,12 @@ public:
|
||||||
return mValue.mComplexColor->ToComplexColor();
|
return mValue.mComplexColor->ToComplexColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mozilla::css::ColorMixValue* GetColorMixValue() const
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(mUnit == eCSSUnit_ColorMix);
|
||||||
|
return mValue.mColorMix;
|
||||||
|
}
|
||||||
|
|
||||||
Array* GetArrayValue() const
|
Array* GetArrayValue() const
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(UnitHasArrayValue(), "not an array value");
|
MOZ_ASSERT(UnitHasArrayValue(), "not an array value");
|
||||||
|
|
@ -950,6 +964,8 @@ public:
|
||||||
void SetRGBAColorValue(const mozilla::css::RGBAColorData& aValue);
|
void SetRGBAColorValue(const mozilla::css::RGBAColorData& aValue);
|
||||||
void SetComplexColorValue(
|
void SetComplexColorValue(
|
||||||
already_AddRefed<mozilla::css::ComplexColorValue> aValue);
|
already_AddRefed<mozilla::css::ComplexColorValue> aValue);
|
||||||
|
void SetColorMixValue(
|
||||||
|
already_AddRefed<mozilla::css::ColorMixValue> aValue);
|
||||||
void SetCascadeOriginValue(mozilla::SheetType aValue, nsCSSUnit aUnit);
|
void SetCascadeOriginValue(mozilla::SheetType aValue, nsCSSUnit aUnit);
|
||||||
void SetArrayValue(nsCSSValue::Array* aArray, nsCSSUnit aUnit);
|
void SetArrayValue(nsCSSValue::Array* aArray, nsCSSUnit aUnit);
|
||||||
void SetURLValue(mozilla::css::URLValue* aURI);
|
void SetURLValue(mozilla::css::URLValue* aURI);
|
||||||
|
|
@ -1063,6 +1079,7 @@ protected:
|
||||||
nsCSSValueFloatColor* MOZ_OWNING_REF mFloatColor;
|
nsCSSValueFloatColor* MOZ_OWNING_REF mFloatColor;
|
||||||
mozilla::css::FontFamilyListRefCnt* MOZ_OWNING_REF mFontFamilyList;
|
mozilla::css::FontFamilyListRefCnt* MOZ_OWNING_REF mFontFamilyList;
|
||||||
mozilla::css::ComplexColorValue* MOZ_OWNING_REF mComplexColor;
|
mozilla::css::ComplexColorValue* MOZ_OWNING_REF mComplexColor;
|
||||||
|
mozilla::css::ColorMixValue* MOZ_OWNING_REF mColorMix;
|
||||||
mozilla::SheetType mCascadeOrigin;
|
mozilla::SheetType mCascadeOrigin;
|
||||||
} mValue;
|
} mValue;
|
||||||
};
|
};
|
||||||
|
|
@ -1972,5 +1989,41 @@ protected:
|
||||||
static const corner_type corners[4];
|
static const corner_type corners[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace css {
|
||||||
|
|
||||||
|
enum class ColorMixColorSpace {
|
||||||
|
sRGB,
|
||||||
|
HSL
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ColorMixValue final
|
||||||
|
{
|
||||||
|
ColorMixColorSpace mColorSpace;
|
||||||
|
nsCSSValue mColor1;
|
||||||
|
nsCSSValue mColor2;
|
||||||
|
float mWeight1;
|
||||||
|
float mWeight2;
|
||||||
|
|
||||||
|
ColorMixValue(ColorMixColorSpace aColorSpace, const nsCSSValue& aColor1, const nsCSSValue& aColor2)
|
||||||
|
: mColorSpace(aColorSpace), mColor1(aColor1), mColor2(aColor2), mWeight1(0.5f), mWeight2(0.5f) {}
|
||||||
|
|
||||||
|
ColorMixValue(ColorMixColorSpace aColorSpace, const nsCSSValue& aColor1, const nsCSSValue& aColor2,
|
||||||
|
float aWeight1, float aWeight2)
|
||||||
|
: mColorSpace(aColorSpace), mColor1(aColor1), mColor2(aColor2), mWeight1(aWeight1), mWeight2(aWeight2) {}
|
||||||
|
|
||||||
|
ColorMixValue(const ColorMixValue&) = delete;
|
||||||
|
|
||||||
|
NS_INLINE_DECL_REFCOUNTING(ColorMixValue)
|
||||||
|
|
||||||
|
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
~ColorMixValue() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace css
|
||||||
|
} // namespace mozilla
|
||||||
|
|
||||||
#endif /* nsCSSValue_h___ */
|
#endif /* nsCSSValue_h___ */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue