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 BorderColor {
pub color: AlphaColor<Srgb>,
}
impl Property for BorderColor {
fn static_default() -> &'static Self {
static DEFAULT: BorderColor = BorderColor {
color: AlphaColor::TRANSPARENT,
};
&DEFAULT
}
}
impl BorderColor {
pub const fn new(color: AlphaColor<Srgb>) -> Self {
Self { color }
}
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct HoveredBorderColor(pub BorderColor);
impl Property for HoveredBorderColor {
fn static_default() -> &'static Self {
static DEFAULT: HoveredBorderColor = HoveredBorderColor(BorderColor {
color: AlphaColor::TRANSPARENT,
});
&DEFAULT
}
}
impl Default for BorderColor {
fn default() -> Self {
*Self::static_default()
}
}
impl BorderColor {
pub fn prop_changed(ctx: &mut UpdateCtx<'_>, property_type: TypeId) {
if property_type != TypeId::of::<Self>() {
return;
}
ctx.request_paint_only();
}
}
impl Default for HoveredBorderColor {
fn default() -> Self {
*Self::static_default()
}
}
impl HoveredBorderColor {
pub fn prop_changed(ctx: &mut UpdateCtx<'_>, property_type: TypeId) {
if property_type != TypeId::of::<Self>() {
return;
}
ctx.request_paint_only();
}
}