use std::any::TypeId;
use crate::core::{Property, UpdateCtx};
use crate::peniko::color::{AlphaColor, Srgb};
#[expect(missing_docs, reason = "field names are self-descriptive")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct ContentColor {
pub color: AlphaColor<Srgb>,
}
impl Property for ContentColor {
fn static_default() -> &'static Self {
static DEFAULT: ContentColor = ContentColor {
color: AlphaColor::BLACK,
};
&DEFAULT
}
}
impl ContentColor {
pub const fn new(color: AlphaColor<Srgb>) -> Self {
Self { color }
}
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DisabledContentColor(pub ContentColor);
impl Property for DisabledContentColor {
fn static_default() -> &'static Self {
static DEFAULT: DisabledContentColor = DisabledContentColor(ContentColor {
color: AlphaColor::BLACK,
});
&DEFAULT
}
}
impl Default for ContentColor {
fn default() -> Self {
*Self::static_default()
}
}
impl ContentColor {
pub fn prop_changed(ctx: &mut UpdateCtx<'_>, property_type: TypeId) {
if property_type != TypeId::of::<Self>() {
return;
}
ctx.request_paint_only();
}
}
impl Default for DisabledContentColor {
fn default() -> Self {
*Self::static_default()
}
}
impl DisabledContentColor {
pub fn prop_changed(ctx: &mut UpdateCtx<'_>, property_type: TypeId) {
if property_type != TypeId::of::<Self>() {
return;
}
ctx.request_paint_only();
}
}