diff options
Diffstat (limited to '')
| -rw-r--r-- | tiny_skia/src/backend.rs | 8 | ||||
| -rw-r--r-- | tiny_skia/src/window/compositor.rs | 30 | 
2 files changed, 15 insertions, 23 deletions
| diff --git a/tiny_skia/src/backend.rs b/tiny_skia/src/backend.rs index 54752a21..9eea1a32 100644 --- a/tiny_skia/src/backend.rs +++ b/tiny_skia/src/backend.rs @@ -21,7 +21,7 @@ impl Backend {      pub fn draw<T: AsRef<str>>(          &mut self, -        pixels: &mut tiny_skia::Pixmap, +        pixels: &mut tiny_skia::PixmapMut<'_>,          primitives: &[Primitive],          viewport: &Viewport,          background_color: Color, @@ -39,7 +39,7 @@ impl Backend {  fn draw_primitive(      primitive: &Primitive, -    pixels: &mut tiny_skia::Pixmap, +    pixels: &mut tiny_skia::PixmapMut<'_>,      clip_mask: Option<&tiny_skia::ClipMask>,      scale_factor: f32,      translation: Vector, @@ -153,12 +153,12 @@ fn draw_primitive(  }  fn into_color(color: Color) -> tiny_skia::Color { -    tiny_skia::Color::from_rgba(color.r, color.g, color.b, color.a) +    tiny_skia::Color::from_rgba(color.b, color.g, color.r, color.a)          .expect("Convert color from iced to tiny_skia")  }  fn rectangular_clip_mask( -    pixels: &tiny_skia::Pixmap, +    pixels: &tiny_skia::PixmapMut<'_>,      bounds: Rectangle,  ) -> tiny_skia::ClipMask {      let mut clip_mask = tiny_skia::ClipMask::new(); diff --git a/tiny_skia/src/window/compositor.rs b/tiny_skia/src/window/compositor.rs index 8bb52a03..2bd5831e 100644 --- a/tiny_skia/src/window/compositor.rs +++ b/tiny_skia/src/window/compositor.rs @@ -12,7 +12,6 @@ pub struct Compositor<Theme> {  pub struct Surface {      window: softbuffer::GraphicsContext, -    pixels: tiny_skia::Pixmap,      buffer: Vec<u32>,  } @@ -40,13 +39,9 @@ impl<Theme> iced_graphics::window::Compositor for Compositor<Theme> {              unsafe { softbuffer::GraphicsContext::new(window, window) }                  .expect("Create softbuffer for window"); -        let pixels = tiny_skia::Pixmap::new(width, height) -            .expect("Create pixmap for window"); -          Surface {              window, -            pixels, -            buffer: vec![0; (width * height) as usize], +            buffer: vec![0; width as usize * height as usize],          }      } @@ -56,9 +51,6 @@ impl<Theme> iced_graphics::window::Compositor for Compositor<Theme> {          width: u32,          height: u32,      ) { -        surface.pixels = tiny_skia::Pixmap::new(width, height) -            .expect("Create pixmap for window"); -          surface.buffer.resize((width * height) as usize, 0);      } @@ -110,26 +102,26 @@ pub fn present<Theme, T: AsRef<str>>(      background_color: Color,      overlay: &[T],  ) -> Result<(), compositor::SurfaceError> { +    let physical_size = viewport.physical_size(); +      backend.draw( -        &mut surface.pixels, +        &mut tiny_skia::PixmapMut::from_bytes( +            bytemuck::cast_slice_mut(&mut surface.buffer), +            physical_size.width, +            physical_size.height, +        ) +        .expect("Create pixel map"),          primitives,          viewport,          background_color,          overlay,      ); -    for (i, pixel) in surface.pixels.pixels_mut().iter().enumerate() { -        surface.buffer[i] = u32::from(pixel.red()) << 16 -            | u32::from(pixel.green()) << 8 -            | u32::from(pixel.blue()); -    } -      surface.window.set_buffer(          &surface.buffer, -        surface.pixels.width() as u16, -        surface.pixels.height() as u16, +        physical_size.width as u16, +        physical_size.height as u16,      ); -    // TODO      Ok(())  } | 
