mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-02 14:51:15 +00:00
C++: Add constructors to and from ARGBColor/Color
This commit is contained in:
parent
520df89e2c
commit
831cf902fe
1 changed files with 45 additions and 3 deletions
|
@ -36,7 +36,7 @@ struct ARGBColor
|
||||||
|
|
||||||
/// Creates a new ARGBColor instance from a given color. This template function is
|
/// Creates a new ARGBColor instance from a given color. This template function is
|
||||||
/// specialized and thus implemented for T == uint8_t and T == float.
|
/// specialized and thus implemented for T == uint8_t and T == float.
|
||||||
static ARGBColor<T> from(const Color &col);
|
ARGBColor(const Color &col);
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Color represents a color in the SixtyFPS run-time, represented using 8-bit channels for
|
/// Color represents a color in the SixtyFPS run-time, represented using 8-bit channels for
|
||||||
|
@ -46,6 +46,20 @@ class Color
|
||||||
public:
|
public:
|
||||||
/// Default constructs a new color that is entirely transparent.
|
/// Default constructs a new color that is entirely transparent.
|
||||||
Color() { inner.red = inner.green = inner.blue = inner.alpha = 0; }
|
Color() { inner.red = inner.green = inner.blue = inner.alpha = 0; }
|
||||||
|
Color(const ARGBColor<uint8_t> &col)
|
||||||
|
{
|
||||||
|
inner.red = col.red;
|
||||||
|
inner.green = col.green;
|
||||||
|
inner.blue = col.blue;
|
||||||
|
inner.alpha = col.alpha;
|
||||||
|
}
|
||||||
|
Color(const ARGBColor<float> &col)
|
||||||
|
{
|
||||||
|
inner.red = col.red * 255;
|
||||||
|
inner.green = col.green * 255;
|
||||||
|
inner.blue = col.blue * 255;
|
||||||
|
inner.alpha = col.alpha * 255;
|
||||||
|
}
|
||||||
|
|
||||||
/// Construct a color from an integer encoded as `0xAARRGGBB`
|
/// Construct a color from an integer encoded as `0xAARRGGBB`
|
||||||
static Color from_argb_encoded(uint32_t argb_encoded)
|
static Color from_argb_encoded(uint32_t argb_encoded)
|
||||||
|
@ -102,10 +116,10 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Converts this color to an ARGBColor struct for easy destructuring.
|
/// Converts this color to an ARGBColor struct for easy destructuring.
|
||||||
ARGBColor<uint8_t> to_argb_uint() const { return ARGBColor<uint8_t>::from(*this); }
|
inline ARGBColor<uint8_t> to_argb_uint() const;
|
||||||
|
|
||||||
/// Converts this color to an ARGBColor struct for easy destructuring.
|
/// Converts this color to an ARGBColor struct for easy destructuring.
|
||||||
ARGBColor<float> to_argb_float() const { return ARGBColor<float>::from(*this); }
|
inline ARGBColor<float> to_argb_float() const;
|
||||||
|
|
||||||
/// Returns the red channel of the color as u8 in the range 0..255.
|
/// Returns the red channel of the color as u8 in the range 0..255.
|
||||||
uint8_t red() const { return inner.red; }
|
uint8_t red() const { return inner.red; }
|
||||||
|
@ -135,6 +149,34 @@ private:
|
||||||
cbindgen_private::types::Color inner;
|
cbindgen_private::types::Color inner;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<>
|
||||||
|
ARGBColor<uint8_t>::ARGBColor(const Color &color)
|
||||||
|
{
|
||||||
|
red = color.red();
|
||||||
|
green = color.green();
|
||||||
|
blue = color.blue();
|
||||||
|
alpha = color.alpha();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
ARGBColor<float>::ARGBColor(const Color &color)
|
||||||
|
{
|
||||||
|
red = float(color.red()) / 255.;
|
||||||
|
green = float(color.green()) / 255.;
|
||||||
|
blue = float(color.blue()) / 255.;
|
||||||
|
alpha = float(color.alpha()) / 255.;
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGBColor<uint8_t> Color::to_argb_uint() const
|
||||||
|
{
|
||||||
|
return ARGBColor<uint8_t>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
ARGBColor<float> Color::to_argb_float() const
|
||||||
|
{
|
||||||
|
return ARGBColor<float>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
void Property<Color>::set_animated_value(const Color &new_value,
|
void Property<Color>::set_animated_value(const Color &new_value,
|
||||||
const cbindgen_private::PropertyAnimation &animation_data)
|
const cbindgen_private::PropertyAnimation &animation_data)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue