From 713ed3aca1d5fb23dc9c2a75b1f61fd8bd439e01 Mon Sep 17 00:00:00 2001 From: sumibi-yakitori Date: Mon, 27 Jan 2020 04:28:40 +0900 Subject: Custom fonts can be set in the text input. --- wgpu/src/renderer/widget/text_input.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'wgpu') diff --git a/wgpu/src/renderer/widget/text_input.rs b/wgpu/src/renderer/widget/text_input.rs index 8b774a48..e2a1b3a9 100644 --- a/wgpu/src/renderer/widget/text_input.rs +++ b/wgpu/src/renderer/widget/text_input.rs @@ -14,11 +14,11 @@ impl text_input::Renderer for Renderer { 20 } - fn measure_value(&self, value: &str, size: u16) -> f32 { + fn measure_value(&self, value: &str, size: u16, font: Font) -> f32 { let (mut width, _) = self.text_pipeline.measure( value, f32::from(size), - Font::Default, + font, Size::INFINITY, ); @@ -38,6 +38,7 @@ impl text_input::Renderer for Renderer { size: u16, value: &text_input::Value, state: &text_input::State, + font: Font, ) -> f32 { if state.is_focused() { let (_, offset) = measure_cursor_and_scroll_offset( @@ -46,6 +47,7 @@ impl text_input::Renderer for Renderer { value, size, state.cursor_position(value), + font, ); offset @@ -60,6 +62,7 @@ impl text_input::Renderer for Renderer { text_bounds: Rectangle, cursor_position: Point, size: u16, + font: Font, placeholder: &str, value: &text_input::Value, state: &text_input::State, @@ -97,7 +100,7 @@ impl text_input::Renderer for Renderer { style_sheet.value_color() } .into(), - font: Font::Default, + font, bounds: Rectangle { width: f32::INFINITY, ..text_bounds @@ -114,6 +117,7 @@ impl text_input::Renderer for Renderer { value, size, state.cursor_position(value), + font, ); let cursor = Primitive::Quad { @@ -164,12 +168,14 @@ fn measure_cursor_and_scroll_offset( value: &text_input::Value, size: u16, cursor_index: usize, + font: Font, ) -> (f32, f32) { use iced_native::text_input::Renderer; let text_before_cursor = value.until(cursor_index).to_string(); - let text_value_width = renderer.measure_value(&text_before_cursor, size); + let text_value_width = + renderer.measure_value(&text_before_cursor, size, font); let offset = ((text_value_width + 5.0) - text_bounds.width).max(0.0); (text_value_width, offset) -- cgit