From 23922636605d3a3ededa7006532327bfa36a7ebf Mon Sep 17 00:00:00 2001 From: LongYinan Date: Wed, 29 Jun 2022 20:57:14 +0800 Subject: [PATCH] fix: parameters for drawImage(canvas) --- src/ctx.rs | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/ctx.rs b/src/ctx.rs index adfd4d29..683bd8ca 100644 --- a/src/ctx.rs +++ b/src/ctx.rs @@ -687,7 +687,7 @@ impl Context { pub(crate) fn draw_image( &mut self, - image: &Image, + bitmap: &Bitmap, sx: f32, sy: f32, s_width: f32, @@ -697,7 +697,7 @@ impl Context { d_width: f32, d_height: f32, ) -> Result<()> { - let bitmap = image.bitmap.as_ref().unwrap().0.bitmap; + let bitmap = bitmap.0.bitmap; let paint = self.fill_paint()?; if let Some(drop_shadow_paint) = self.drop_shadow_paint(&paint) { let surface = &mut self.surface; @@ -1099,14 +1099,15 @@ fn draw_image(ctx: CallContext) -> Result { return ctx.env.get_undefined(); } - let image_w = image.bitmap.as_ref().unwrap().0.width as f32; - let image_h = image.bitmap.as_ref().unwrap().0.height as f32; + let bitmap = image.bitmap.as_ref().unwrap(); + let image_w = bitmap.0.width as f32; + let image_h = bitmap.0.height as f32; if ctx.length == 3 { let dx: f64 = ctx.get::(1)?.get_double()?; let dy: f64 = ctx.get::(2)?.get_double()?; context_2d.draw_image( - image, 0f32, 0f32, image_w, image_h, dx as f32, dy as f32, image_w, image_h, + bitmap, 0f32, 0f32, image_w, image_h, dx as f32, dy as f32, image_w, image_h, )?; } else if ctx.length == 5 { let dx: f64 = ctx.get::(1)?.get_double()?; @@ -1114,7 +1115,7 @@ fn draw_image(ctx: CallContext) -> Result { let d_width: f64 = ctx.get::(3)?.get_double()?; let d_height: f64 = ctx.get::(4)?.get_double()?; context_2d.draw_image( - image, + bitmap, 0f32, 0f32, image_w, @@ -1134,7 +1135,7 @@ fn draw_image(ctx: CallContext) -> Result { let d_width: f64 = ctx.get::(7)?.get_double()?; let d_height: f64 = ctx.get::(8)?.get_double()?; context_2d.draw_image( - image, + bitmap, sx as f32, sy as f32, s_width as f32, @@ -1158,11 +1159,11 @@ fn draw_image(ctx: CallContext) -> Result { let dy = ctx.get::(2)?.get_double()? as f32; (0.0f32, 0.0f32, width, height, dx, dy, width, height) } else if ctx.length == 5 { - let sx = ctx.get::(1)?.get_double()? as f32; - let sy = ctx.get::(2)?.get_double()? as f32; - let sw = ctx.get::(3)?.get_double()? as f32; - let sh = ctx.get::(4)?.get_double()? as f32; - (sx, sy, sw, sh, 0.0f32, 0.0f32, sw, sh) + let dx = ctx.get::(1)?.get_double()? as f32; + let dy = ctx.get::(2)?.get_double()? as f32; + let d_width = ctx.get::(3)?.get_double()? as f32; + let d_height = ctx.get::(4)?.get_double()? as f32; + (0.0, 0.0, width, height, dx, dy, d_width, d_height) } else if ctx.length == 9 { ( ctx.get::(1)?.get_double()? as f32, @@ -1181,8 +1182,8 @@ fn draw_image(ctx: CallContext) -> Result { )); }; - context_2d.surface.canvas.draw_surface_rect( - &another_ctx.surface, + context_2d.draw_image( + &another_ctx.surface.get_bitmap(), sx, sy, sw, @@ -1191,8 +1192,7 @@ fn draw_image(ctx: CallContext) -> Result { dy, dw, dh, - FilterQuality::High, - ); + )?; } };