summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-05 05:12:36 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-05 05:12:36 +0200
commit0c3f78713d24b263e94cf6aebb8862926feaff23 (patch)
treefd7536e245228369dfb3300826002459c5a99ff3 /src
parenta90f7fcb987f667a80038a5e72f379abbd59d932 (diff)
downloadiced-0c3f78713d24b263e94cf6aebb8862926feaff23.tar.gz
iced-0c3f78713d24b263e94cf6aebb8862926feaff23.tar.bz2
iced-0c3f78713d24b263e94cf6aebb8862926feaff23.zip
Draft basic text rendering using `wgpu_glyph`
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 5272549f..f9860b37 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,4 +1,4 @@
-pub use iced_wgpu::Renderer;
+pub use iced_wgpu::{Primitive, Renderer};
pub use iced_winit::{
button, slider, text, winit, Align, Button, Checkbox, Color, Image,
Justify, Length, Radio, Slider, Text,
@@ -33,13 +33,15 @@ pub trait UserInterface {
.expect("Open window");
let size = window.inner_size().to_physical(window.hidpi_factor());;
+ let (width, height) = (size.width as u16, size.height as u16);
- let mut renderer =
- Renderer::new(&window, size.width as u32, size.height as u32);
+ let mut renderer = Renderer::new(&window);
+ let mut target = renderer.target(width, height);
let mut cache = Some(iced_winit::Cache::default());
let mut events = Vec::new();
let mut redraws = 0;
+ let mut primitive = Primitive::None;
window.request_redraw();
@@ -51,7 +53,7 @@ pub trait UserInterface {
// This will allow us to rebuild it only when a message is
// handled.
let mut user_interface = iced_winit::UserInterface::build(
- self.view(),
+ document(&mut self, width, height),
cache.take().unwrap(),
&mut renderer,
);
@@ -59,7 +61,7 @@ pub trait UserInterface {
let messages = user_interface.update(events.drain(..));
if messages.is_empty() {
- let _ = user_interface.draw(&mut renderer);
+ primitive = user_interface.draw(&mut renderer);
cache = Some(user_interface.into_cache());
} else {
@@ -72,12 +74,12 @@ pub trait UserInterface {
}
let user_interface = iced_winit::UserInterface::build(
- self.view(),
+ document(&mut self, width, height),
temp_cache,
&mut renderer,
);
- let _ = user_interface.draw(&mut renderer);
+ primitive = user_interface.draw(&mut renderer);
cache = Some(user_interface.into_cache());
}
@@ -89,7 +91,7 @@ pub trait UserInterface {
..
} => {
println!("Redrawing {}", redraws);
- renderer.draw();
+ renderer.draw(&mut target, &primitive);
redraws += 1;
@@ -108,3 +110,19 @@ pub trait UserInterface {
})
}
}
+
+fn document<UserInterface>(
+ user_interface: &mut UserInterface,
+ width: u16,
+ height: u16,
+) -> Element<UserInterface::Message>
+where
+ UserInterface: self::UserInterface,
+ UserInterface::Message: 'static,
+{
+ Column::new()
+ .width(Length::Units(width))
+ .height(Length::Units(height))
+ .push(user_interface.view())
+ .into()
+}