diff options
Diffstat (limited to '')
| -rw-r--r-- | style/src/lib.rs | 1 | ||||
| -rw-r--r-- | style/src/text.rs | 18 | ||||
| -rw-r--r-- | style/src/theme.rs | 35 | 
3 files changed, 54 insertions, 0 deletions
diff --git a/style/src/lib.rs b/style/src/lib.rs index 4a0a6a14..ee426e98 100644 --- a/style/src/lib.rs +++ b/style/src/lib.rs @@ -21,6 +21,7 @@ pub mod radio;  pub mod rule;  pub mod scrollable;  pub mod slider; +pub mod text;  pub mod text_input;  pub mod theme;  pub mod toggler; diff --git a/style/src/text.rs b/style/src/text.rs new file mode 100644 index 00000000..69a4ed85 --- /dev/null +++ b/style/src/text.rs @@ -0,0 +1,18 @@ +use iced_core::Color; + +pub trait StyleSheet { +    type Style: Default + Copy; + +    fn appearance(&self, style: Self::Style) -> Appearance; +} + +#[derive(Debug, Clone, Copy)] +pub struct Appearance { +    pub color: Option<Color>, +} + +impl Default for Appearance { +    fn default() -> Self { +        Self { color: None } +    } +} diff --git a/style/src/theme.rs b/style/src/theme.rs index b1e18c55..0bae671e 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -14,6 +14,7 @@ use crate::radio;  use crate::rule;  use crate::scrollable;  use crate::slider; +use crate::text;  use crate::text_input;  use crate::toggler; @@ -602,6 +603,40 @@ impl scrollable::StyleSheet for Theme {  }  /* + * Text + */ +#[derive(Clone, Copy)] +pub enum Text { +    Default, +    Color(Color), +    Custom(fn(&Theme) -> text::Appearance), +} + +impl Default for Text { +    fn default() -> Self { +        Self::Default +    } +} + +impl From<Color> for Text { +    fn from(color: Color) -> Self { +        Text::Color(color) +    } +} + +impl text::StyleSheet for Theme { +    type Style = Text; + +    fn appearance(&self, style: Self::Style) -> text::Appearance { +        match style { +            Text::Default => Default::default(), +            Text::Color(c) => text::Appearance { color: Some(c) }, +            Text::Custom(f) => f(self), +        } +    } +} + +/*   * Text Input   */  impl text_input::StyleSheet for Theme {  | 
