mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 15:28:39 +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_HSLAColor = 90, // (nsCSSValueFloatColor*)
|
||||
eCSSUnit_ComplexColor = 91, // (ComplexColorValue*)
|
||||
eCSSUnit_ColorMix = 92, // (ColorMixValue*)
|
||||
|
||||
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)
|
||||
|
|
@ -606,6 +607,13 @@ struct nsCSSValueTriplet;
|
|||
struct nsCSSValueTriplet_heap;
|
||||
class nsCSSValueFloatColor;
|
||||
|
||||
namespace mozilla {
|
||||
namespace css {
|
||||
enum class ColorMixColorSpace;
|
||||
struct ColorMixValue;
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
||||
class nsCSSValue {
|
||||
public:
|
||||
struct Array;
|
||||
|
|
@ -805,6 +813,12 @@ public:
|
|||
return mValue.mComplexColor->ToComplexColor();
|
||||
}
|
||||
|
||||
mozilla::css::ColorMixValue* GetColorMixValue() const
|
||||
{
|
||||
MOZ_ASSERT(mUnit == eCSSUnit_ColorMix);
|
||||
return mValue.mColorMix;
|
||||
}
|
||||
|
||||
Array* GetArrayValue() const
|
||||
{
|
||||
MOZ_ASSERT(UnitHasArrayValue(), "not an array value");
|
||||
|
|
@ -950,6 +964,8 @@ public:
|
|||
void SetRGBAColorValue(const mozilla::css::RGBAColorData& aValue);
|
||||
void SetComplexColorValue(
|
||||
already_AddRefed<mozilla::css::ComplexColorValue> aValue);
|
||||
void SetColorMixValue(
|
||||
already_AddRefed<mozilla::css::ColorMixValue> aValue);
|
||||
void SetCascadeOriginValue(mozilla::SheetType aValue, nsCSSUnit aUnit);
|
||||
void SetArrayValue(nsCSSValue::Array* aArray, nsCSSUnit aUnit);
|
||||
void SetURLValue(mozilla::css::URLValue* aURI);
|
||||
|
|
@ -1063,6 +1079,7 @@ protected:
|
|||
nsCSSValueFloatColor* MOZ_OWNING_REF mFloatColor;
|
||||
mozilla::css::FontFamilyListRefCnt* MOZ_OWNING_REF mFontFamilyList;
|
||||
mozilla::css::ComplexColorValue* MOZ_OWNING_REF mComplexColor;
|
||||
mozilla::css::ColorMixValue* MOZ_OWNING_REF mColorMix;
|
||||
mozilla::SheetType mCascadeOrigin;
|
||||
} mValue;
|
||||
};
|
||||
|
|
@ -1972,5 +1989,41 @@ protected:
|
|||
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___ */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue