Overhaul Font type to allow font family selection

This commit is contained in:
Héctor Ramón Jiménez 2023-02-04 07:33:33 +01:00
parent a7580e0696
commit b29de28d1f
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
25 changed files with 147 additions and 256 deletions

View file

@ -35,7 +35,7 @@ where
width: Length,
padding: Padding,
text_size: Option<f32>,
font: Renderer::Font,
font: Option<Renderer::Font>,
handle: Handle<Renderer::Font>,
style: <Renderer::Theme as StyleSheet>::Style,
}
@ -70,7 +70,7 @@ where
width: Length::Shrink,
padding: Self::DEFAULT_PADDING,
text_size: None,
font: Default::default(),
font: None,
handle: Default::default(),
style: Default::default(),
}
@ -101,8 +101,8 @@ where
}
/// Sets the font of the [`PickList`].
pub fn font(mut self, font: Renderer::Font) -> Self {
self.font = font;
pub fn font(mut self, font: impl Into<Renderer::Font>) -> Self {
self.font = Some(font.into());
self
}
@ -163,7 +163,7 @@ where
self.width,
self.padding,
self.text_size,
&self.font,
self.font.unwrap_or_else(|| renderer.default_font()),
self.placeholder.as_deref(),
&self.options,
)
@ -212,6 +212,7 @@ where
cursor_position: Point,
_viewport: &Rectangle,
) {
let font = self.font.unwrap_or_else(|| renderer.default_font());
draw(
renderer,
theme,
@ -219,7 +220,7 @@ where
cursor_position,
self.padding,
self.text_size,
&self.font,
font,
self.placeholder.as_deref(),
self.selected.as_ref(),
&self.handle,
@ -232,7 +233,7 @@ where
&'b mut self,
tree: &'b mut Tree,
layout: Layout<'_>,
_renderer: &Renderer,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
let state = tree.state.downcast_mut::<State<T>>();
@ -241,7 +242,7 @@ where
state,
self.padding,
self.text_size,
self.font.clone(),
self.font.unwrap_or_else(|| renderer.default_font()),
&self.options,
self.style.clone(),
)
@ -343,7 +344,7 @@ pub fn layout<Renderer, T>(
width: Length,
padding: Padding,
text_size: Option<f32>,
font: &Renderer::Font,
font: Renderer::Font,
placeholder: Option<&str>,
options: &[T],
) -> layout::Node
@ -362,7 +363,7 @@ where
let (width, _) = renderer.measure(
label,
text_size,
font.clone(),
font,
Size::new(f32::INFINITY, f32::INFINITY),
);
@ -560,7 +561,7 @@ pub fn draw<'a, T, Renderer>(
cursor_position: Point,
padding: Padding,
text_size: Option<f32>,
font: &Renderer::Font,
font: Renderer::Font,
placeholder: Option<&str>,
selected: Option<&T>,
handle: &Handle<Renderer::Font>,
@ -637,7 +638,7 @@ pub fn draw<'a, T, Renderer>(
renderer.fill_text(Text {
content: label,
size: text_size,
font: font.clone(),
font,
color: if is_selected {
style.text_color
} else {