1+ use raw_window_handle:: { HasDisplayHandle , HasWindowHandle } ;
2+ use softbuffer:: Buffer ;
13use std:: num:: NonZeroU32 ;
24use winit:: event:: { ElementState , KeyEvent , WindowEvent } ;
35use winit:: event_loop:: { ControlFlow , EventLoop } ;
@@ -6,7 +8,9 @@ use winit::keyboard::{Key, NamedKey};
68#[ path = "utils/winit_app.rs" ]
79mod winit_app;
810
9- fn redraw ( buffer : & mut [ u32 ] , width : usize , height : usize , flag : bool ) {
11+ fn redraw ( buffer : & mut Buffer < ' _ , impl HasDisplayHandle , impl HasWindowHandle > , flag : bool ) {
12+ let width = buffer. width ( ) . get ( ) ;
13+ let height = buffer. height ( ) . get ( ) ;
1014 for y in 0 ..height {
1115 for x in 0 ..width {
1216 let value = if flag && x >= 100 && x < width - 100 && y >= 100 && y < height - 100 {
@@ -15,9 +19,9 @@ fn redraw(buffer: &mut [u32], width: usize, height: usize, flag: bool) {
1519 let red = ( x & 0xff ) ^ ( y & 0xff ) ;
1620 let green = ( x & 0x7f ) ^ ( y & 0x7f ) ;
1721 let blue = ( x & 0x3f ) ^ ( y & 0x3f ) ;
18- ( blue | ( green << 8 ) | ( red << 16 ) ) as u32
22+ blue | ( green << 8 ) | ( red << 16 )
1923 } ;
20- buffer[ y * width + x] = value;
24+ buffer[ ( y * width + x) as usize ] = value;
2125 }
2226 }
2327}
@@ -66,21 +70,10 @@ fn main() {
6670 eprintln ! ( "RedrawRequested fired before Resumed or after Suspended" ) ;
6771 return ;
6872 } ;
69- // Grab the window's client area dimensions, and ensure they're valid
70- let size = window. inner_size ( ) ;
71- if let ( Some ( width) , Some ( height) ) =
72- ( NonZeroU32 :: new ( size. width ) , NonZeroU32 :: new ( size. height ) )
73- {
74- // Draw something in the window
75- let mut buffer = surface. buffer_mut ( ) . unwrap ( ) ;
76- redraw (
77- & mut buffer,
78- width. get ( ) as usize ,
79- height. get ( ) as usize ,
80- * flag,
81- ) ;
82- buffer. present ( ) . unwrap ( ) ;
83- }
73+ // Draw something in the window
74+ let mut buffer = surface. buffer_mut ( ) . unwrap ( ) ;
75+ redraw ( & mut buffer, * flag) ;
76+ buffer. present ( ) . unwrap ( ) ;
8477 }
8578
8679 WindowEvent :: CloseRequested
0 commit comments