diff --git a/ggdt/tests/graphics_indexed.rs b/ggdt/tests/graphics_indexed.rs index 719d5cf..b8df313 100644 --- a/ggdt/tests/graphics_indexed.rs +++ b/ggdt/tests/graphics_indexed.rs @@ -2271,6 +2271,77 @@ fn get_quad<'a>( } #[rustfmt::skip] +fn draw_triangles(dest: &mut IndexedBitmap, mode: TriangleType, texture: Option<&IndexedBitmap>, blendmap: Option<&BlendMap>) { + let size = 32.0; + let half_size = size / 2.0; + + let top_left = Vector2::new(0.0, 0.0); + let top_right = Vector2::new(size, 0.0); + let bottom_left = Vector2::new(0.0, size); + let bottom_right = Vector2::new(size, size); + + let scale_factor = 1.0; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size > 4 && scaled_size % 4 == 0); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(20.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 1x1 + let scale_factor = 0.04; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size < 4 && scaled_size % 4 == 1); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(70.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 3x3 + let scale_factor = 0.1; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size < 4 && scaled_size % 4 == 3); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(90.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 41x41 + let scale_factor = 1.29; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size > 4 && scaled_size % 4 == 1); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(120.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 67x67 + let scale_factor = 2.1; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size > 4 && scaled_size % 4 == 3); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(220.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // todo: my matrix math is wrong here somehow (was trying to do rotations around the center of each quad), but i + // don't care enough to fix this properly. the output of this crap is "good enough" + let mut angle = 0.0; + for y in 0..2 { + for x in 0..4 { + let x_draw = 0.0 + (x as f32 * size * 2.5); + let y_draw = 80.0 + (y as f32 * size * 2.5); + + let scale_factor = 1.5; + + let rotate = Matrix3x3::new_2d_rotation((angle as f32).to_radians()); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let translation = Matrix3x3::new_2d_translation(x_draw, y_draw); + let offset = Matrix3x3::new_2d_translation(half_size, half_size); + + let triangles = get_quad(mode, texture, blendmap, offset * rotate * scale * translation, top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + angle += 15.0 / 2.0; + } + } +} + #[test] fn triangle_2d_solid_textured() { let (mut screen, palette) = setup(); @@ -2278,24 +2349,7 @@ fn triangle_2d_solid_textured() { let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTextured; - - let triangles = get_quad(mode, Some(&texture), None, Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), None, scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), None, scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTextured, Some(&texture), None); let path = reference_file(Path::new("triangle_2d_solid_textured.png")); if cfg!(recreate_ref_test_images) { @@ -2304,29 +2358,11 @@ fn triangle_2d_solid_textured() { assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_blended() { let (mut screen, palette, blend_map) = setup_for_blending(); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidBlended; - - let triangles = get_quad(mode, None, Some(&blend_map), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, None, Some(&blend_map), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, None, Some(&blend_map), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidBlended, None, Some(&blend_map)); let path = reference_file(Path::new("triangle_2d_solid_blended.png")); if cfg!(recreate_ref_test_images) { @@ -2335,31 +2371,13 @@ fn triangle_2d_solid_blended() { assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured_blended() { let (mut screen, palette, blend_map) = setup_for_blending(); let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTexturedBlended; - - let triangles = get_quad(mode, Some(&texture), Some(&blend_map), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), Some(&blend_map), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), Some(&blend_map), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTexturedBlended, Some(&texture), Some(&blend_map)); let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png")); if cfg!(recreate_ref_test_images) { diff --git a/ggdt/tests/graphics_rgba.rs b/ggdt/tests/graphics_rgba.rs index 8b39833..edb0094 100644 --- a/ggdt/tests/graphics_rgba.rs +++ b/ggdt/tests/graphics_rgba.rs @@ -2600,28 +2600,82 @@ fn get_quad( } #[rustfmt::skip] +fn draw_triangles(dest: &mut RgbaBitmap, mode: TriangleType, texture: Option<&RgbaBitmap>) { + let size = 32.0; + let half_size = size / 2.0; + + let top_left = Vector2::new(0.0, 0.0); + let top_right = Vector2::new(size, 0.0); + let bottom_left = Vector2::new(0.0, size); + let bottom_right = Vector2::new(size, size); + + let scale_factor = 1.0; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size > 4 && scaled_size % 4 == 0); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(20.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 1x1 + let scale_factor = 0.04; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size < 4 && scaled_size % 4 == 1); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(70.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 3x3 + let scale_factor = 0.1; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size < 4 && scaled_size % 4 == 3); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(90.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 41x41 + let scale_factor = 1.29; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size > 4 && scaled_size % 4 == 1); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(120.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // 67x67 + let scale_factor = 2.1; + let scaled_size = (size * scale_factor) as i32; + assert!(scaled_size > 4 && scaled_size % 4 == 3); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(220.0, 20.0), top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + // todo: my matrix math is wrong here somehow (was trying to do rotations around the center of each quad), but i + // don't care enough to fix this properly. the output of this crap is "good enough" + let mut angle = 0.0; + for y in 0..2 { + for x in 0..4 { + let x_draw = 0.0 + (x as f32 * size * 2.5); + let y_draw = 80.0 + (y as f32 * size * 2.5); + + let scale_factor = 1.5; + + let rotate = Matrix3x3::new_2d_rotation((angle as f32).to_radians()); + let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor); + let translation = Matrix3x3::new_2d_translation(x_draw, y_draw); + let offset = Matrix3x3::new_2d_translation(half_size, half_size); + + let triangles = get_quad(mode, texture, offset * rotate * scale * translation, top_left, top_right, bottom_left, bottom_right); + dest.triangle_list_2d(&triangles); + + angle += 15.0 / 2.0; + } + } +} + #[test] fn triangle_2d_solid_blended() { let mut screen = setup_for_blending(); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidBlended; - - let triangles = get_quad(mode, None, Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, None, scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, None, scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidBlended, None); let path = reference_file(Path::new("triangle_2d_solid_blended.png")); if cfg!(recreate_ref_test_images) { @@ -2630,29 +2684,11 @@ fn triangle_2d_solid_blended() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_multicolor_blended() { let mut screen = setup_for_blending(); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidMultiColorBlended; - - let triangles = get_quad(mode, None, Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, None, scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, None, scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidMultiColorBlended, None); let path = reference_file(Path::new("triangle_2d_solid_multicolor_blended.png")); if cfg!(recreate_ref_test_images) { @@ -2661,7 +2697,6 @@ fn triangle_2d_solid_multicolor_blended() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured() { let mut screen = setup(); @@ -2669,24 +2704,7 @@ fn triangle_2d_solid_textured() { let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTextured; - - let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTextured, Some(&texture)); let path = reference_file(Path::new("triangle_2d_solid_textured.png")); if cfg!(recreate_ref_test_images) { @@ -2695,7 +2713,6 @@ fn triangle_2d_solid_textured() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured_colored() { let mut screen = setup(); @@ -2703,24 +2720,7 @@ fn triangle_2d_solid_textured_colored() { let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTexturedColored; - - let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTexturedColored, Some(&texture)); let path = reference_file(Path::new("triangle_2d_solid_textured_colored.png")); if cfg!(recreate_ref_test_images) { @@ -2729,31 +2729,13 @@ fn triangle_2d_solid_textured_colored() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured_colored_blended() { let mut screen = setup_for_blending(); let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTexturedColoredBlended; - - let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTexturedColoredBlended, Some(&texture)); let path = reference_file(Path::new("triangle_2d_solid_textured_colored_blended.png")); if cfg!(recreate_ref_test_images) { @@ -2762,7 +2744,6 @@ fn triangle_2d_solid_textured_colored_blended() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured_multicolored() { let mut screen = setup(); @@ -2770,24 +2751,7 @@ fn triangle_2d_solid_textured_multicolored() { let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTexturedMultiColored; - - let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTexturedMultiColored, Some(&texture)); let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored.png")); if cfg!(recreate_ref_test_images) { @@ -2796,31 +2760,13 @@ fn triangle_2d_solid_textured_multicolored() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured_multicolored_blended() { let mut screen = setup_for_blending(); let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTexturedMultiColoredBlended; - - let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTexturedMultiColoredBlended, Some(&texture)); let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored_blended.png")); if cfg!(recreate_ref_test_images) { @@ -2829,7 +2775,6 @@ fn triangle_2d_solid_textured_multicolored_blended() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured_tinted() { let mut screen = setup(); @@ -2837,24 +2782,7 @@ fn triangle_2d_solid_textured_tinted() { let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTexturedTinted; - - let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTexturedTinted, Some(&texture)); let path = reference_file(Path::new("triangle_2d_solid_textured_tinted.png")); if cfg!(recreate_ref_test_images) { @@ -2863,31 +2791,13 @@ fn triangle_2d_solid_textured_tinted() { assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path); } -#[rustfmt::skip] #[test] fn triangle_2d_solid_textured_blended() { let mut screen = setup_for_blending(); let texture = generate_bitmap(32, 32); - let top_left = Vector2::new(0.0, 0.0); - let top_right = Vector2::new(32.0, 0.0); - let bottom_left = Vector2::new(0.0, 32.0); - let bottom_right = Vector2::new(32.0, 32.0); - - let rotate = Matrix3x3::new_2d_rotation(RADIANS_45); - let scale = Matrix3x3::new_2d_scaling(2.0, 2.0); - - let mode = TriangleType::SolidTexturedBlended; - - let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); - - let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right); - screen.triangle_list_2d(&triangles); + draw_triangles(&mut screen, TriangleType::SolidTexturedBlended, Some(&texture)); let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png")); if cfg!(recreate_ref_test_images) { diff --git a/ggdt/tests/ref/indexed/triangle_2d_solid_blended.png b/ggdt/tests/ref/indexed/triangle_2d_solid_blended.png index f1913aa..ce00397 100644 Binary files a/ggdt/tests/ref/indexed/triangle_2d_solid_blended.png and b/ggdt/tests/ref/indexed/triangle_2d_solid_blended.png differ diff --git a/ggdt/tests/ref/indexed/triangle_2d_solid_textured.png b/ggdt/tests/ref/indexed/triangle_2d_solid_textured.png index f90a63e..85b8784 100644 Binary files a/ggdt/tests/ref/indexed/triangle_2d_solid_textured.png and b/ggdt/tests/ref/indexed/triangle_2d_solid_textured.png differ diff --git a/ggdt/tests/ref/indexed/triangle_2d_solid_textured_blended.png b/ggdt/tests/ref/indexed/triangle_2d_solid_textured_blended.png index 5b42e38..a7ff7bf 100644 Binary files a/ggdt/tests/ref/indexed/triangle_2d_solid_textured_blended.png and b/ggdt/tests/ref/indexed/triangle_2d_solid_textured_blended.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_blended.png b/ggdt/tests/ref/rgba/triangle_2d_solid_blended.png index ec1e965..5c5edbd 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_blended.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_blended.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_multicolor_blended.png b/ggdt/tests/ref/rgba/triangle_2d_solid_multicolor_blended.png index 127d855..4dd563e 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_multicolor_blended.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_multicolor_blended.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_textured.png b/ggdt/tests/ref/rgba/triangle_2d_solid_textured.png index 50354f2..56ea90c 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_textured.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_textured.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_blended.png b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_blended.png index a24b8f0..ae4535a 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_blended.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_blended.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored.png b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored.png index b7c67f3..ff5182f 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored_blended.png b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored_blended.png index 6c7ae41..48357b0 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored_blended.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_colored_blended.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored.png b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored.png index 9e5567e..b039e55 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored_blended.png b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored_blended.png index 24a8d8a..84633ee 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored_blended.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_multicolored_blended.png differ diff --git a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_tinted.png b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_tinted.png index b64e4c5..7caea1a 100644 Binary files a/ggdt/tests/ref/rgba/triangle_2d_solid_textured_tinted.png and b/ggdt/tests/ref/rgba/triangle_2d_solid_textured_tinted.png differ