Skip to content

Commit f168182

Browse files
committed
Update examples
1 parent a2c37fd commit f168182

File tree

6 files changed

+53
-75
lines changed

6 files changed

+53
-75
lines changed

README.md

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -101,26 +101,23 @@ fn main() {
101101
eprintln!("RedrawRequested fired before Resumed or after Suspended");
102102
return;
103103
};
104-
let (width, height) = {
105-
let size = window.inner_size();
106-
(size.width, size.height)
107-
};
104+
let size = window.inner_size();
108105
surface
109106
.resize(
110-
NonZeroU32::new(width).unwrap(),
111-
NonZeroU32::new(height).unwrap(),
107+
NonZeroU32::new(size.width).unwrap(),
108+
NonZeroU32::new(size.height).unwrap(),
112109
)
113110
.unwrap();
114111
115112
let mut buffer = surface.buffer_mut().unwrap();
116-
for index in 0..(width * height) {
117-
let y = index / width;
118-
let x = index % width;
119-
let red = x % 255;
120-
let green = y % 255;
121-
let blue = (x * y) % 255;
122-
123-
buffer[index as usize] = blue | (green << 8) | (red << 16);
113+
for index in 0..(buffer.width() * buffer.height()) {
114+
let y = index / buffer.width();
115+
let x = index % buffer.width();
116+
let red = x as u32 % 255;
117+
let green = y as u32 % 255;
118+
let blue = (x as u32 * y as u32) % 255;
119+
120+
buffer[index] = blue | (green << 8) | (red << 16);
124121
}
125122
126123
buffer.present().unwrap();

examples/animation.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,23 +59,20 @@ fn main() {
5959
return;
6060
};
6161

62-
let size = window.inner_size();
63-
if let (Some(width), Some(height)) =
64-
(NonZeroU32::new(size.width), NonZeroU32::new(size.height))
65-
{
66-
let elapsed = start.elapsed().as_secs_f64() % 1.0;
62+
let elapsed = start.elapsed().as_secs_f64() % 1.0;
6763

68-
if (width.get(), height.get()) != *old_size {
69-
*old_size = (width.get(), height.get());
70-
*frames = pre_render_frames(width.get() as usize, height.get() as usize);
71-
};
64+
let mut buffer = surface.buffer_mut().unwrap();
7265

73-
let frame = &frames[((elapsed * 60.0).round() as usize).clamp(0, 59)];
74-
75-
let mut buffer = surface.buffer_mut().unwrap();
76-
buffer.copy_from_slice(frame);
77-
buffer.present().unwrap();
66+
let size = (buffer.width(), buffer.height());
67+
if size != *old_size {
68+
*old_size = size;
69+
*frames = pre_render_frames(size.0, size.1);
7870
}
71+
72+
let frame = &frames[((elapsed * 60.0).round() as usize).clamp(0, 59)];
73+
74+
buffer.copy_from_slice(frame);
75+
buffer.present().unwrap();
7976
}
8077
Event::AboutToWait => {
8178
window.request_redraw();

examples/rectangle.rs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use raw_window_handle::{HasDisplayHandle, HasWindowHandle};
2+
use softbuffer::Buffer;
13
use std::num::NonZeroU32;
24
use winit::event::{ElementState, Event, KeyEvent, WindowEvent};
35
use winit::event_loop::{ControlFlow, EventLoop};
@@ -6,7 +8,9 @@ use winit::keyboard::{Key, NamedKey};
68
#[path = "utils/winit_app.rs"]
79
mod 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();
13+
let height = buffer.height();
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 {
@@ -71,21 +75,10 @@ fn main() {
7175
eprintln!("RedrawRequested fired before Resumed or after Suspended");
7276
return;
7377
};
74-
// Grab the window's client area dimensions, and ensure they're valid
75-
let size = window.inner_size();
76-
if let (Some(width), Some(height)) =
77-
(NonZeroU32::new(size.width), NonZeroU32::new(size.height))
78-
{
79-
// Draw something in the window
80-
let mut buffer = surface.buffer_mut().unwrap();
81-
redraw(
82-
&mut buffer,
83-
width.get() as usize,
84-
height.get() as usize,
85-
*flag,
86-
);
87-
buffer.present().unwrap();
88-
}
78+
// Draw something in the window
79+
let mut buffer = surface.buffer_mut().unwrap();
80+
redraw(&mut buffer, *flag);
81+
buffer.present().unwrap();
8982
}
9083

9184
Event::WindowEvent {

examples/winit.rs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,19 @@ pub(crate) fn entry(event_loop: EventLoop<()>) {
4949
eprintln!("RedrawRequested fired before Resumed or after Suspended");
5050
return;
5151
};
52-
let size = window.inner_size();
53-
if let (Some(width), Some(height)) =
54-
(NonZeroU32::new(size.width), NonZeroU32::new(size.height))
55-
{
56-
let mut buffer = surface.buffer_mut().unwrap();
57-
for y in 0..height.get() {
58-
for x in 0..width.get() {
59-
let red = x % 255;
60-
let green = y % 255;
61-
let blue = (x * y) % 255;
62-
let index = y as usize * width.get() as usize + x as usize;
63-
buffer[index] = blue | (green << 8) | (red << 16);
64-
}
65-
}
6652

67-
buffer.present().unwrap();
53+
let mut buffer = surface.buffer_mut().unwrap();
54+
for y in 0..buffer.height() {
55+
for x in 0..buffer.width() {
56+
let red = x as u32 % 255;
57+
let green = y as u32 % 255;
58+
let blue = (x as u32 * y as u32) % 255;
59+
let index = y * buffer.width() + x;
60+
buffer[index] = blue | (green << 8) | (red << 16);
61+
}
6862
}
63+
64+
buffer.present().unwrap();
6965
}
7066
Event::WindowEvent {
7167
event:

examples/winit_multithread.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ pub mod ex {
4040
surface.resize(width, height).unwrap();
4141

4242
let mut buffer = surface.buffer_mut().unwrap();
43-
for y in 0..height.get() {
44-
for x in 0..width.get() {
45-
let red = x % 255;
46-
let green = y % 255;
47-
let blue = (x * y) % 255;
48-
let index = y as usize * width.get() as usize + x as usize;
43+
for y in 0..buffer.height() {
44+
for x in 0..buffer.width() {
45+
let red = x as u32 % 255;
46+
let green = y as u32 % 255;
47+
let blue = (x as u32 * y as u32) % 255;
48+
let index = y * buffer.width() + x;
4949
buffer[index] = blue | (green << 8) | (red << 16);
5050
}
5151
}

examples/winit_wrong_sized_buffer.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ use winit::keyboard::{Key, NamedKey};
66
#[path = "utils/winit_app.rs"]
77
mod winit_app;
88

9-
const BUFFER_WIDTH: usize = 256;
10-
const BUFFER_HEIGHT: usize = 128;
11-
129
fn main() {
1310
let event_loop = EventLoop::new().unwrap();
1411

@@ -24,10 +21,7 @@ fn main() {
2421
let mut surface = softbuffer::Surface::new(context, window.clone()).unwrap();
2522
// Intentionally set the size of the surface to something different than the size of the window.
2623
surface
27-
.resize(
28-
NonZeroU32::new(BUFFER_WIDTH as u32).unwrap(),
29-
NonZeroU32::new(BUFFER_HEIGHT as u32).unwrap(),
30-
)
24+
.resize(NonZeroU32::new(256).unwrap(), NonZeroU32::new(128).unwrap())
3125
.unwrap();
3226
surface
3327
},
@@ -47,14 +41,15 @@ fn main() {
4741
};
4842

4943
let mut buffer = surface.buffer_mut().unwrap();
50-
for y in 0..BUFFER_HEIGHT {
51-
for x in 0..BUFFER_WIDTH {
44+
let width = buffer.width();
45+
for y in 0..buffer.height() {
46+
for x in 0..width {
5247
let red = x as u32 % 255;
5348
let green = y as u32 % 255;
5449
let blue = (x as u32 * y as u32) % 255;
5550

5651
let color = blue | (green << 8) | (red << 16);
57-
buffer[y * BUFFER_WIDTH + x] = color;
52+
buffer[y * width + x] = color;
5853
}
5954
}
6055
buffer.present().unwrap();

0 commit comments

Comments
 (0)