Implement text clipping (caching still broken)

This commit is contained in:
Héctor Ramón Jiménez 2019-10-28 04:28:21 +01:00
parent 35e94f5a32
commit 2b23e0986c
5 changed files with 18 additions and 29 deletions

View file

@ -4,6 +4,8 @@ use iced::{
}; };
pub fn main() { pub fn main() {
env_logger::init();
Example::default().run() Example::default().run()
} }
@ -32,25 +34,17 @@ impl Application for Example {
} }
fn view(&mut self) -> Element<Message> { fn view(&mut self) -> Element<Message> {
//let content = (0..3).fold(
// Scrollable::new(&mut self.scroll).spacing(20).padding(20),
// |content, _| {
// content.push(
// )
// },
//);
let content = (0..self.item_count) let content = (0..self.item_count)
.fold( .fold(
Scrollable::new(&mut self.scroll) Scrollable::new(&mut self.scroll)
.spacing(20) .spacing(20)
.padding(20) .padding(20)
.align_items(Align::Center), .align_items(Align::Center),
|column, i| { |scrollable, i| {
if i % 2 == 0 { if i % 2 == 0 {
column.push(lorem_ipsum().width(Length::Units(600))) scrollable.push(lorem_ipsum().width(Length::Units(600)))
} else { } else {
column.push( scrollable.push(
Image::new(format!( Image::new(format!(
"{}/examples/resources/ferris.png", "{}/examples/resources/ferris.png",
env!("CARGO_MANIFEST_DIR") env!("CARGO_MANIFEST_DIR")

View file

@ -11,4 +11,4 @@ repository = "https://github.com/hecrj/iced"
iced_core = { version = "0.1.0-alpha", path = "../core" } iced_core = { version = "0.1.0-alpha", path = "../core" }
stretch = "0.2" stretch = "0.2"
twox-hash = "1.5" twox-hash = "1.5"
raw-window-handle = "0.1" raw-window-handle = "0.3"

View file

@ -9,9 +9,9 @@ repository = "https://github.com/hecrj/iced"
[dependencies] [dependencies]
iced_native = { version = "0.1.0-alpha", path = "../native" } iced_native = { version = "0.1.0-alpha", path = "../native" }
wgpu = { version = "0.3", git = "https://github.com/gfx-rs/wgpu-rs", rev = "cb25914b95b58fee0dc139b400867e7a731d98f4" } wgpu = { version = "0.3", git = "https://github.com/gfx-rs/wgpu-rs", rev = "ed2c67f762970d0099c1e6c6e078fb645afbf964" }
wgpu_glyph = { version = "0.4", git = "https://github.com/hecrj/wgpu_glyph", rev = "48daa98f5f785963838b4345e86ac40eac095ba9" } wgpu_glyph = { version = "0.4", git = "https://github.com/hecrj/wgpu_glyph", rev = "954ac865ca1b7f6b97bf403f8c6174a7120e667c" }
raw-window-handle = "0.1" raw-window-handle = "0.3"
image = "0.22" image = "0.22"
nalgebra = "0.18" nalgebra = "0.18"
log = "0.4" log = "0.4"

View file

@ -75,7 +75,7 @@ impl Renderer {
extensions: Extensions { extensions: Extensions {
anisotropic_filtering: false, anisotropic_filtering: false,
}, },
limits: Limits { max_bind_groups: 1 }, limits: Limits { max_bind_groups: 2 },
}); });
let surface = Surface::create(window); let surface = Surface::create(window);
@ -162,17 +162,6 @@ impl Renderer {
self.draw_primitive(primitive, &mut layer); self.draw_primitive(primitive, &mut layer);
self.flush(target.transformation, &layer, &mut encoder, &frame.view); self.flush(target.transformation, &layer, &mut encoder, &frame.view);
self.glyph_brush
.borrow_mut()
.draw_queued(
&mut self.device,
&mut encoder,
&frame.view,
u32::from(target.width),
u32::from(target.height),
)
.expect("Draw text");
self.queue.submit(&[encoder.finish()]); self.queue.submit(&[encoder.finish()]);
*mouse_cursor *mouse_cursor
@ -331,11 +320,17 @@ impl Renderer {
} }
glyph_brush glyph_brush
.draw_queued_with_transform( .draw_queued_with_transform_and_scissoring(
&mut self.device, &mut self.device,
encoder, encoder,
target, target,
translated.into(), translated.into(),
wgpu_glyph::Region {
x: layer.bounds.x,
y: layer.bounds.y,
width: layer.bounds.width,
height: layer.bounds.height,
},
) )
.expect("Draw text"); .expect("Draw text");
} }

View file

@ -9,5 +9,5 @@ repository = "https://github.com/hecrj/iced"
[dependencies] [dependencies]
iced_native = { version = "0.1.0-alpha", path = "../native" } iced_native = { version = "0.1.0-alpha", path = "../native" }
winit = { version = "0.20.0-alpha3", git = "https://github.com/hecrj/winit", branch = "redraw-requested-2.0" } winit = { version = "0.20.0-alpha3", git = "https://github.com/rust-windowing/winit", rev = "709808eb4e69044705fcb214bcc30556db761405"}
log = "0.4" log = "0.4"