From 04f57cf8da35d73fd3899ead86eb15c67b1697b2 Mon Sep 17 00:00:00 2001 From: gered Date: Tue, 21 Mar 2023 15:25:25 -0400 Subject: [PATCH] convert graphics visual tests reference images to png this just makes it a lot easier to open up in whatever graphics tool is available during development --- ggdt/tests/graphics_indexed.rs | 144 +++++++++--------- .../indexed/blended_filled_rect_drawing.pcx | Bin 28233 -> 0 bytes .../indexed/blended_filled_rect_drawing.png | Bin 0 -> 2582 bytes .../indexed/blended_horiz_line_drawing.pcx | Bin 28736 -> 0 bytes .../indexed/blended_horiz_line_drawing.png | Bin 0 -> 1624 bytes .../ref/indexed/blended_line_drawing.pcx | Bin 29680 -> 0 bytes .../ref/indexed/blended_line_drawing.png | Bin 0 -> 2813 bytes .../ref/indexed/blended_pixel_drawing.pcx | Bin 28817 -> 0 bytes .../ref/indexed/blended_pixel_drawing.png | Bin 0 -> 1793 bytes .../ref/indexed/blended_rect_drawing.pcx | Bin 29773 -> 0 bytes .../ref/indexed/blended_rect_drawing.png | Bin 0 -> 2386 bytes .../ref/indexed/blended_rotozoom_blits.pcx | Bin 30848 -> 0 bytes .../ref/indexed/blended_rotozoom_blits.png | Bin 0 -> 4951 bytes .../blended_rotozoom_transparent_blits.pcx | Bin 30781 -> 0 bytes .../blended_rotozoom_transparent_blits.png | Bin 0 -> 4842 bytes .../tests/ref/indexed/blended_solid_blits.pcx | Bin 30294 -> 0 bytes .../tests/ref/indexed/blended_solid_blits.png | Bin 0 -> 4051 bytes .../indexed/blended_solid_flipped_blits.pcx | Bin 30470 -> 0 bytes .../indexed/blended_solid_flipped_blits.png | Bin 0 -> 3924 bytes .../ref/indexed/blended_transparent_blits.pcx | Bin 30241 -> 0 bytes .../ref/indexed/blended_transparent_blits.png | Bin 0 -> 3976 bytes .../blended_transparent_flipped_blits.pcx | Bin 30400 -> 0 bytes .../blended_transparent_flipped_blits.png | Bin 0 -> 3854 bytes .../ref/indexed/blended_vert_line_drawing.pcx | Bin 29738 -> 0 bytes .../ref/indexed/blended_vert_line_drawing.png | Bin 0 -> 1919 bytes ggdt/tests/ref/indexed/circle_drawing.pcx | Bin 4828 -> 0 bytes ggdt/tests/ref/indexed/circle_drawing.png | Bin 0 -> 1793 bytes .../ref/indexed/filled_circle_drawing.pcx | Bin 4215 -> 0 bytes .../ref/indexed/filled_circle_drawing.png | Bin 0 -> 1826 bytes .../tests/ref/indexed/filled_rect_drawing.pcx | Bin 4549 -> 0 bytes .../tests/ref/indexed/filled_rect_drawing.png | Bin 0 -> 1681 bytes ggdt/tests/ref/indexed/horiz_line_drawing.pcx | Bin 3781 -> 0 bytes ggdt/tests/ref/indexed/horiz_line_drawing.png | Bin 0 -> 952 bytes ggdt/tests/ref/indexed/line_drawing.pcx | Bin 4686 -> 0 bytes ggdt/tests/ref/indexed/line_drawing.png | Bin 0 -> 1649 bytes ggdt/tests/ref/indexed/pixel_addressing.pcx | Bin 4131 -> 0 bytes ggdt/tests/ref/indexed/pixel_addressing.png | Bin 0 -> 1328 bytes ggdt/tests/ref/indexed/pixel_drawing.pcx | Bin 3827 -> 0 bytes ggdt/tests/ref/indexed/pixel_drawing.png | Bin 0 -> 998 bytes ggdt/tests/ref/indexed/rect_drawing.pcx | Bin 5116 -> 0 bytes ggdt/tests/ref/indexed/rect_drawing.png | Bin 0 -> 1362 bytes ggdt/tests/ref/indexed/rotozoom_blits.pcx | Bin 6482 -> 0 bytes ggdt/tests/ref/indexed/rotozoom_blits.png | Bin 0 -> 2602 bytes .../ref/indexed/rotozoom_offset_blits.pcx | Bin 6482 -> 0 bytes .../ref/indexed/rotozoom_offset_blits.png | Bin 0 -> 2735 bytes .../indexed/rotozoom_transparent_blits.pcx | Bin 6542 -> 0 bytes .../indexed/rotozoom_transparent_blits.png | Bin 0 -> 2649 bytes .../rotozoom_transparent_offset_blits.pcx | Bin 6542 -> 0 bytes .../rotozoom_transparent_offset_blits.png | Bin 0 -> 2776 bytes ggdt/tests/ref/indexed/solid_blits.pcx | Bin 5724 -> 0 bytes ggdt/tests/ref/indexed/solid_blits.png | Bin 0 -> 1919 bytes .../tests/ref/indexed/solid_flipped_blits.pcx | Bin 5926 -> 0 bytes .../tests/ref/indexed/solid_flipped_blits.png | Bin 0 -> 1890 bytes .../indexed/solid_flipped_offset_blits.pcx | Bin 5926 -> 0 bytes .../indexed/solid_flipped_offset_blits.png | Bin 0 -> 2068 bytes ggdt/tests/ref/indexed/solid_offset_blits.pcx | Bin 5926 -> 0 bytes ggdt/tests/ref/indexed/solid_offset_blits.png | Bin 0 -> 1975 bytes ggdt/tests/ref/indexed/text_drawing.pcx | Bin 14017 -> 0 bytes ggdt/tests/ref/indexed/text_drawing.png | Bin 0 -> 4504 bytes ggdt/tests/ref/indexed/transparent_blits.pcx | Bin 5752 -> 0 bytes ggdt/tests/ref/indexed/transparent_blits.png | Bin 0 -> 1927 bytes .../ref/indexed/transparent_flipped_blits.pcx | Bin 5946 -> 0 bytes .../ref/indexed/transparent_flipped_blits.png | Bin 0 -> 1906 bytes .../transparent_flipped_offset_blits.pcx | Bin 5946 -> 0 bytes .../transparent_flipped_offset_blits.png | Bin 0 -> 2058 bytes .../transparent_flipped_single_blits.pcx | Bin 5482 -> 0 bytes .../transparent_flipped_single_blits.png | Bin 0 -> 1833 bytes .../ref/indexed/transparent_offset_blits.pcx | Bin 5946 -> 0 bytes .../ref/indexed/transparent_offset_blits.png | Bin 0 -> 1961 bytes .../ref/indexed/transparent_single_blits.pcx | Bin 5482 -> 0 bytes .../ref/indexed/transparent_single_blits.png | Bin 0 -> 1770 bytes ggdt/tests/ref/indexed/vert_line_drawing.pcx | Bin 4695 -> 0 bytes ggdt/tests/ref/indexed/vert_line_drawing.png | Bin 0 -> 1359 bytes 73 files changed, 72 insertions(+), 72 deletions(-) delete mode 100644 ggdt/tests/ref/indexed/blended_filled_rect_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/blended_filled_rect_drawing.png delete mode 100644 ggdt/tests/ref/indexed/blended_horiz_line_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/blended_horiz_line_drawing.png delete mode 100644 ggdt/tests/ref/indexed/blended_line_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/blended_line_drawing.png delete mode 100644 ggdt/tests/ref/indexed/blended_pixel_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/blended_pixel_drawing.png delete mode 100644 ggdt/tests/ref/indexed/blended_rect_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/blended_rect_drawing.png delete mode 100644 ggdt/tests/ref/indexed/blended_rotozoom_blits.pcx create mode 100644 ggdt/tests/ref/indexed/blended_rotozoom_blits.png delete mode 100644 ggdt/tests/ref/indexed/blended_rotozoom_transparent_blits.pcx create mode 100644 ggdt/tests/ref/indexed/blended_rotozoom_transparent_blits.png delete mode 100644 ggdt/tests/ref/indexed/blended_solid_blits.pcx create mode 100644 ggdt/tests/ref/indexed/blended_solid_blits.png delete mode 100644 ggdt/tests/ref/indexed/blended_solid_flipped_blits.pcx create mode 100644 ggdt/tests/ref/indexed/blended_solid_flipped_blits.png delete mode 100644 ggdt/tests/ref/indexed/blended_transparent_blits.pcx create mode 100644 ggdt/tests/ref/indexed/blended_transparent_blits.png delete mode 100644 ggdt/tests/ref/indexed/blended_transparent_flipped_blits.pcx create mode 100644 ggdt/tests/ref/indexed/blended_transparent_flipped_blits.png delete mode 100644 ggdt/tests/ref/indexed/blended_vert_line_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/blended_vert_line_drawing.png delete mode 100644 ggdt/tests/ref/indexed/circle_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/circle_drawing.png delete mode 100644 ggdt/tests/ref/indexed/filled_circle_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/filled_circle_drawing.png delete mode 100644 ggdt/tests/ref/indexed/filled_rect_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/filled_rect_drawing.png delete mode 100644 ggdt/tests/ref/indexed/horiz_line_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/horiz_line_drawing.png delete mode 100644 ggdt/tests/ref/indexed/line_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/line_drawing.png delete mode 100644 ggdt/tests/ref/indexed/pixel_addressing.pcx create mode 100644 ggdt/tests/ref/indexed/pixel_addressing.png delete mode 100644 ggdt/tests/ref/indexed/pixel_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/pixel_drawing.png delete mode 100644 ggdt/tests/ref/indexed/rect_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/rect_drawing.png delete mode 100644 ggdt/tests/ref/indexed/rotozoom_blits.pcx create mode 100644 ggdt/tests/ref/indexed/rotozoom_blits.png delete mode 100644 ggdt/tests/ref/indexed/rotozoom_offset_blits.pcx create mode 100644 ggdt/tests/ref/indexed/rotozoom_offset_blits.png delete mode 100644 ggdt/tests/ref/indexed/rotozoom_transparent_blits.pcx create mode 100644 ggdt/tests/ref/indexed/rotozoom_transparent_blits.png delete mode 100644 ggdt/tests/ref/indexed/rotozoom_transparent_offset_blits.pcx create mode 100644 ggdt/tests/ref/indexed/rotozoom_transparent_offset_blits.png delete mode 100644 ggdt/tests/ref/indexed/solid_blits.pcx create mode 100644 ggdt/tests/ref/indexed/solid_blits.png delete mode 100644 ggdt/tests/ref/indexed/solid_flipped_blits.pcx create mode 100644 ggdt/tests/ref/indexed/solid_flipped_blits.png delete mode 100644 ggdt/tests/ref/indexed/solid_flipped_offset_blits.pcx create mode 100644 ggdt/tests/ref/indexed/solid_flipped_offset_blits.png delete mode 100644 ggdt/tests/ref/indexed/solid_offset_blits.pcx create mode 100644 ggdt/tests/ref/indexed/solid_offset_blits.png delete mode 100644 ggdt/tests/ref/indexed/text_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/text_drawing.png delete mode 100644 ggdt/tests/ref/indexed/transparent_blits.pcx create mode 100644 ggdt/tests/ref/indexed/transparent_blits.png delete mode 100644 ggdt/tests/ref/indexed/transparent_flipped_blits.pcx create mode 100644 ggdt/tests/ref/indexed/transparent_flipped_blits.png delete mode 100644 ggdt/tests/ref/indexed/transparent_flipped_offset_blits.pcx create mode 100644 ggdt/tests/ref/indexed/transparent_flipped_offset_blits.png delete mode 100644 ggdt/tests/ref/indexed/transparent_flipped_single_blits.pcx create mode 100644 ggdt/tests/ref/indexed/transparent_flipped_single_blits.png delete mode 100644 ggdt/tests/ref/indexed/transparent_offset_blits.pcx create mode 100644 ggdt/tests/ref/indexed/transparent_offset_blits.png delete mode 100644 ggdt/tests/ref/indexed/transparent_single_blits.pcx create mode 100644 ggdt/tests/ref/indexed/transparent_single_blits.png delete mode 100644 ggdt/tests/ref/indexed/vert_line_drawing.pcx create mode 100644 ggdt/tests/ref/indexed/vert_line_drawing.png diff --git a/ggdt/tests/graphics_indexed.rs b/ggdt/tests/graphics_indexed.rs index 2fc95a2..e62abdf 100644 --- a/ggdt/tests/graphics_indexed.rs +++ b/ggdt/tests/graphics_indexed.rs @@ -76,8 +76,8 @@ fn pixel_addressing() { } } - let path = reference_file(Path::new("pixel_addressing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("pixel_addressing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -128,8 +128,8 @@ fn pixel_drawing() { screen.set_pixel(160, i + 234, 15); } - let path = reference_file(Path::new("pixel_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("pixel_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -153,8 +153,8 @@ fn blended_pixel_drawing() { screen.set_blended_pixel(160, i + 234, 15, &blend_map); } - let path = reference_file(Path::new("blended_pixel_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_pixel_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -174,8 +174,8 @@ fn horiz_line_drawing() { screen.horiz_line(100, 200, -10, 6); screen.horiz_line(20, 80, 250, 7); - let path = reference_file(Path::new("horiz_line_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("horiz_line_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -194,8 +194,8 @@ fn blended_horiz_line_drawing() { screen.blended_horiz_line(100, 200, -10, 6, &blend_map); screen.blended_horiz_line(20, 80, 250, 7, &blend_map); - let path = reference_file(Path::new("blended_horiz_line_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_horiz_line_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -214,8 +214,8 @@ fn vert_line_drawing() { screen.vert_line(-17, 10, 20, 6); screen.vert_line(400, 100, 300, 7); - let path = reference_file(Path::new("vert_line_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("vert_line_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -234,8 +234,8 @@ fn blended_vert_line_drawing() { screen.blended_vert_line(-17, 10, 20, 6, &blend_map); screen.blended_vert_line(400, 100, 300, 7, &blend_map); - let path = reference_file(Path::new("blended_vert_line_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_vert_line_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -271,8 +271,8 @@ fn line_drawing() { screen.line(-100, 120, -100, 239, 3); screen.line(320, 99, 320, 199, 5); - let path = reference_file(Path::new("line_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("line_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -308,8 +308,8 @@ fn blended_line_drawing() { screen.blended_line(-100, 120, -100, 239, 3, &blend_map); screen.blended_line(320, 99, 320, 199, 5, &blend_map); - let path = reference_file(Path::new("blended_line_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_line_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -336,8 +336,8 @@ fn rect_drawing() { screen.rect(300, 20, 340, -20, 13); screen.rect(20, 220, -20, 260, 14); - let path = reference_file(Path::new("rect_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("rect_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -364,8 +364,8 @@ fn blended_rect_drawing() { screen.blended_rect(300, 20, 340, -20, 13, &blend_map); screen.blended_rect(20, 220, -20, 260, 14, &blend_map); - let path = reference_file(Path::new("blended_rect_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_rect_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -392,8 +392,8 @@ fn filled_rect_drawing() { screen.filled_rect(300, 20, 340, -20, 13); screen.filled_rect(20, 220, -20, 260, 14); - let path = reference_file(Path::new("filled_rect_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("filled_rect_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -420,8 +420,8 @@ fn blended_filled_rect_drawing() { screen.blended_filled_rect(300, 20, 340, -20, 13, &blend_map); screen.blended_filled_rect(20, 220, -20, 260, 14, &blend_map); - let path = reference_file(Path::new("blended_filled_rect_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_filled_rect_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -443,8 +443,8 @@ fn circle_drawing() { screen.circle(319, 1, 22, 9); screen.circle(2, 242, 19, 10); - let path = reference_file(Path::new("circle_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("circle_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -466,8 +466,8 @@ fn filled_circle_drawing() { screen.filled_circle(319, 1, 22, 9); screen.filled_circle(2, 242, 19, 10); - let path = reference_file(Path::new("filled_circle_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("filled_circle_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -517,8 +517,8 @@ fn text_drawing() { screen.print_string(message, 360, 120, FontRenderOpts::Color(7), &font); screen.print_string(message, 200, 250, FontRenderOpts::Color(8), &font); - let path = reference_file(Path::new("text_drawing.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("text_drawing.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -600,8 +600,8 @@ fn solid_blits() { screen.blit(Solid, &bmp16, 196, 238); screen.blit(Solid, &bmp16, 226, 240); - let path = reference_file(Path::new("solid_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("solid_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -667,8 +667,8 @@ fn blended_solid_blits() { screen.blit(SolidBlended { blend_map: blend_map.clone() }, &bmp16, 196, 238); screen.blit(SolidBlended { blend_map: blend_map.clone() }, &bmp16, 226, 240); - let path = reference_file(Path::new("blended_solid_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_solid_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -731,8 +731,8 @@ fn solid_flipped_blits() { screen.blit(SolidFlipped { horizontal_flip: true, vertical_flip: false }, &bmp, 196, 238); screen.blit(SolidFlipped { horizontal_flip: false, vertical_flip: true }, &bmp, 226, 240); - let path = reference_file(Path::new("solid_flipped_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("solid_flipped_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -795,8 +795,8 @@ fn blended_solid_flipped_blits() { screen.blit(SolidFlippedBlended { horizontal_flip: true, vertical_flip: false, blend_map: blend_map.clone() }, &bmp, 196, 238); screen.blit(SolidFlippedBlended { horizontal_flip: false, vertical_flip: true, blend_map: blend_map.clone() }, &bmp, 226, 240); - let path = reference_file(Path::new("blended_solid_flipped_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_solid_flipped_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -859,8 +859,8 @@ fn solid_offset_blits() { screen.blit(SolidOffset(22), &bmp, 196, 238); screen.blit(SolidOffset(22), &bmp, 226, 240); - let path = reference_file(Path::new("solid_offset_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("solid_offset_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -923,8 +923,8 @@ fn solid_flipped_offset_blits() { screen.blit(SolidFlippedOffset { offset: 22, horizontal_flip: true, vertical_flip: false }, &bmp, 196, 238); screen.blit(SolidFlippedOffset { offset: 22, horizontal_flip: false, vertical_flip: true }, &bmp, 226, 240); - let path = reference_file(Path::new("solid_flipped_offset_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("solid_flipped_offset_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -990,8 +990,8 @@ fn transparent_blits() { screen.blit(Transparent(0), &bmp16, 196, 238); screen.blit(Transparent(0), &bmp16, 226, 240); - let path = reference_file(Path::new("transparent_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("transparent_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1057,8 +1057,8 @@ fn blended_transparent_blits() { screen.blit(TransparentBlended { transparent_color: 0, blend_map: blend_map.clone() }, &bmp16, 196, 238); screen.blit(TransparentBlended { transparent_color: 0, blend_map: blend_map.clone() }, &bmp16, 226, 240); - let path = reference_file(Path::new("blended_transparent_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_transparent_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1121,8 +1121,8 @@ fn transparent_flipped_blits() { screen.blit(TransparentFlipped { transparent_color: 0, horizontal_flip: true, vertical_flip: false }, &bmp, 196, 238); screen.blit(TransparentFlipped { transparent_color: 0, horizontal_flip: false, vertical_flip: true }, &bmp, 226, 240); - let path = reference_file(Path::new("transparent_flipped_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("transparent_flipped_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1185,8 +1185,8 @@ fn blended_transparent_flipped_blits() { screen.blit(TransparentFlippedBlended { transparent_color: 0, horizontal_flip: true, vertical_flip: false, blend_map: blend_map.clone() }, &bmp, 196, 238); screen.blit(TransparentFlippedBlended { transparent_color: 0, horizontal_flip: false, vertical_flip: true, blend_map: blend_map.clone() }, &bmp, 226, 240); - let path = reference_file(Path::new("blended_transparent_flipped_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_transparent_flipped_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1249,8 +1249,8 @@ fn transparent_offset_blits() { screen.blit(TransparentOffset { transparent_color: 0, offset: 22 }, &bmp, 196, 238); screen.blit(TransparentOffset { transparent_color: 0, offset: 22 }, &bmp, 226, 240); - let path = reference_file(Path::new("transparent_offset_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("transparent_offset_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1313,8 +1313,8 @@ fn transparent_flipped_offset_blits() { screen.blit(TransparentFlippedOffset { transparent_color: 0, offset: 22, horizontal_flip: true, vertical_flip: false }, &bmp, 196, 238); screen.blit(TransparentFlippedOffset { transparent_color: 0, offset: 22, horizontal_flip: false, vertical_flip: true }, &bmp, 226, 240); - let path = reference_file(Path::new("transparent_flipped_offset_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("transparent_flipped_offset_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1377,8 +1377,8 @@ fn transparent_single_blits() { screen.blit(TransparentSingle { transparent_color: 0, draw_color: 22 }, &bmp, 196, 238); screen.blit(TransparentSingle { transparent_color: 0, draw_color: 22 }, &bmp, 226, 240); - let path = reference_file(Path::new("transparent_single_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("transparent_single_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1441,8 +1441,8 @@ fn transparent_flipped_single_blits() { screen.blit(TransparentFlippedSingle { transparent_color: 0, draw_color: 22, horizontal_flip: true, vertical_flip: false }, &bmp, 196, 238); screen.blit(TransparentFlippedSingle { transparent_color: 0, draw_color: 22, horizontal_flip: false, vertical_flip: true }, &bmp, 226, 240); - let path = reference_file(Path::new("transparent_flipped_single_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("transparent_flipped_single_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1505,8 +1505,8 @@ fn rotozoom_blits() { screen.blit(RotoZoom { angle: 1.3, scale_x: 1.0, scale_y: 1.0 }, &bmp, 196, 238); screen.blit(RotoZoom { angle: 1.3, scale_x: 1.0, scale_y: 1.0 }, &bmp, 226, 240); - let path = reference_file(Path::new("rotozoom_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("rotozoom_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1569,8 +1569,8 @@ fn blended_rotozoom_blits() { screen.blit(RotoZoomBlended { angle: 1.3, scale_x: 1.0, scale_y: 1.0, blend_map: blend_map.clone() }, &bmp, 196, 238); screen.blit(RotoZoomBlended { angle: 1.3, scale_x: 1.0, scale_y: 1.0, blend_map: blend_map.clone() }, &bmp, 226, 240); - let path = reference_file(Path::new("blended_rotozoom_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_rotozoom_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1633,8 +1633,8 @@ fn rotozoom_offset_blits() { screen.blit(RotoZoomOffset { angle: 1.3, scale_x: 1.0, scale_y: 1.0, offset: 22 }, &bmp, 196, 238); screen.blit(RotoZoomOffset { angle: 1.3, scale_x: 1.0, scale_y: 1.0, offset: 22 }, &bmp, 226, 240); - let path = reference_file(Path::new("rotozoom_offset_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("rotozoom_offset_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1697,8 +1697,8 @@ fn rotozoom_transparent_blits() { screen.blit(RotoZoomTransparent { transparent_color: 0, angle: 1.3, scale_x: 1.0, scale_y: 1.0 }, &bmp, 196, 238); screen.blit(RotoZoomTransparent { transparent_color: 0, angle: 1.3, scale_x: 1.0, scale_y: 1.0 }, &bmp, 226, 240); - let path = reference_file(Path::new("rotozoom_transparent_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("rotozoom_transparent_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1761,8 +1761,8 @@ fn blended_rotozoom_transparent_blits() { screen.blit(RotoZoomTransparentBlended { transparent_color: 0, angle: 1.3, scale_x: 1.0, scale_y: 1.0, blend_map: blend_map.clone() }, &bmp, 196, 238); screen.blit(RotoZoomTransparentBlended { transparent_color: 0, angle: 1.3, scale_x: 1.0, scale_y: 1.0, blend_map: blend_map.clone() }, &bmp, 226, 240); - let path = reference_file(Path::new("blended_rotozoom_transparent_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("blended_rotozoom_transparent_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } @@ -1825,8 +1825,8 @@ fn rotozoom_transparent_offset_blits() { screen.blit(RotoZoomTransparentOffset { transparent_color: 0, offset: 22, angle: 1.3, scale_x: 1.0, scale_y: 1.0 }, &bmp, 196, 238); screen.blit(RotoZoomTransparentOffset { transparent_color: 0, offset: 22, angle: 1.3, scale_x: 1.0, scale_y: 1.0 }, &bmp, 226, 240); - let path = reference_file(Path::new("rotozoom_transparent_offset_blits.pcx")); - //screen.to_pcx_file(path.as_path(), &palette).unwrap(); + let path = reference_file(Path::new("rotozoom_transparent_offset_blits.png")); + //screen.to_png_file(path.as_path(), &palette).unwrap(); assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path); } diff --git a/ggdt/tests/ref/indexed/blended_filled_rect_drawing.pcx b/ggdt/tests/ref/indexed/blended_filled_rect_drawing.pcx deleted file mode 100644 index 25f2b95a222c223b5dc0b663083d2ae83c879a7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28233 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 J!#uF|{2!U-Eua7Z diff --git a/ggdt/tests/ref/indexed/blended_horiz_line_drawing.png b/ggdt/tests/ref/indexed/blended_horiz_line_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..eb151577eed7b1cb8aea3c492bba0fbae46800fd GIT binary patch literal 1624 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 inzIwl=M#coLR$OyM zeaw-wsYQ*7rY=n>OGx&~mKB;aT9(+liusEcD25^TweIfyG z5`jQyV?YxX>d8<^0!=8C5I}_oMIcB}5cxq00z3pb01N;MKp23vUfWh#(xfS@FDa;0 z$uvrdS}Im$2o*xUL=Y#6;|MscI2MgfrO?P>6jCVAv_LHbiWT?K#Cd!D&Q%AD+RU~SVExjff5H~Hjo$)OaTH` zkj(~WGt|{VSs5smAQl6U2P_tp0jK~J01^Np03U!0zyd2gX@cfzs4jsLB`C!p<^hid zENc^(DnX|Pl>#Ip;Ku=r24N%+7`$w)jat}7lGWoyT9mIsI8vYqtp#9`fKCX7Jdm;> zg$f)JPzazAG71G$1)q`;7bfJ8c&t!1l|Uoo0SW<>08#)kKneg4Ci=?i*A=v>rS%Gt zM$A_UxDqZyz@Tu*q!O?xz$}5f6ex=WB^xrRzz+jfbw^#9NmHOxN!3!JOvDrMuy#`z zlqXu9z#8=4K(hH7oKR;?{5P^)AGiVT@Vm?7c|1zaAN z#bMDHG%|%8N($|-tL)He%w;7ebzyaZQmc@aNHPjUB3X(cgU3tZa(FBjhf1Z9$>h+` zPy)dv#ydoTj+8(( zQ#O4knl|6KaMktENu66t;+FcQO*uX)Caljl>_awr}$)OI@O_-r>&1JZU4JhRq6^%uki#a#YdGp zh=lvzw-c@VG>vIn+bp{eo)}y4}?+6LrYAnfFSr zu9ua1X{vgL**xjqfJFI}cMwmvOM3ECb3aSpko{F>M@{is!`NcuFn;&R;d6Qv@zbNSN@1DftxQ<~Nz^kr|nnpJn2+wrMtjGos|c0^Mc1a8-7-GxhE61_Sk&c=en+xyfZ(A-jeAhher z36Jm555Jr`!hHV$?w7>@EhpD!-8?kHl-+M7_M)^0IL{`ww45=JhB}pV2Ib>b8hT6c zt{TK`ngAW6Puo1gJp3CjYN!P#8=qrMN=nN8cJj{ya#rey@n9=1Gg=?CPH`E~QBe--;r%>S0K1O51GLJy&CoY@vWB+uV)ICkpq#Te!B+kA$$(bJ_7Q753=f{$S9 zvl&>4>$fFUz3i9Qe;)Z}(v0$>lSYR(UJ9P+H%t=W)m*FE$%y#2kJ}lm&fC(Rn;hO= z7WAt&IsQ`T436Ncqx1_SzsG0fJ`T+ev~PA7=DFW}OXtEi7;t(pb7B17?8x=lIWdGD zWn-Vmh}9V>?b>l>!Vld8@}|m*V{#5wO8w(EyJ9GU`e6OhhFmSqsot1VirhcIyZGXP zqcMNO-n&s#yJEhtq?3+Azp&m>-$bsLMHZrY&_Z-ZPG{vB|_Oz0P z@q_XN_MF+_mLcQK3CLe3dy>{{0noKcTgQ@;2M6V#0;On;!OS@`Ro{ubU&zxR)Thd7VPtV52!w-tF z@2Rpf;GgFc7-NqDYLSu5y}b9gA=zE$D?JSzFLHEPfa9)OE1I5zf1TpJ249OL85u(6 z(Vw|(Xw12RzUil*afI{vx z4!66L7tq&l5#>Z2Bc8c%@Wb7sY-VKt2RRWBaW$KN4H;$@{ph?_o?U)(xjQ)?1N!Ae zR1wn*=>B^+OYK;4Iz3%@37vebdf>swqez+_-G3jqarpy8F(6-5GN9Nr!YuM1x#sn` Y#hwy?|HoF{#Bc1{HJ_}mSe2ajF9#6{!vFvP literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_pixel_drawing.pcx b/ggdt/tests/ref/indexed/blended_pixel_drawing.pcx deleted file mode 100644 index 6696eb08f0d2f92b5cca9678128408c08665a48c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28817 zcmeI5KWy4q9LK*IPMj_$F(8G3Ap=odi2*epJTOqn13fV?AjOp!7*NE(Nem1O3=9km z3iy!rT))-JSZrmhf}}se0hdm;jnnz zFBX)_dzMA7_*`YlKdZb`JS<+wue-8dvOHXE)s+wWtJUzi0kU)O7q&@nzZhg z4tge4^`%Ktr_?RIHn~#s+xeXl#4j^?nu(yCYHd#lwjZ@{ZwxnFsyoptXk>sc3?gbfNy+*$HI4i}xqt*pKqF#80C) zEztO%v*!o!OElej3#$`A_nnYZl{I;wJw|{*z60#^YP^pJs5D z_(}Zyh5hH|KVd`TpG*iP|4IJS3@&~Z%03V}6F-Tc#LoxBVN^tG%SZl`37%SJ;wSNw z__?mfv{}`7H$U~?vh^fAiSbYJpT_Txuh8?Kk9^>Bp&0v3KFqzc#tUp}==en1MgEig zC;87!6)XAAyAiCBZStSwKgoZR|73ix?kvKk_Ybk%O{>v~{3rR(yRT57_a|&>D7m5S zBL7MLllGUz@(*Ea`oxa)7CcY`{&yM2JTN7@b z-(isF147={Bz5$Tm8d(6D&H#{eONl}!_Ly(dwX zU(8n8=FQE`WHK3#$DK~6)oL{w4MkCMxm+rhipS&Oa5xwYilQh80>^OpyBDRf)1(F4RZ9X`F2VB79tT8^Rs&)CSnmfs->)E7|isuv2Of-}X z2V+5h*e?b}k5Aw|ZWqrv;b}mqfmh(p!hVxM97qPdVK47@b5%?;7$wn;pcX{dhlGHT3u5cCUF+0y z&3sBpMbj}UCTWM8_wrYm4l!z@T|;g5yAmOUwBPk{dO7?!JRhF7&RdOELupiVNu(u~<41PDoND;FmxA=?r?(&gcICE|gP0 diff --git a/ggdt/tests/ref/indexed/blended_pixel_drawing.png b/ggdt/tests/ref/indexed/blended_pixel_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..b25813801594d4b8d7346168e4e47e3b24799912 GIT binary patch literal 1793 zcmc&#e{54#6#kZKp4nu@OqrqkLDIy=lvqrS52&MKZ&0v62SpxOT^DE4kqS?(tQ&8x zj1n4Bq`@UrD6GSRCDc)+l`d>!OB&KY8rErnEvuu!0mYPBl96rvtgqW(V&dPvdvfkM z$vt1rcfNb`_EoJ@%*maf3t-ObRh1inoN_L{`x1}yE63Ju0eGldvvCEN0v>L`7TE3I>!8G7Y3^NE8ssQ7VOiYbcRGB!WNyPA4oD zFbrrK6a^<>1I&OC&;c4i1yG1%G=#7ZJ_j5YSQs!gXbMz3grFB5J8Whc_0Xt6$siU% z+nZ6i6J%>tWa=u^yZIU$p=2S`#jOY$;nAU$2CG0V38e^90bDwHtClotqz1KErxekY zP(cc0l0u*rumCK;0JQ*(>|Cj&#~QV>U1q(D(b%*qqe`xoOO+Cl0|_%CMg(f%RKucx zfrLg3$`=bbgD$Jb#@bn(Nl)u(ZroD2bQFm&A^`-Pa8B_uXrSSE4JKmY!EkT5*VpTF z``mW7!)mvgtY(ABs59s_I<1OUQA$cCmr0}&p-7kvcw-({#OVmyTYXlG+iY?e4OYG0 zRI4@6bgfEBQW)7{+jd*ugTZ?X(FUGF*H z{n?{;?nV^N9j8wvANbD1B$r3RA(b$5LGx(mOt_N^vU~sy{gQO-jrqNTspFoeSB}Cy6wsSu|^-27#L}6tp6%;X?vex>zCE_ z2i8P-KPfs~Ex9<9!@j=AJ9c`JB~fhH-?VIP{};)e6W-#x3(m8lPx=0XMXf!Om1lVs z)5*o6j}9+AyW~{vj)wlXEr}vu*+5Ahf8p?WIa~8#jCVZMGB93V$1dlntg}}C#{ZuDwFI&{{3~;)pe|P;9{4ByS zFV(UlmXm7P`V4To#xT#%%finhOt+d}$6ur8I-G^5aQNCs|C}tkQ6Fh@+`RLYLiWIa zHqD{_|4kP^H^)>=c)50o#~8e;@W%R zi6dK%8m=yjnri;yUA5NtU74F$&$Qia%75!f4$W&*mNgujoG_*DFWq#zX#O?dK~wyj bwhXVTd8=-5?y8CGuWa>-b(Lo-YIgq(8kYYA literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_rect_drawing.pcx b/ggdt/tests/ref/indexed/blended_rect_drawing.pcx deleted file mode 100644 index fdee79631b36966b11e26cc24d49b41c0aefded7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29773 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 bg8^|az|R6d104EH!{>nXIRoi~uIK*(w;XxB diff --git a/ggdt/tests/ref/indexed/blended_rect_drawing.png b/ggdt/tests/ref/indexed/blended_rect_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..ae74446090ab877d7f73b174e913ee0c4a1f578e GIT binary patch literal 2386 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 literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_rotozoom_transparent_blits.pcx b/ggdt/tests/ref/indexed/blended_rotozoom_transparent_blits.pcx deleted file mode 100644 index 13bc054ee3f8c749131fd41e01ef5ed8ec4a7587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30781 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 K%?r%jqW=R805<{v literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_solid_blits.pcx b/ggdt/tests/ref/indexed/blended_solid_blits.pcx deleted file mode 100644 index f67bd54b93644fed37cdd75cefc5d9a9304179b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30294 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 diff --git a/ggdt/tests/ref/indexed/blended_solid_blits.png b/ggdt/tests/ref/indexed/blended_solid_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..af8b6e72b9cb06e1e7d138f616850b33104af9b2 GIT binary patch literal 4051 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 literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_solid_flipped_blits.pcx b/ggdt/tests/ref/indexed/blended_solid_flipped_blits.pcx deleted file mode 100644 index fd39cb80c76828c14ed92e33a2d683c30299e076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30470 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 diff --git a/ggdt/tests/ref/indexed/blended_solid_flipped_blits.png b/ggdt/tests/ref/indexed/blended_solid_flipped_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..4342fc805478ce50912be4ac7137b8f5aad96629 GIT binary patch literal 3924 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 M+wJLG;uMtjFU!w7H~;_u literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_transparent_blits.pcx b/ggdt/tests/ref/indexed/blended_transparent_blits.pcx deleted file mode 100644 index 9162f3fe7aa22d2c4443dadcd15cae035052a480..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30241 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 G^Zx+GR6HvH diff --git a/ggdt/tests/ref/indexed/blended_transparent_blits.png b/ggdt/tests/ref/indexed/blended_transparent_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..6a7c866aa6e76de798c3667f77c2c1ba3cc7a036 GIT binary patch literal 3976 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 literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_transparent_flipped_blits.pcx b/ggdt/tests/ref/indexed/blended_transparent_flipped_blits.pcx deleted file mode 100644 index 4e84bb67efa0f9898f38ea0ce50a88d859eec458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30400 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 diff --git a/ggdt/tests/ref/indexed/blended_transparent_flipped_blits.png b/ggdt/tests/ref/indexed/blended_transparent_flipped_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..2c238ab5e782341404a02750d23fce59b536c7d3 GIT binary patch literal 3854 zcmZ8k4LsA^8$U)(#FRqKwUsjesL9)iHnmD!FH_3WVzk_;iC7tC#`TX}w^pqzi78$C z7ll^jT^5p9r9xho=BAA1r5FqUpWFZK^Z%Xaob!F2-*bNFoab|%=RChOA8&U(oz*%3 z0KGlCckBZ|!wtft+L}FMcgHaj9Bf=Z?O`uY-yL>vx>!C;U`WIF*g;Xox8 z6k$M~Imki+o-s%^1S|w#=mHuXkm0}s00IDZ09XMas}!{tWi{pTE3?vzc-*{HmVh0> zW73o96c*K&;p;*5Ao>zr+;Mg;SSve>IdBmHoDkRv0G0==Qh^m0U|7IB0-)#sMFmJQ zFeU+GcVI{W2p52`OO^n38DJIxMjoIE0F?*G$$-QL?h$}U2QCy~=L@jz07C#MJAi~1 zG&l&PQczX~ghG&-3L+u^nGA?TAOwI1Kr#R<0O$Zv03ZQC1Tr9R0xe=7&H`DfATU%tf~w zr`v4@?|=vkZ?}TCW8hMAxD*9%LBd;%;Z2612>~P!>4IAL0#$+qg3hxZfA|vsy3Kob zY}+4meI(l}ddPKY%GU9po$7Qd7I(URUVL?Pm|rmI6V*?{{O$HK=Eg4XBXKt_URi$W zX>vmBkQGch-PV71t;cZ`xt!F&^+yG*!P3Q<-ct|NZ8i+-f zz>Twds6y}V_9a+h@2k)1_EDDsLu=0LEK54Hv5+(U?d{=tda_VI_A|a@&(yj0_sv+$ z`)9YtjOGkWf9n4F&7sOHuz#ax99OQ@lQX*fiS1{#UHCDE*WnQYLinbVI+`w>iVFy4 zo>Fw*6){T=KliFYs78#7z2qYso>VvpTf=5%yz3fFvHeEw{65s8J1cEZ$doeiOx>T{ zvAuU0VIYu7-R9P0(ThtkoZMSyZ??#FZCiC>>+F6s?OnBSZaP@Y^tT{EAwF`N`dYD? zl6cdyD$z{AQQ(46i#+8cIz}JrbyezFGvONnw3?3<^+pMa+tERFak3PzGM_s8KHalg zRFl$HNaMh&w>6#}^Ii3b{hto+D4ZGzFVlsE_m<^*$xqyWaDrLeMBgbUtR6l%8r8>h zn0m|`8ND+}W8J4!m)z_^X+{@*Zo0(Lgssg>{5X;jU5N9uS8Kw;NipS-Ew|LaXu@D@ z4fX>%i?&leISKo4dSlST6Pvz&N$lOj$k&PKXEkAckQ&Nh!LF9$xs!_EgCXxw{dIS6 znhwh?K5Cx9W?n_Cs5yFMi-+pcPB#m~iKKdg=X1CY)pj$=GQRovx`heNOK8=bA^!0A zcvAg(EChbW7gI9g(fswOr$?LNw*KQuo`12~4M&$zs=#F`BR-%1&&OFVj0`crv&#th0jVWUmL?k|WJdESgho&~~!mjJkv(67+4o{g2cR3+UIYv{waOS(w@U zN(n1@TfQZFKy&s@x##)$-})=tEPV|O#*{tlZVwo5J12{@cqywB9A&G4cfMjF#Fi_g|2>=TbJwnjmK z<(e@AnT3Pq{{fk1A7sD3MbM&36MIt9h`b`L=MFpK0$7@dtv{xiDsA8ER;6?}zmk^~ z8w3UhI(}7U>q;0g*@n*esAx{Eu|ZLP+CSDb5my8rp=^tD)j8YYon{>8s(n_V+CHG# zT88(*nVqjU4~cT!(Z90BV5=Dc7x<;;=E8t}-LAvLs{tqzm!AcrCm)RMET-^6%YS!KqR@>y35du9+eT z^|R*tYUHX_Q#~rY66IW3rH4wI!HurIxO#p_PKc7L ztGGw6blXHegE*+ho~8h@YGsD;+OJqbpV^8?+}y58mhGW4oV`tq_yUtJHS2$gETrRIh^y2VrMGS@AnOuRNmzQe1q7;*2K4any^e*?6 zTUP0872O_F9KWA7b>p=vYr-SEDKB*+r|@68FMKLq?u{ea`+OnY9;8=|Z{#tH!Bv z%GV#CCnks4=gMTtp&6CV9(n++-8!OW<;iE)wPQGQsji@=vD6<0L3drE{oc~nnL5P; z;gHGAG~1X?^m{+A6LapyzcYs~cw-zMPNM>Bo_nR4{g8&$O|Ny)5IN50>3YBNU#rdg zv&v?ws<_j|?0*m8ZOCO`LyoL<^!`@}{$Gu{(l$e@wBHh*FCKlY%C4P-OXr>!kmzZN zt9n)#oL_Q5p~!DLn7tTQFLpL4rm^kgCjaD+=qri~DUD~V8O@dl_g+8n#&*|Ivowd| zc726rws1{HhgbFw=JDI5jfq>e89}0-GRn%8gTwM1-w*?XE%2L(CH2gws83&D+s{~Q zt1@HzSVN{#4%^5{k4YO>Na;jB+&o8%ONN@eS<>Qf+xlz`B32dUt5Gc%!rK29KO}AGm{z}lxop@ zGTbEJ`KeR6r(+iS{ZBO`?#*k1jA0qJ-kY+5=X3@%L#`jT=)Qos42=pS;(hpf7i?^` z;nQvs#~p?t2Kpa$v!-sZdUU??d1TG#%d>=L8WbZf(UUx*WI@9V(xEeE&v+rli|b$L zufiZNEesCD44%of9z0V%c&4Fk4=1R|8WxQX>X;1OcO7zBixmo|f|%oD7sU!q_4UD| zv4nf3qnlVc&HAxf4$^f{Xb2KcxZ2bV###)|)ZqtXgW{zVo|8R4uN1-S@EECDnuj*c zx~|&bYF8swyZb$cUDUg{KCkJ!boFj{&m zGV0sHn~&;Uw;EHYYt)4?HiZ7U@`-bjS@B0?6YfSd7SdTso49KuGmbZL?pt(bx+XGX z$wspg^Kold&DhfE3l1`;nkAUr))IoUgzdkoqV}SEjZQ4`mrMisOZ?hA#Cj;YjSrdR zoa29(O?T2@if#nx>^@&>aKV(j2JJkz-R*c4ciFNFe?#Ys#~Yic!+f&!uN`u|hemhJ zX{Uxjmz;dyepf|&P{@seBy4u}sSSrLuW2mb6)n59;h^PB20p`1dEG+YddnQZ&@8FSEC`~N!0^7L!$nM#o#p}l_Q z{iJwyN%xsUT}dYQQjb>dANzZXNtNkhjnkOu(3^$yFY|TY!!LGpJ>P$k@z9eTEh;=^!|)PqOJ;#=q~U|7v7h>`?@qlo!uosJc({0C1~WUU+@t#ODa~f#~mg)m9_(ecjWK$ zI?KbL=}O3q(AuR}zaXcS={L2r^!X~wTzRX-Dbw#G2|VeOQ${)mSqR6^2?jP{30LiF zmXFFc7kxK5lT}`pNUxput$QLw@;jtO7>y;9@I{5)*sN2sI1R~1k(WF&zPJ2cO(>a0 z?b$xrzVeki)q;DVmQV_12x-%9%qY~R&;fk0*Hmy{cpgstAARaMSi&1v{uFPnJ@Nx# zw&rez@uS(ne!I=6P?A%FW`^*?#o_MWFV5N~^i%eeFO6~(ZPL#QS&nk=w3L%ML+Xi8 jNhMpp3Ay3$d5yrsFMn+l^Wql%YxnH*-f?ex(69dl_822( literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/blended_vert_line_drawing.pcx b/ggdt/tests/ref/indexed/blended_vert_line_drawing.pcx deleted file mode 100644 index 2e9d2c59afd338c0223948e0929763d553cc39d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29738 zcmeI5A#Cbe9LB$i7hc|8f|!^w2$G9HaFYu5faSdtL%?=`YYXB zRk~IFi*{4p?+Dv(rme24J*L=a_F1Mlm}}`Wf@s;|S${6+@~<81wNpB~F-^B(jZm3L zwS30C*6a>freBw*r0WcF`F)pnRaIObEwxPo7kw^uy5E;60s?pK3SR^xBC zbaEx=xwP9~u&lKqd|m#0IhHbgvt&un0`c|HXLcfRnv*NNvTR|`g0aQoR0ndmvcry_ zsqAqw#hWj5H7fV2JC}mEJJr3L1&dtHW{&yeiYccoMZcTK|W68e9E|2y4Uau@EmH=2t zs9Owe1i<_sMYW2Ub#UU3B_R_4FU}pS=A{XMjb_j+(?U=c5&`fV-B5hKngF<}S{LX! zD5a?t?NS0@qZLVoPo)zFEasw#1Lj+>GGn}il2X8vvSs+Dr6xuwajr>y5O57tU=!ImiUdC$4TgRjiSR=taZPZJ{w5CU< zTZ<*ii327Mc-7;lr_z{gEyFjh2CZcRRO28Iz7-CfmMBaBOaRO`>J{2vTA2V?jqIuw zhWsGu17@mZ5SGQJFDYsf0${mj$0doq!~rjaz2X=z;(*69u@n+~6XXQI1i;g=9^($D z8EfT~e*$0vU|rRY8V893o^~r~-4TEc!V=mCbC2;LeZY(J^`sAYDpt}5{0>RVyQlP* zG+MQmF_>D-Y|8{l089p9t?*_YO8r`_cU7a8*kVzt8Pz4t17<4+UA4=bnuWfs9`xk5 z`VjBbG2d+9E9QWkB7A(OjMQbB zlE2G~W7fH&?v-Z@=TJN~+a=GbNyW=_8{|1;XRxz)4s*PKueTvt&E}bgWwut3YNps+ z#R{LW?tHaeaS8$IF3u#aPWAGqX?b9UPPK|}q^A{1G+rcl)gi4}_*y3Bwd$E!@tLp7 zAFe>~`a@@rabZfYAb1tBXgXvn%7fr_PC663@?SGab&J^}c-5iXS@_bedmY!&!slDZ zXT|pe{De0%_u$Wp*Wbl|S=dAqXf}lvzoCU)T6jG3KlJmnuo5@??$guLXfzrQhb+ss zTCGN-!7xldpU-46$z(DbjfTTvilV$;ugm3fI2=Pix?Y^Saq7ac6Ez14o5*e;ZAW4q zF&k(bg8V;f1U$etFgkAxPix)d@_8+PS~xt;rI}2!kcwyHk#sbi2nVA1fDS50l56w^1#6d^zeYe0PQyFb>wnLCPCAnDAa)hkOk5}9EboRfWip( zUG!UM)lkbJmqd~VO@SJ9!JeYYppZp6fk+sX58Ez8FP;O92XA@kIy~P@H0+UrEtr8X zKFWhlqZvn;Mkaum7eN<14jjk*<)}9s@ub4r@t}*QoB^-H=iUU$Kn}h}cQt{NV)7^KmTp&mvqfRq=JZBVVdcAY)WHwzgi6F*GQ z37Y@7J$}zU9{L!x(XOK|{$8mFBK+@l`*7F4?O*gSS{JQGtHCsCd8Tlf&!!I3@l+xb zkA~eyBko_TOzYo~&sr8Y6edJre^RC}{Y`6U4whgy! jLzivfv<$tE9%Q=LF|33c*9Mw!H diff --git a/ggdt/tests/ref/indexed/blended_vert_line_drawing.png b/ggdt/tests/ref/indexed/blended_vert_line_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6e2e94d0d8f24e511d512029cef12535dc7ac4 GIT binary patch literal 1919 zcmY*a0c;!98UB`AdZ?y7v_vt&n}cQzr?|pprdYu-&bW4N=B6$f?G#+(NYUyJs~lhv z$2ql@XN1>!tGl`2whnQr3*Lx`Gmhf64oi@wg)Ss+;?lGU#DSnVS&}-;X{)l5?CdU6 za_`gs{`d61|9jv6e(4VF-lgBL{(39qhN%IDY#7GTNVbhyj(EFNpN$yTqcuAr_;$~lIQtoG#U&BeLf$@aV*PPEEbc= zMANidt(ME>5{V?OL!TN6C1P?!WC%&%7sFEq2L+o5O(Yl+20#a>00odqMANZQUnGzS z`C@)o#Onxhtlw_+Sj`TL$!0QG477>X=+!EXQlXN|pou~qhAIf99||uNF325_v8c47 z(gFzsu@PcD%5)u6svr?Al+7ZQ zLOhOe7+x<}77PQLMi}q|9>4)u0W)9(Xk;+ihkhP>2q7=LELa8%4LZ|@WDFfa_&spg zU^ao)Kp}^vXIUT3ssm}cDK)1yfZgB&UeB350%qV||o zc9X(tkTbMQua;<(Vjuu`0S;h+CV)YquJmk&FCF9(9$SPp`z=O?QD@Pq3`%(jSr1YU z#G4Q{!K;T|4YL9?KNb%sBfbtl7v!ui8)IXHa;tQzNo4zxiX$FIxTwo+hFQ=xk{#F??9;d}Tf9}PxBzM$Xb^VnSutKDX{T8xa5HqaWKMyXQDOD^25D*dT1T(wa5x0dv^58MrZ{Pmx| z{BGgi2ga+v{mXmG18>j1dSm{rJFyG%=l>CDW=ELtk$9NhpJH1scb@M~QQq0yyYuHi zi8TKw=D6L}^Y@RkTIp6%`TRyp?%!YCJlsyTT)y7o3|HP!v_ARu(~0zr&!eu`^zGO5 z^REwvt{mK`egDf#&h%*N?dVy_6YS{4ymkKUe(BVY4SUs#xi5AtaWQTDR$^U+t)j(S zy5txy4`frL_K})7XT`va)7_gMN`=pk9Ismj*Ik(ChQ_tL9dwYwh^P;GcjR9;W5#u;*$5bv+pLG84)p4zt>ue`ahqUxk{ zHFi*E$VWyuAC(@zvRFH`8sBUl+FYc#OH{B&iwYYa)NXnI|1$477aLADtmP7Fa#VV5 zA79(r_*|OUz8V338^4xou~rCwX=tx|vG>Dw$-}GhkoC~sm6EQI3gHu{2TEq#zg?@m zyngUU10`#?(!`9AbbF|Dm`JZxUUjnVXD3Squ63QC9AlhqG2JuFZV!9v!FVy>NqC*AWD_1U$jTN?+D z3={U|W71Dc6754p?>HY>>}~tWJLJ?{m3E6&KjW^}{7MLZ$Jt)G?va7KN;o9QDop=7 zdz@dXp3t9l75j9-4~i|c=H*w8uax6>p;rnmGE7`-c+)BLRClzPW{8`xWJC{t`q~SY R*}{*sZu_onoliCX?!O;LLa+b; literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/circle_drawing.pcx b/ggdt/tests/ref/indexed/circle_drawing.pcx deleted file mode 100644 index 645b964ff309b6e2e21a7642a160bf817fe08394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4828 zcmd^@yHXoT6o&uSl%$bs0|yQrD0HBJz`+Er+75UC1qvK0bl4A|fJg8HIB>`VC?wJa zNk{^Oz+eOB;>8$a%*}vhM%JD)!;HE|vRPcUuG(6uTg>^+-#vXfeMaJ5T-c!3pW+x& z)cNvmFCm4XmM3>>6{;1L`5Z zi>B~ZE>eqVAijx;Xj1iQ52*#rk#G%V(WUC+E2QSpLVN`!@tUenFHuUh79 z8e#)68Z0;e#4AP3e+1VNJM@)@y#A!@L%h)-Z50ikAWi+qSAOLE8-*MKv?dWLg$u3T z0AfvR&tXMNO>`BpW53q}R4DprU!pYL8exmSo#>;dAdO7&pA&s)m%MG!cfcq5?v0YJ z7Yq8f`$Uh9WiPVyAo7VGYbzrm`N|7uJ#u|whWP5pSy&r$XkL#wUvI`7#r4RE-Ovv8 zcW{Cjp8Nr}wDiC!jS``jLNaF+Ya$VvlBY5PX{8c^;!3{%{I&I_L#|6L8Q zxTk>r%JoOIt)P7y?@_VZR0GnWbX~Sqs0L(~=2o`WHBzQ0MakNs8fdUV#$E`%V;$B3 zZrpv)GFX(!ZtQEU!8#7S->?enG_ZQ0Y-gQ^+AA!>x(d9P=)&p+)&-VeT?f{eh}D7B z4}9m8&gkYh_dlcTM3<$&J{_^=*;NVrCzOuJo(=5d5xd2%df@*|Ny)UEY|jP$Biv?t zQm+$U;7@+jpV$rV+8Z?M59z^pH`^P!w?y3jqd%4ZuzlD0NA-7I|J(L6>W{`p)V?j= zqVaiKJe$#Po{XQJA@j7ECoy_X%~Nci@aXwBvqLm@j3k%Q{4<)PM)R1N=YmZ2D;e{D z+%_4^y^m6I_}sZBs}??mdSo?1>noDY(6~af6&jaFwnO6r$>H)zhB0cx*hRyh)2F_LvfZFs(;fuRbJH^ z%AsQs_9_@R`R7lFTcoA4XIH!pY9VyY!QNy&?;`zt3waIp7U-_L*9$}WtcUBU((;Ge z3hW)&Ep&#c1p6KA<~X!8RM~r=CFlm=J0hSDdmpqW%YnkZ6!a6_9O6z z_al26)4=pJf6$*CU*`Db(mUt6{NeqfOVU4h@F1N|XEGVbaV94xv)ODupI1svO-((2 z{`}?3m&IbSUaxO&Z+m)I!Y#m^0X3#FGsH(OoOLABwKa<%3&XbBh(%bZB(E15gj49H<7=FP;>h%bOh1yQL!;vznT(vs$j2G^BqJr4Co=O` TW+tTR(CBza_|GK$g5vXUqE~wF diff --git a/ggdt/tests/ref/indexed/circle_drawing.png b/ggdt/tests/ref/indexed/circle_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..24d3c7de09f6c5eef0998d2c19ca4978f954a9ba GIT binary patch literal 1793 zcmZvb3s4hB7{@mv!4MHTS`kD&6VnM*G5E=%8AQ|4JEyzO&RY#~Wpn_Jr485acn~d50&+gv;_wCK@H{Tu; z1qa$#J6Zz(Y=SllLjYhwdObGFf*wD7zBvp43n2PP96)~paEz)P>cv6MlnbvMWQXp6d1YY0RYerKmtHMfRGU%0s;a%XbOy6^MD|r3jz5A zBnb!^k&xg+!UdWFBiB6O@gScE1w81(gOHIAlVtnM#}0=rM04F9^i`ufa=%HpR!CtNeMiLvV|UkYjz zb1gQoQ)ka|uyeGo=vf(EZKKL($+TXvoSi&F=#7%eqbfuAP``++GVE-&Y+bt;IVPS_ z_5Y4^r{nTM627o(TXMGN;n94X@JFL{t2l=@hlsyX>Ed*%z5ADET1U?2en5rYx7+`FEXDYPY?h>F~unl6Fo=h(-N zdTbd>IDaZ?e#!Tn4(kHSEdp|8yzm<0RdhUY;fz|!8pLfQo<*n5jJZjtlFKH){k0}{ zvcl3S>9ZK0t7PjO{;chb#%8{pI+(|5h|Hv%5_=5ueS5tOgWLzN_peGk5IJ^*)!Q>% zNeoGRI~4C`EDvuQ))=yr1tOnYRZS_}GFD8@dG_!RWnD^Y`_nJ`9)Z} zLZ5`c9CJoB18t?5WerPw3`yfhehbt*kR2Z`G{_HRvevC{wG|M%pk9&2TKaE_Uj?T= ztKv^vc^gAh-k*gJyT5FH#Gj)(blI0=>aQN`yS##T(DS}dDN!pe z&#_!PYm^imS7Lm`UO?Qe?+$dYXwg`?$H3_8p0?rbisl247g722eLTW*6ZJ~EZuGIT zRuoD!UNq`y)*i4jOk>20vM{nKey>{AYbSO+?x$YVAXREa# z$DVEVrX#wzp^>G*n&=sHeiEZxB<=+f>$vd~YYNL%lZ!RV6`hOg2TJo-|{cia;tFlh7UJ~VdC*{N>Vd3%O$ZY*xTMr`2_s!9! z%bz)0qmn)ecLRGkPIGZhSV_0Gcf6dnuqE)`&fEUF>a{`Kk6%SElr-eq*t^${WXno9 zqweP$i~IT(a8oJ;!!6DUc2~Dnk4|b*UA1=<8i&FGZs+Sy_r0T)R&5_y!&aAbwv}AT rv*ga!Qxi9(nM@vwCV5#qU<_gK?YziMTag=E&AjiRfM8+q2C4ENih=?; literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/filled_circle_drawing.pcx b/ggdt/tests/ref/indexed/filled_circle_drawing.pcx deleted file mode 100644 index 423271c6cec190c331957be095ee5adb1e86b278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4215 zcmeH~yK)*y6o&s<)vUnfz=1*s6FMLua4>)4QdgIc&^ zx3Dew8dc&Zb`_VyRl9+%;!?O~S8<@u&l6X0DESuIaNRDUXI-Q4i+>M&)a@dUtTQwM zraQ0;II)h=3it*MJBKr?hmC-*h?j6-9bz-!OX4i9tPf}hd@gw(y8+X6?F??LF1i7q z5-;M`+QojrCz3lj2>6)3e-Zaqdx&>%82Crzr_r~z&Hf7E-ZUzFOV$4awpDLQkVZ#!m4`*_sh;zY#UH98J>+np`qe`bJ=M(~ zs?<@B2UU?e{+gy5op`)f1s~8-R6rM-ikAE}C|bl0_7#DWAmIU&9;y4FG)jFBO0d*- zpwvr!3)(QLZ$Miq^)+bArM?1{hSZmaroxl)3s4J8q$QoBMwF3sHbj)ji6!ZsqC%9H zbTUNLW)nr}9mAv&d1dJxVH_1{W>wDoOq=>+qDG&n%b7hqo$_?vvOMn-{wwtK^_err zWzh7-?TYD{du!6T3NdSGT-BNNsaNigs$1^>y)*QV(K|`+Fun8ij?_EVXkoLv&CWNU z3g#2z@!8=&$^O@V2A-6M$;VvvkyH8}1*LCMQu+(ZO5dQOH2q>z`UBx8x$!| zmQ|#T?NElYT~U!D+BByySyPc5cInEw$-0UxQ6!J-WJ5(V=!VKzR-DFusPr8-m485M zS&{Sro%%Qo70{BN7(@5y(Os;{nRg@TdGP;d9`nHby#GcYabL#$m!Kmqg#Q+Nkfixj zQ&W!PL?RK_b*HDNW3gBwk>H%q%*@Qr&d$xvrBbPUKHuqdg870$Bq0_+C(~FEND45z zkZx$v(MB>U-Y3OEQfwuK@W+-&E{NoNku(e~I@(C3L?$KHQ{rPv2!DJOsdbUc2-DD_ zqYZ$+1b4yX;M^Z^4wvI4Hw`U1+HhSy?ee(G6E5feNN_jK-Dz$bT6DA#i}ANHo`~^x zG0y$*j>i%__LiH579DK>>;;$u76oJeh%z_~FPLd)(b0zEuvZR?I?Qz#^M}ivD05yh n)6k-$jYxz=BkXmAy@@d9k2fsxnnj|_G_>ewL;cU!1=Z(Q=bb(v diff --git a/ggdt/tests/ref/indexed/filled_circle_drawing.png b/ggdt/tests/ref/indexed/filled_circle_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..4fba036a48f51ca559100e00d047f4034d1a885e GIT binary patch literal 1826 zcmaKs3s4hB7{@n>nP7khY$^&NoNcC%F=*;gdg*{}(%66?1_;WdVi;k>;o<4D0(#Ob zbXu(1o>|M~X&{=eOw zotxd;u8q-n@_qRL0MEz>bsPXJNatg296EmZ$MPfqI6xb%TS}Jz80ij-MkdgMj!AV) zqv)=qC?>od=#-u<6bcapk;!BzimKIWtyZho>oE)?2!bR@gTY`jnJgAdZ*T9*`4j{c z4yXn|FQ(N%0h|Jm-pCO+xUK}V;NZFjS}m5S#q?S%Q;T7YGBK?l(#>KehKC1d zJ|b6y_r@!;ia$TVPM%+7@*Ar)oVh~UxUYZDGl>Ti4yDE2CGPQ7H;bc(R#h9uhtc{w zdevUy-j8-mTwz?}G!c6A@uf{3_4X0sp~u_xem9#!M5|iT7HnnZ+!SyyKwu~Gn zDh}Cdr-!*w0oVI#?su}wQukjCJ@H*mlqWf{R=w&Kr;RGpxcc(nk$i$QshRH zzaVhv_`0>3p~KmUtZT%QC-zILLyx5?G)uzYT3+v+b6Yw&6z+X!e7L>k=8DngCq3+>jKx8fpevqrhtKF6}_d2yI6l?)!`6db{2d`TxRO_Ip_E-JB&!JtH=VIAoLn=qPk6fH zr|}mj*rCa5wiS*E$80m}YDcCfvfnfK=AO*TYW$K|Hjxp&X<8L*;1?#g-7YfD(5cFw zZJk_W6KT0AoWk%UTVfkejdu-9`MlAUm=e}wAW~SYc%P3t!@4%cHfrb-rF3sNZ|vnT n2U(Yscj3{|qC9?tuiJ!A+k(o2BD5)s`2j>OjZy!g(ii;&dddd( literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/filled_rect_drawing.pcx b/ggdt/tests/ref/indexed/filled_rect_drawing.pcx deleted file mode 100644 index 29527105e6361e6ea8afc219804bf13f0cfef421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4549 zcmeI0F;Cnu6vzJo(V~hXh8r0?GI+?q-~p*`$OrI{fiWZF`v4y9BisjIxbZ%K$D3Lz zqKW|>RAOMbZZ{P^z>`w@u7{i|3skfS;yfkK|DPSl&htB6K5S*%2<20D2g>T`KCWbx zWufQ&<9a=`zQ*Od2CL%&*B}3NeLePl7(4art`mfck7jPEcL6A?yP<_`qfzF*yoLeb#`y?_4n^hR9=@Ka_q)zV>Q!7%(#6myyJc) z`j~in6#T&X`*bJ0wffU{&s)g2|7(ulch@7|;pO@lxZJ)h zjBXi=grgLRr{yKMq5WVmP)cd7jWI=0SZk}QV&>s+I2w({q-729KO zgGB8H0PTSkCF|9LImdf`qKFhov$M9|p0)2$K%+AhBOHo2#fyG6#ze1Cgwkc&7*&aPm-O zloml|d$2z&Uh>i$q&C~aLbN}Y7Y{P)Rz=*DF%R&hLq6?prFVXHblg{|6}t(fC!jPR#I#M2E~BEK{<)VlBp$wi(zpt zr`1KIqBSb$fez2L=W_&l?*XD-;T=^&Ejaz;hrD3*|UC z98f&S4}5Moa2%d-c+TN74(C!c+{tk#!<_)|x#7U`_^8LHJwESoE;Y}+Y3_~kAn>{2 z0DzSNqrfa+Ov++F8I-Xg@VViDQf5$QQD#%dq-;hlMhzAOJ~tegCTla9ZL+kO z6;Y}dRUK6ggTUv81KH-kh3LxW1Yyno17SrrJ}}ck@kGFPpPqsp1NzB&U?!3^|K_K&hF5wTJ@>T{TnO$JEG0!;?MNc*<^S7mVHwd z$(r-mJ1*Y1`ef2ey=*#?K6LAU`Ct4pN%8wy3!cfo?fVDS^X0{+*Ezkp(_3$<9}Vg2 z%|JT*^DQeYevP@Im93A@h(0b|I8fwVR?7dBmM<;tdcQrgjDf08r=%88M8Ie^&piJ9Awatw9rDZ{39R#carV1Z0yHQ@&K+qC!c`H%7@pr1e3&#++R29 zoPB_LdpSo3xIX^6ujhID)jahqKRJg>#=gQK*(9gTk3T(AcjUXx-G3bUlDf1xz5>^; z`?hXv-EMsi?BTt0>(|&m`}G}e-+`w}v~_6faM>DoI(|);Py&>t@7yl;VeT8dEob)K zapyvp-|O{+5K>B|RF-90>!K)#XgZzFX0yd&VXa-QR@?3Nn9m4ofGco=ohk;yfNr7? z1a2G{!*j!x;f-PT+OVnE%-J+R;KqTqytKTwytB++JGN`KOKyU|jROGc11X>!h`e$F zMbM`v2;4YOiZVsHqCydQ6{K=f88t!R#(~x})>LSkXd4Nl_njmoF006sy0x$(c zuM|Nbbg>BnHx7irfxuLt5{O<3MT%m8O%S+oASI>}hZ08;(QAZqh%&_{2;4Y0|22kz GTc6*eO_kjM diff --git a/ggdt/tests/ref/indexed/horiz_line_drawing.png b/ggdt/tests/ref/indexed/horiz_line_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..db707b6ef2e328fea480a7fefd18ade2b144231e GIT binary patch literal 952 zcmZvaF=&)A6vv-!Q7IgrayXO@0hb#>`GyV|Zg@)0_Mn!a8LHCvVP6$4AYp|=|0zAOb z|9iX|>g)e+-UFspExXj#;pqvKz6> zL_*8Ldp`Gk>G|3-$6T|&WPi@NNN8CA&?b-qvOpAL2^7I53me-LI3RQ|p#ud998BP ze)!Y^UHa4nT~Uc5r*yH(INNu0Vf+u0eM_U4{M#U4`EB zbPf6gbOn0f({5H&|A=lo^C8 z6X*?S-W#8#*ZBoFKFD-=IL>dn92_^rbXhoVwdtVv{7l7$J3^Zg>Tr)~Glb!;)keYa z7-%zq`4SkHN7HQNE&r}RI^^DI-I?@}->0`d_PZXN^v>-J)3<^D_k1bQU#Il<P6m&-;@9M5dztIy4qP`)}pS#+4OTH!o_`wr8fbTrh0=VEA62LhRYyjVQ90E9_ zjt0C?`=38Q0RBI@^xyv1#R6`uivzlc7UaffoTo)K;jGWY3HvyjAP(WmE@bsQ%ik0%m|R4OHy7IxK`KpZo%mob>x$Bf1Sc{BhMgTqr`3zJT2HHPS}BySO0TQ*3zZH9 z3_ClJ$*6orZD&+JqZCSCWwuo&ufhSt&JGaCM(&DPY^)Y{tWa=ChXdi;L> zQawRHtU%l#ZIeEYW8g8Y!r>sqjSP4mn|N&Iv4zK2mId=> z%$smH2yr6=LBK@sqjSK)#EFcz;0T7a9K)@o1Md2XCjSN^8 zrLf4rBA!J^7LQm1VpC8!2yr6=jzb0xrE@5YLr7K@;?fakK;a<7jSS>#{;!bkXNuL< zC%pwO*JL!;I_}+iuX4~3t17#Y-T&ukaH5yt4*fCJufBcawpf-`RJZ2c!wIu>)w4CG z8!G*XPh}tRG5S#-Z6Eb1^;5}_t-k*QvL0eKx zhhqizwch!DaGd%~b5pS|SYHL_bR4t$;o>D_r{Iit)-(($O4b%d4Y(TuRI2tHg+$xt#5~>4oRmt;lXO zP-TiA=mY8~ZS3=ri~+4J@bjkuhxSPY|9!;&s%TM>jPVCAo?pN0u-1{k)Zos_ID7Kr z-!~W2<57?LZ5n_2;|%dp|EIdLEk_==A6`DzxtNxaA+GI>($wBO&}uvVRoylQwXyk6GMZ2P6Spca4_Do| z|H9{i>jt{rZ?kE(A!c2xs56wtD%+wz@L;dPv)iljRCwb(Ys5fIVn>I{P^)T$JF&v}o;1jw9 z_RyE0oF0TidI2`kE2%U(lS-zGDJ@+`Dd`q!E@4VFRO);N*Ldqa1>V;ucf@UZ$-Os8 PeowjC1*UVaTExErV|#e1 literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/pixel_addressing.pcx b/ggdt/tests/ref/indexed/pixel_addressing.pcx deleted file mode 100644 index ccc58513da2ee8f1be7b87991f4c62d5efe1483a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4131 zcmeH~X>=4t5XWo50AgT+1QiJ|AWG0tR|q;tFbymyrvoe)?p3bH+2Fx7O1N(fr-A_@ z=W=>5oGwV^+(d2_0t5(%8iSf}6KoAV2}ye1n=gFjO;5du3N#INs>tt}Ih&3;`R5p$` z^DSjHAI3+P)%<5-nGT5p%y5FET=_?WDpaiWXywO(t5hvzxsU-N)gG@NTH}c)pQ`zE zt+3j4>Xr;Om{hO+GYy`7u3>ni=U|)27duIcxTux%1{P_)KJR3l}Y3vUJ(!Uo2no zW&Fxjt3{UZ)ta^I)^FJ8+q8Mh)@|Fr7TGu7ez!y4xoh{Hz5BlR??3Q^$nYQ{CSnpM zV+y8X8U`>OGw??|gop769yRqI!{c}Yf5M;f7d(llFcVMX89a+wcn;6w1ygS}Uc^iI zD_+Lm@OS(JbMQ~h#Vhz1{*C`&o~bt2Mh2n{)-I%!~e0cthXd9 zgp~XKG!#28J{S8O>~pX^V0*y!fb9X>1GWbqUJnEp-Bo3 ztLVd1-X9toDoK(o%Zj47-ELJ?yEvon6$=2rvzpANXb- zeg+x?!Uu^!P_2Qcv3QO7HI}6@W<(a#{7j2ynh6N1HPCgItg}p=<>-tVk;C*%rYAEq z5L9abK*NA4Ks`XI5grN(g)nLcf@%#Eg}N2$QK(m;)CezCJXCR0GZ0j3psF-lrCycB zsFWHJLsc(Tqp2APsx<&0AwVP`E+E7R7XgVt2r&aewFZ(z!X@I8h$0bUghC`2k-~`? k2&y%ZW#W=agiIo3LX3zcas-iG#0&)08kFA2#f1Cw9w=K$b^rhX diff --git a/ggdt/tests/ref/indexed/pixel_addressing.png b/ggdt/tests/ref/indexed/pixel_addressing.png new file mode 100644 index 0000000000000000000000000000000000000000..0bfef6f25c78ca6acb37fc56ff78c59e94eeced5 GIT binary patch literal 1328 zcmb7@Uq}=|9LFboF~bs)9@1zlL!%`RlA7wusm{_YTWTvs%k?hH5Njy1%q?#v0(&rt z5X-|(t@G4Uh{eE;r2m$6rski#JMXeGNvtTU^KRnW^=XgxrI|0k`R(U3voAYa#-wcx z51Stb00>V>*6jjd29o-3p&?S;@?%E^03m?c&L&BZ09d67tX8>53oEy*Jcu+|LgX^N zNUgLxGBT2)D4M1rggTv$VHl3%Fvdosv7(~FY&MIc*xA|X@pz{969fnkhz&@GrPv7I z2|&_|ltMw(1yZi0fqpx0Ao2U1`va294r)6T|kI+5VH_-5MwzUhAf6U94r)6T`&wzXE4X$JO*Pq zd6?lala7Ohf~pGuPy|2}KpKFM91Q{#0ud-!D5$!iC=^E_4TT_ukQ|684Wi;uuuxES zLDNV>qXZghX@ulx5uJc&4GIU7Y^`lE;vvw_BQhB-SDt7%`?L6K0 z>aO#QV^V;poJE7K-_Bz9pE+9Z>qnQgzM=O5+^L;<)7P!_JAcI6yuDqmHsA1s0FT+G z1{_~){t^E|-rMu+I`4b?Nr2h>RR5rx_q%>45^rC32k|++3b2Gs4Y~uw?+zU4wWMBO zWU#yxV8)$8T{TM%w>XQwk9B36x!Q*UOu9I4`GLBFjlH=qDwk*1>TkXf;GU+v%?Iia z-5x&qd7#;C&Z&PYz#Z3C<&V_mHV+gGx8=KQ4Gney?r$%g7^y$pI&#+cYa)^Jm>&pm z^M%<_8}uKnJ%*>{QHeRDH=YY{wJIK*-4g+(R<6jrum9N8pFhx& z*^%?!@=Ac2ZATsV4WC+E#lOBdN<5z0M>GEUfd38Pl5%kToUpkjFtbcPoRXBLYuUt= F{srZFHb(#e literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/pixel_drawing.pcx b/ggdt/tests/ref/indexed/pixel_drawing.pcx deleted file mode 100644 index 41e1fe44a430316631c2b02431ac1f7028026312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3827 zcmeH~p>7;85QhIvQmLvcHQ-=?VSvGc0E0*!un%CcAaG&eJb=MH!aYF1!FvG1gK2d4 z07(M^u0>%jEEwtP*;6-OX+cgZwD*@i`+s8tYqXmE^r8BQG`?29K-EUW<3>eQm3IC< zZr6}qZBgy9$9H_uqiy9OTm z&zGM12XArt>KyL5+(WsCQUj$1N)5cP29E7=ak|B+9z8V7XIq>N?$BJT`?>GES6Bh7 zl}>4CHEeZAdRh^k`Xz-ae>R&LW308#xu$8n_g&X9^L##EEEdb@l8%$)`y$X$?ike48$dXcb}a3^5|GItupDECpGqr65D)vLs3iT5%F znL7;tz5qLL3uaZzaEuEcgUp=<&T-?ob=)~-RmZMn*YFr*?lkb8Z#;LNZ#}c>mVL+m zhQ}atrvX6cAOosFq^b#qa86^8xzoTHx-?W9a)wCd$kb#mX$&%V8dyuUr7KIPx# diff --git a/ggdt/tests/ref/indexed/pixel_drawing.png b/ggdt/tests/ref/indexed/pixel_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..618f9defd0f9aa0ba4d7c123b461ce9537981946 GIT binary patch literal 998 zcma)*F=!M)6oy|sInR^8A!idJP7&lJE7>B*fPuWoo_b)ypo^Shv1J6oS6WQ5UKgti ziq#fpAzUGnVym!CB*j`p!79Zei;V#hm4MY#oJloHw(!l*%-ipqnQC@Jt=*Vz&NKmF zx_2|U4KRhK|JkUS`TF7NJ%AdhTVdCH0*uXo@z_pg32htNVlzT!I~^^iHM`sGwh+Se zJSk-m1WKtWiijwVyh1Q&C&NNRn zv(1Ec#yVkL5)Q2vY0A4P@27l_GTR(*y3gq@mxV*C1pv(gNuUsjY(fG_FiU0O&}tzi z1(HHZktDK-NQNW>Dhr2J3#F*9C{nbph-}tLMWp&v77ncz0N4T)fIcAF_y_`_g=OK; zY9R!61o{G{K(vu4d=wol3x`$<&qLqCMGu!eM4Kh_7SZ#uEF4-b>@z=B=6!Z_{K4>7 zy;uz%fuRk7E(fAZ1UtxL9a{{R=UWu*WB literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/rect_drawing.pcx b/ggdt/tests/ref/indexed/rect_drawing.pcx deleted file mode 100644 index dbfde845827a2e3ce1165329bd910712c28c952d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5116 zcmeHLu}uA!i5WpEs$=Ce1HoVlrAaf16<@2@&Obn^8qeX-El{R zA{6B~iGm_@sSZA1B(sw!(Qf1hB!swlceI{;Z`WQw&F;wlvKO`B%J=9A6phqKYCX@oo}e?@`++K&Mh@Pc?pFAxBd+1lsKNve zci=>uZDQ^YYbB`gvtFCG5vu*B%6g}p26aK&=%Bl<(P4S|G&(do_}S=v0w^Om~)VI(Iq9xf5-)HvLAACLTV|et5+7K^U=*IQYG>skau|)aEUxn}1er zLw5M6cl`Tp_2eh_A^j;jV@z85)xTcs7_D2pKlF9+6Jme?Fc@g#E}6QS7I8Hb(PnXR zt{dNOw~aAz99wHUolcsjd7d+Kx7+RYdi{RCEX&boG@H#9M?_0>VSmIH8d6 O(0XG1v(0y0e7*pxrMn&g diff --git a/ggdt/tests/ref/indexed/rect_drawing.png b/ggdt/tests/ref/indexed/rect_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..11115fd475c31d2d12a03d65ef55536bfe114e95 GIT binary patch literal 1362 zcmchVPe@cj9LIm|5~#Ier6gtRKp-9-_5_nTZ1Ag|mX^yS-a$RsgRIQc4Ij?*s^ge#~fgrvNEekV?toc7_}pvI$p)5VEXv z?$BLbQBlDdQxt`Bu4$UC>!xWEk!{;ULqo}A(s7)rsi}NEzp`E+2n$3S+|91j0xSXO z9^?g{G#FTxNLV6mi8)IM={aGgg_RJN4|vjG;5cH^5jjW9J3>g$3nwR>N#O^cG#CI- zH4q0ffJoXP-~`p=2c9$-a84R0gOkaLq)p-magF@IlLiA_rw*M=oqBa5>0Z)J(mTix zJZUfhz;Zwar~;z2iog)c(GNUnFklSp7^)08LzL#oRAhDN2c9$-C<>|yHYylX5T#?N zG@_!SA9&JWAiwz^&HbNsmi-DK6lv8C7z2sL+|jl}4S?C+Z2$eG6Jx2$w!zQucD3F6 znz{L_M&-tX9y*sg9{)oiqo$xnZ=GbL5+;b+x@Kb+Z~#~=GX4cFhD zcx|72aCYM1uzh2LvV-Bch^-z{cpe{n^rGwf`OsDS&W42>H~!ms_HEy-ef^`6mCLdh zV&hHG%(uwqfiufbFNRwFySh&;FZQ%djDElLvUs4fXwTm?(>YyICAELNY5kp}GfNq^ xb^V#vo@=!)%+u+G3!&)l`m*KP{MxN%uh=ysU1cNZw!BHogIb&8+Soz!@^3-K{6PQ! literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/rotozoom_blits.pcx b/ggdt/tests/ref/indexed/rotozoom_blits.pcx deleted file mode 100644 index f94a5213667cabbdd54987164d2535ea3f514bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6482 zcmeHMyK)pq6z$o^l*{FSfRJEA2OB6L*nlcepbywU0ii;|`G5`h1U`U(P#>_N67|eJ zz<_LHFm@4;7>kDxAaF}&#QL0jr)PS^Nqw49>U&-=|Z0l+^OZAtZo+nlMg}WylYNT7sj<_v?7w$C(D+`D@ zkDp@Uc+K4&_f=#`7wW52H$4?lqG#%W@1FJg(UheWZiz-LF!qP@t_+-X=_v~?< zN3oOv4}1#X1W+vw9{NO!gn*Ii9{kvYZI$=|s!V93dFc@l#r(7iwxKMAYj$~ZY{9fN zR*Oju*6b2E%Y#QyJkyEv$QBP4F|%$5L9Au1fgr3?ri(}L$S7L^MoxI}(+bRd@K7YN zmZUlz7w(m2N7nF77SE1lLg7j=L=-Up!dV4v0g!|H4FpA5{0@%?a4v!PM+fg?IgRr8 z(80epb}nlRJH^n|#LpvZC<6wAkk^paw#Gu*fw)?zKr{srG@gKFA7XL?d4+T8VGz9% zQFGJDVien{2u1!|gBlM_-g;7m$4l-7U^kkfZ)7n{IYU#(;yuT(vDgKkX_*NS5%iwHR#4M-f<0(7HQzHL z7_%noVn5}#Eo@<+QJkqw(Td7O;JHf533^-3M#vaL_p;=p5#azDdsmJvN+KR6ZSDs{ z@8DVV0_QW3RAm8PSiSC!z3S2VP)$HrXJTThH3&I@$if z^Mpy%QAhAgnmxJT9XVf_1-mfQ6uzF~U>2M)o{?(rYlz%&Y|t*rI)%Bf`SL*YuSnxuuGlPH#aB z?OGy#(w5<5!C^s&WyyuiA{M40tkSUE5nol7EeD%raeHc7Fa!64sf8q{GEYGPFSk6Fs7wbUmXBxLL(%(c zT_VehgM^8N6KPAsGwihL(2Q6?sGykQR?M()hd7z#cB~tKS**De>&F6V3YTNWE34~_ z0{-nj9o9yw7xXNY#jsf&GF^~lUQeb^ZbAs{fbeCAdm1f#eJy)$b)kFq&}a(+2gSF3*C79_l$xZ0{&uR;ErUb6RHyny(U~ z^T|ye`k~)(*OU7>--3KD&);w5D4rMqCC6^O*Ti8tk7S!In|AB8y#DictZMLc;&tSrQJoqKjuvtR<-|N>+hKjj zvM#U-V#6iK+d+W_p0QLb5#uc`Si*dDEvD7t;Jpvbr>wlCRrdd*E!OA!xYm4FMhp4o z7zgA9@V5&181I`pBHdGz%HP2V%vT1CPIpSYA~5W8%+~k(ZBKI?hhgegMOANxoB?zF z0$0+2`fj+nlIcrW^Y_7@8oGpZ`b(U?>)mduRg!5z#+EAB#y8*75U&%#+Zaiesids+ z^hdhw_!3nW;^4PEu+-=DYL_Nf?!B59MOik(O9G;?QW3vI9`ixvqvxKvtk5Mp1YzU% z4_GUMUfv+__uJNzHwN@1TkS{!f{_NSay$an zqhfPZJQx)P?+3+bvlv}1Mh!#&U5*%!i+o(%9~V30qTsz#jPDoYyl5f<=yHTH={b`Q zOuA;$l=oU{2B|rhHW2}IIbtwKR|o0ZAYC7%Dev`ku$B&1(BV8XK1?qS z)0Fq6bhw@lFQ!dI09}qSCOKo0o=H|rlJH(hOfNBKk|rX6E=Tlw$+x{^rI!qPNy2-O w^j4DIw@DKbK$j!>{bZ$|obM+W`bon3Lef8<^jDH5B7iPORR4t$J|I5-2A8h&&Hw-a diff --git a/ggdt/tests/ref/indexed/rotozoom_blits.png b/ggdt/tests/ref/indexed/rotozoom_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..f36f474126efe6b4244e1709a1aa8f55665f9e46 GIT binary patch literal 2602 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 literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/rotozoom_transparent_blits.pcx b/ggdt/tests/ref/indexed/rotozoom_transparent_blits.pcx deleted file mode 100644 index fe941ae7b17cd133357cfd92c422b3a61727958a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6542 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 IZtR4A16CG>n*aa+ literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/rotozoom_transparent_offset_blits.pcx b/ggdt/tests/ref/indexed/rotozoom_transparent_offset_blits.pcx deleted file mode 100644 index 853bff8ae64bc1508d62007488eaca29ec5e4c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6542 zcmeHMJ9iUD6kdbnmDXM%>v4PtDpaOW;Ua~KoRcm515~(3=`!X102TZMen1LJet=3E z&CE&*36O+5NDc)}2nHLQhjVeVpnP{`AG5X~rXWcXYr#ABe)lo=&b@a8US+B3;ODcY z11DID`StyNmV%`vNFKhQRF2-Kx>}7Ws?~3sx2b-U6#I&pCQ12{qBYI;fXv_4RQ(S4 zo~qC32TBz|{1(-tRY}sXN!B2sV#dkXvK4S z31A)q9nVwSm=k|uI$*;oH$~bW8`#$w3@q(wksgx@hTSosf|Uk7b81d^>2N_hjERRC z&knI+JvJ;WfQG)$bUQwCdWH|@)O@~4fAcE(|6NDm!^9ybS<9kMBsz*zO)lr8=cGEK zF#&NxQ9(Wc8N@~n6<$!EfEt0iQldVlj%udlX#w8N$YKT6UtN}z8wD$Bg4l-Pm0494 z9O#nGSz8#guq6zALa~j9CKP9TLV`+qcCk|wPs%`_aC22`BIiT}U8|b4TR6;Bbhr}? z)t1y!6>Pj<@W$68Lv~ee;7Lw~s+@YjR1i9{QV^fRmvxXzIg*{(iHbfT7sJaG=tHR%fkqa6D>OV#dFCd02hah$uX@TvN zfT;HKfV>DPfJIn-gs@_m3YOhN=oJZ^me!H3L)idtSvw0+oaTy)DdJ6CmNlaB8v6<= zA|lsYT-NZVBo|d&SodbId4uJCL%JhkK_A&@LF$<)Sr$Vf>rE;YuNIUrr)XM(W03Sc z1xa|a>K{>S9p{)^fNbQYj=-w(@Veq2;?PKUMxw@zKzI+ymzeQ4uvd6ICsa||40Hvj zf)(Yygy0POg@o{xcLRY1d=E)LhnVPk7wn`ukFs+A1RDOWXakXlZ83U3L+h@=J36mi zKK{yM=&v|Q9#pMK20!Keax+OCkwD&L?^gg6Kq5OvE#jOuky$luE^nanAS#3?A)Y#SIgMkd}Psk_SlSJzc9UqnP~?)U|E)Y znX$4ign0V0#v#`%oRf}7d(knrCs^nR-k>4j;OfT3{bY`+m7OX234e5;Oy4nte|ml+ z5_wOBd-g0#2s6tXSI4?|ECN@PLeI2F913)&2_N`uLmX7@Sf!Z-qCTef^ntK!A~~QH zqY6MKDjUc&Iz{6%BmpdqC)TN{)}YbivRxiaDG}YKm`FOYnA_Q5;2j~QYJGwo7Gvkw zkP4p>Ik_%6Spbk`9D!o>VQwa8(OS5wEe#&GBYC>qWd|X{E?Y9H;94 z>%xb)F4S<(F*l5}+!Yd9uKoUAw}jVP;=OJMEW%!$@lt>h*~ta|{xQh5^o**=wbr*Ho@M!YvBLRIFvR!{f<#jT#bNXw7qr6^S7nEq~p`$ z9bFVn)l~S+(}Nx1%h^17(}8Z2k9Z=RLC!5o*ZV7m@+d|J;EI3E7(KO90-AxD)o-%8 zhm*h;L-}8y(M6|pk?UCB5F!1J6{2k^{%?%QVxwmp)yE{enM{lug6hhR?k_oUm+<|ei+j>W_eaAs z;77P3t1b@mM)z(8Fr440vrk=hQS_H>(E z?JERuTt0#ixin-JIG%>t$R8Ba5zA`Bsh(4N$rF)h3g4iNadipJC0Bqq*gn0UcbkkfqRTu+=);sj7+Gc4+2#%Pp$IZCdN zlKZ11;pcubx}J=_OhzS!MP1Aoj}tXc?v0a2<0RqdQ8K=lj8#%*Sk%P~#|gVmIB>#k zCk*-74xK^hbi*>kqAq3(2I1Bq+#ZBGgD~W0Cmd{tgRQX4u&9d}!(sUOFx(l2Ukt;L zpD)7UPB{ELEHfnJFK`+`nPE{EGkU$?<6f}Y3kJO);Aar@ wHiO>BL78Du7c=_(V6z{5(holE2LV5y2K`Th{$@~SSk%Rg{J%f!7o5+(08M+-RR910 diff --git a/ggdt/tests/ref/indexed/rotozoom_transparent_offset_blits.png b/ggdt/tests/ref/indexed/rotozoom_transparent_offset_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..f12aa637b076d3523be9762b0524e9c4bad2d49b GIT binary patch literal 2776 zcmb7_c~lcg9>*(?KtRDDV7Q4hI|E992ng*Mu|W<+l*j}Hbs&yhK0#Xqxf19_@K$h9 zZZKX55(p!45sexL6(p$fmKBR{Zv(V*Q@^ZQPxIJ zElnd$0D#uIwQjxu5MVqWBCF!H$L9?J0H^|%H`^WW0#Je%P*S3-@P@4n*~$yU3me0f z)%OMu@zHvEdNdl1PNzc<&%rPv675MYAL1~c5b0R$m#5WX3$`W2E$50FpUAzEaBN;hC4T)(_sc3cA&#dIt(ktgy{}2odM4VGu*j> z@|gd}g`ZDLF8Txj^~`l{F6_91k8fL}F09o%)LJ31>Lq5LI4{^Bp5DexuAX!_X?bj9 z+#7s*ceT7EIJB(D#kJG&qof*pM*{a1!NBdHTB;WA9~`nmz&V{P+snH zbDJ%bo4s8gJEq$suWYs#T()|-@XSDHPPpzAHT!H5*)|yTFaBganc6{a(oZ>(6lLCL zyI@G|*|@y#X=@R$(ZfMAkW6GIYR^kJlmEk}2uiDzK&O@T>_4CFx0}Z{y86C#0m*zyasq$(*T`De8@yP)#gxXNXF{d+FPAR>ni) zM<%4|!4^7{6DWsB{E=orxJM>?zzmg?|KBo_j3!vqtFQV>h7u1Re~^+A;CE*%_DaGv ze+r|FZ!zdh{fnG)x-Cr)DRt6-#JxhFy@jg22&)TqL9TDL#;7XV>j(!GU0q$bZgehP z1+F^Cq_1@XbUHXddeLYd10bMa?(EnH!tTvWfV}Fy$uMSK7!f;yevdtbIC0^ zsBt{%LGq@uT$YBk3=q15Rv){3a+;uKEZ^c%C3>S_rfCq!yDJv^6P*YQqt`mpzZ&S> zPc7P0DI8g5HkHB!Ui6bGI8U_^?4exaSB)9(pFZjBs=)TI=p1741oiH!XMf1u2(cthD$$E9r2VMVpsZ-*jd%{&kF;tkh zJli4%Y@6h8xr%ePw!mx8twN2V;F~3+a3=ZKojj?!fK*%fqe2mel)lfw?srgM^VS}? zf_`Zgw3(lKX9v9O1cQQC6F$rIDqm7tgj#&;k8@`p4Fof#&FU++qG`h?buQ z3Y@I(zF%eARAdu{PdAbs+p@)2o@BUEp~Esi9n`;&zk@m-+W8&yU zrj$?{FeX{=Ui;4^4c5bEg3rUMmgqxOhtB2NNI%87B=g{;>h)-*!AZlZrIp@;#Gr4d zCtt1h?*$G0p~s(>QhB5mM*Qiv55E-Xlj??d`%r7fwZqb`fAsj&2cBsA98c*yg6{ie zcTvJtib;q=D^%3^VO4?OscX~gb~AT>c@dD#F#h~<&W}%EX0tG~u{^$+eyL&jg8P?| z>g5{YRvW@~WSi|d9dXU{Up*!Iw)r8Yxw0s$z^FR55hLo~kLYr>4x4aGEendwKTj6* zBBwELMJ(4m}cj||`5OgUj?oU$)u4WlB0{P3(+&9%i_ z9KF+#kXpeFWjG&4(IIR4nhh!<4ED=whO9_XXo5gQN!|xCOyIxdn5a7e7#~dNW5>0V?>^T@`V>k{T z^KO)w#7^ttFHkq^_+L}$-H7jr*40m+aQe?+6=4DC(nV9E$P?c<;42GEYgD%@^rq4N zm26mBHURtS8tu&wQEppa{zpXa);9h>BKUO>XfJVomuRxsqJADo;>D0Ir&F1(8$X+7=*yCO)cg0i ipUQ|$P#;m9?3#{p|1E}o+;>X(+g|6s(XGOjlkzv(?y5cj literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/solid_blits.pcx b/ggdt/tests/ref/indexed/solid_blits.pcx deleted file mode 100644 index 1eb68255e3574817e4f4ddfd66bb1f19d4295086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5724 zcmeHLy>1&h5FTo!#UZ#Nh07FMrr1J7iY)>h3q8OVDpIOU$p_fNkKhML;nEMVrJJl) zvI024H3y_f;qHu_FXsRbn1YCIh7@;6nd_6XHZDaZ!Y1dNA96Uuq4;RTegXXa#{L1$ zR@B|^!#HCodA*-h!~IFd3$}oI7{7CSHJpv+plK1JgJ5qh|CXM7%}`2fx>Nr5cq19& z4@eUKTAq`w7Ik_NTBR8pzK>me3$qf^wU%!lkjtNswPmTXH;+HH2e*A}=D0g%R=$=b zVf$;j)GIZ*7C-yi1OJ~N-s&i(-S{Zq#&eT&W^;(7)36%e7rip6=;)_p8&)Q-T{2SO zLCGfYU6V)|%-w7>4nRt^H{ExuwX&A|Hu@{3(X~8}Z{#2GUviFHx0GL-1M(UVB345+ zL_9uYXRsI|S3KH@Z5L&0dE=X#v*pOOwqe*Dpg5m7EJxr>$1<4x-iu+$-i)vwkcRX4 zsyTCA9ZNtKK$c5nsZ1#QoY8VLpy@cAI>Lt`?m9we{wKSMBeN@a>21!}&jIr$EpV<~ zT;x*Yw7ZxnX>^6W(&sH%iqItk?Gjz33{3HeW$P@$7`Yd)O{Q(Nh*WJ(eZs({?a}KT zH~`IPv$8JoIZB%E6>hKX_f4sX*0XA6dLvhu4?2X6QH;X{tDq09ri+bT0_v;Te1tU0 zfyPD+4??53X>CMvw5kKGp)Df4Hjl51=6lI1{?YfgZd{;b9XmUr@Z@8?$L%hXK8zE` z-1m&zogjS?UQVr}cN+VvwW59Z=x0g8UAVzo{^jnH_8D2Qvin@O${C*c729SD)G?PY zT)-TTU`^T$2byrFJYMh+r(XuBt*KO`nGlLF=@hB&qnjY#))Qe}H~Og_k!DLF>bKCC zE=cD4P2arisNapwYU!IsU3#i!)@%7%R&iS`XdJV?arxLTKURe9|vC(OtFYI%Hxj&-KTb#yv_XCDI$NS;3 zbL)Isxiv>CVIFPF!AEOpSJm{I^;_>6S@X2iJdD%<9RW$JgC3ZE)sI{!Z~}00LVxhz zl)6*;DEv;9qCff{c9H+!;2=qoG)=QCn@lEop3i18A;jU~;nC62@$qq4maEn3;^IQ{ zD-NmvbqXkq?NmXbfTJQ8aHwIRDAcP$ofhgtp%k?bsyJ1}D^+-aLk$CEsp?X_FV$tK z6tzoLzE@?fe88cG0RZs?L;5?0KgvuPk@hsb82G_35Unr2OMe`ND}@u;p2p7 v3Fp)@o{V|&l>2}~4FhS)$0>i7^5-e%)SmP78BfRD2OMe`XdZLj4#wxdGymK_ diff --git a/ggdt/tests/ref/indexed/solid_blits.png b/ggdt/tests/ref/indexed/solid_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..34c93b64f57ac2f18453df40a9ba47748412650e GIT binary patch literal 1919 zcmb7^eNYoe7{>QPNTU`SB!CrKu2m|QDDh+DK+v@YS~b!%#s~r$ENvXCc(v9@IOJ-r z#ZpAAip5Y6+X+<^FxMawC=*es*l0%4pnzcz`A`&rsZKq#ckqYFm~p1N&+P6!zumpP z-FI)7EcQc>u@lDv06Z3bB#{GvK&IW#cVo(!!KLv4xB;0|5zRaTP{L$TQoH@MYEwu44r|4>l(0O{!(J% zGngPP0B|D~Nfs!!>iSw+Hx)x6XrFP?^!%2#dca%ID4nUdCja_$-4{t=*ZjUsiG*i- zn+pDw-~KZp$$E77_UiMgnOb6~B`ossz3V%3YmJJbvgaJktH!7Q$UXmT5VMP~iY_L8 zBloY>QbEPULtZJR*Cuhy+#MUnJ=vRH#h|p}Tq3748$1{wjY^K$=uS7(B-YC7+{Sl? zaH$L29b@?3g7;7FIY3-=!B|Abk@}xZ(g*}l{^|>~_*iKiOSEQ4gjYZ3m z%N@lJ79a*c$+NSAJ!P8$k+?@4`-cH9x6|_tEVI?V?fw<=_;99BFkNjuztNt?Bf2zS zde_}tN_O>x?F~i7c?*pGb;|Dz$2e_$8Ox3zoiQ}aYv_-MyJ5b2>Ca@jkLvGFtCR`T z)JYyeuh{W@OX4f;c9seQtWjD`$6K73@yvd%=lv-Cym{u411oilZ3}N-9mC;`o||p# zm5SX1wNofv_LwbUfs<5|k>puLjqw#a%gx|doan*Ci$8>k)ZqsNWreWmUYd-Vn`_v5jltP=wmA^dY8eai>NO77i z;o~|t`^LTqNf#F+gj<@ibMV>w?w3|o4rG~bamSwPhAB85b%nO~$ P{#_PD$4X9qpxXW)Q<@9y literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/solid_flipped_blits.pcx b/ggdt/tests/ref/indexed/solid_flipped_blits.pcx deleted file mode 100644 index d45349a1e7d8ea887079ccbb37dbb83c1f5276d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5926 zcmeHLt#aEy5MJ4irqd}X2rLjR5HJW3=u8jz0R#*J4GZr91o8-ZfPg?hfS^ewxp8Nb zPGLboSTmje1hk`oo4UKVKIzU;6Dx|_g4h@5?%UtnyW5lY@s9Th@bl994#Hbdx827R zo`;f`?W8L1Z>2x?=1>g$ccotp<}mkk4^DP+aItwG`Fa}bAz$BLmS0OpJ|CRy6t~O2 zHiRo`XxGy~8 zV`S;4!#2qH{MaxeuvM5hzHJhbUe0^of+@dbt#LQ3M%}XPw$N92j4rLetMaN!l$TYa z#NH|?62?jKuW}X~TeO~Y($UseX_Zh;$mAU_JYm?wRLh*}Xjjft|4W0dCaqt}Q=hM! z%_Z~&m3cRd@y4f#^5jW9O4wrSQA6fApGWevR_}^kTk0Fd^i7DiHTFMJ2S*Of;wBP9WX${3UVRW_@$}S14`$tR;MEsjd56&#iHFTY46i*FVYyMi`%m zjL9Fg)){Py74$S<$rk;52QhFk*a|jqY^HMuYSMHK>7 z7Jgpudqw-c^|)S1lE-~vslUtEbL8*8#ecUZg_A0EOS5W zwP5!%?*{($+Y;TV_&2#GE&h#eI_3xRe{1~sIE(t-`;hDsZZ`U_#&MnTnC_1IS<7*5 znXCK%dmhXxub1WPGV|+1Lt}r?bzCok)(2h3b)we#dTqz+^EF%Ke_totPxrOoF3Om4 z02dngDYq{5u#Qf&x`?w@urY-X%!XV_s>?&GqtDj=T#B(@5j%3N-jqyH=8r|9y1=x0 zpED9%e&Upf@vF;E4HD*Uf@Qf#R+V^GZ)&s#Rb(n#wWN6up(5K8U9OwL6ks}~AN)6_ z?wCFbzhkB7NB_ev^6&2M20;*pVH8E9(I}4N$z&p>JUBQwJUl!;K2Fngu~?j+pKE?4 zKqa7NfWp{j3K9hZ71;y}Z6+j%I!e?mQ6CefsC`t)OeIGuaR?ULOh{8zr0PSeE>fka zU8wYfN(Cco7Og?S%;UL^u>K!9tq}Rax5Z;Qss#$oCfx diff --git a/ggdt/tests/ref/indexed/solid_flipped_blits.png b/ggdt/tests/ref/indexed/solid_flipped_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..3f9cb610200e920fcb4b47d661b4693be0747fe8 GIT binary patch literal 1890 zcmb7^4@?tR9LL|apcO=!U?70;Ty$Y_!*1d@{%D_C9Ax|{tUv*ks+m;~`@|6WQ{X0s zMHZ1Q$aL+XZf^cVgQE^36>Bk!$YgU>ER#Qn5vibt1sPV~{@kI7ZPu9V?wj}CeLr`< zd-s07cl%|DA9#5LcmM#r;$o#K01%KHkBfv{yKW*O0{|hA#mi&3O8`!ACpd9}Z@5m* z59R!Uxl@iY-%NMhkh|O0*Ow$oilS(mmP(~EnM|ovB7_)*si~>a>-7eMp|i7-W!dTb zF$7oxun}+%b24I}!2oiB9D#%D8fY|Fr@=-I?$cn*s}F08Sfj%lC*a_^1_lGZYQRZSl%Z`hgm`U3G9{8JkTY;_T>}81H-IF7VgMm8F$5$8-q0C1xUK<7 z!eA1LNl23r@}eOrhGZ~w1`e)kKv7Uk!7vI&QxNishEy1&#LyWyxUKTK3=^F&!8wR;eGT1HH45}4ig%@Xm?$HT+_-%#Y6 zx9A8Lo^Q{-iM)RGxdpB1(3d0yIj55-q6g7+{-CM`b>=G-c} z*0}NfUun5z?o<-A2K+kIc(Sr(^2@>JSKNfPK?}T(DGJX*N~)Z=wJI_|3paM zM@#gKpo6#)yS}Wsb7Tv{`W4$(9&ex*R=bb1gp{_??3HqY7<3muqi(*(=FlOeiD8zl9?%47i9NOojY!t*=qrnl8yty?wx;lZtr5c#`YY@D#~roNCjDm+=?`< zgki@lnO!RD&EN0%gT z;qkyL1;pI8{nsVZpr)blz|eBh46ChVxK1L)4VM`~zG>fMc8=-|IOcw}z~U}7A%VFv z>LjyxdUkiTUL~IQA5!(NskslUw|-tZMESLTaWRQVe)0W*;OpMiqq>0hmtO#EGxWzE zuZ6XI9HG8FW3fs#^s0tjlyuV?)6$X+#?vT35ik_5Y4SA9#+q%m(qo+`of-^O7Bb;-2dhJ&d$P(1JiqP3M4(3 n=tXS%n4(NIknI*dZl93!^xX^0T~s^8|3Knm5~XL?DEIygo@)D| literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/solid_flipped_offset_blits.pcx b/ggdt/tests/ref/indexed/solid_flipped_offset_blits.pcx deleted file mode 100644 index 5c35990b0514d7a38406db965c5fa98f36825316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5926 zcmeHLy>ePP6c)=rHU76 zjFWMhB89unWW3oF@yLZ{*>eQ5KByhBElaX&dZn<+OD-n2K(Au33g~U^%+w#s;q&dV zDjw!vModu#FUB(me`4-0#^PvDf2J<3p zwFSAl)x$V`Hx>M`va87=PiQUb&(u4U={#Tgvu`T!@73Xbc|H>}^+mn+cur6%SPDR!U}fAbYgFQy zT5qCn)n(zEx~#yv3h(Bvx>W_4kwoMGuZWV&$vjA_vLcJ33_49wlT}&&XEjA7+~&qR zuZ0b<@Gdf8o|`yflPn7prznDE5#!`l(5%km6a+L0X2f%#nZu0M(!3~NtHM%NuhoTD zlv$Zuf#HcJERp*Cv=St`WfI+mM0c9k>IYgDvi`+nU4X2MW*$p0kA^08VII?H5G)af zCJHe9575GrFsUue;?1yC2T~U6u`~%E-UZ2Bu#hz@iG?tFDjo$E;zt+hyJ4%5hwvN} zN>-b!2wzxcFT5zib)VZ!+nL5ue^*nF+dJ5I<;ljRwk#&>O%b@F!CQbOdoyCSjbO>K zfIjNH1u;9AteZR@jk#6Y^qf4EeG$*CR>I@S3fH*qR~{!biF{ZWmifnwa}FPVD6BVj zvwf->{yaAycf#`W&64NljpE)Uzk<3qso$f2_q4oGiT*Ojq@};qp*7dfV*DG^ho7@x z-#rh}FXGWc|0{Kz?09pzJ8n!?9COPZ|KFT(lQ`;``c+N5WTU~c*Iaj;OoFjjTX&pn z)W+WKs^h!)MoZ+s{#(S36aMXQN8@*J3DB1Na!(w!;SyqjK1Nb!tUg|nMHxfx`~dPpyO#ghSHg^{iTrJIU3Wst~$5BM5j zcYrSqe*>-Y!+b#(^joc#@B5ujCkTRGuh;MQhr=Ob?D+Wj-P(MZ1?>GP5PG}0Q|Cp|jXqqlnG2rM*RFdl0$)*r|E z^H^(apY`~o9t-UXEHqs}2x}7-5H=u;VH+?KFw$nOz(UgnLBM(e8w6|^Fotc&f&mM9 z%oSK@x}e`@ulsD+XK(t9VSB^+L)L%IT!DqA3kacgLVZHJgi>r>N_80y1@78 zbDws78u*lA3#i|v{&VUIEHquv>CkS6zUa`G9ZIpiq@5SE)1|J!LemBDwY1%V_4zm0 C-%Hs5 diff --git a/ggdt/tests/ref/indexed/solid_flipped_offset_blits.png b/ggdt/tests/ref/indexed/solid_flipped_offset_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..ce391c79de67bbd4a0a0b820c9eaa607a3c42f8f GIT binary patch literal 2068 zcmb7^dr%Wc0LC`~gn&XsA<8pj1wo>O7MUwA7YJG`LW0TmT=rD{ZUS43Zw zs)#6xuHHAQu4?qkl`FYiE|15&6YK=rUnjTFEs096yI12tDOz;UVwry6mp52q+veH7kE;YAd_0I0c|flNl-l~LU? zYFI{5w1z2JHzm7EEd*+=W&i-P00;v}1Q4PnLI6X+0xbk;u4aH?NPr;`hQt^`w8RJ# zAxwZ40yS4N5DHP45Q&8-PKXe#I3yG!VHjEn)LhK~0LTWA3m_jrNQ(~v7Xmh12-IB7 zfXjt;T*&7_j0+(x408F9YX=tsHCHp>@gScEoq5om2O%wY$a97~K3oXYT+M)v`F}1| zKJ9R#4FK&&egZF1deL})&;CELRWLd*EMJii28v(3je1-!jncEloKL016`(c~6Q4^X z4riRaTl$3^ljXzqv*$CcEKkV?kG=k8K)O%a+b~t}vM#C&pGl6#o#zUSo|k(V#a2~j zOfM&VhZ_lL)+e3JF!nTfsn_(8EA{ja!CC7Xu|fIli>YMNI#*F?-?6-8KdK~yU98~{(bUKKo=e9w4!u^5eHPZ>hlZK(JxB>0s zEWH(MTdqGWB>0SIdY1ofGz2D@k9|K|pZerQim}IKZTBm4n=(#@I50-(nG=@I$O6dS z4+wenm#IJcG5n=MQaZAG%!K635AcWG8)zz!hH?~#sgXFstts&X>%0P2S5eM|)MtK?O=@q*E*6;MiIhS0>a@=y}k_kFp zt##2+5Bt6Ah|yJIl1j2pGOxiMcw%2h*e#BN84%C0?c1d6J;QoPq`6B{jmgXa)h^W> zBKDcBm}r@un%e=+_VeTy+H|Vy07v!3?8TomZyx}WMZp&Eo+V5dIxpR( z?JufsL`YK07Ku#QkSHYcpzDK+H*at@XPU6rsvZnmk`nBldEM0u=FLa$WAS)%_Vl;c zmrDumd<0`uoBcF7wUcH1A)1Pwb~p2ks81O>2`z5s*CyMt6orB01$phW_I$#p_|ZuC zKYhzli~L|yBx#`NLFUZH0XOr#cZjr%sGEt5?gqXW=>-i7yPBPuu9ABokQx%FD*y#BL)!2sd51!Hg&4zQnx7;;>PAWo%0_)9P?y zPOH27By3u(2q*7Ihr1ZN#@CgYlGerdnWcK;J~OEVr*V!la!ANuzn^vF4E@XV^9>MO I^A;cd7ZG_=2LJ#7 literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/solid_offset_blits.pcx b/ggdt/tests/ref/indexed/solid_offset_blits.pcx deleted file mode 100644 index 3b5a19c3fe8df4fbf611d421dd343547351c440b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5926 zcmeHLyK);h6a~XKB|b!Qf4gYCu25cW4Z z>^g*9(_yzD?4}O82Vr*yH}au1QHJ@~VxkW7uf;?Q=3k3J{kC}~7S|tyR#Xb>Gp^1} zgrIs8A$!Gw`&im`y>ATKwTt3VyP;jWm?$XSqs`#UbVtCIu&cV=x1Lq%^=G+qB6AD> zjO!)rZi8`i%LaYC7YzZ+_G`qtd%?1u7;W^UA;e)}qOW5sgxOiz_nhoXKTqdYN$wbj zr;<+8+j^YMBI<*6Vwii(IGYL7*Ef#XLSsAHUFGoWx%s$rGiu%zJU4G;4mn*^<|yX`oe6s@nn>G)y1$r9Q29pazV1F!v~#NHdY1Q>}Y;+TIo zf=iKm9Ipm4H0i}MThaKF<@XUkqk7{`(kq$(8tqmqey# zsm(8ZOeFC7X~dsGEZ^!_GKsX8=G@K%UXqQ(Q<#rfGDk;_WTFGF$`18)-8nfYFL?oSr7!P)$02C zTJtMPluy(J0byttiuj69P-GGeG@s!6>b0*feD&T}3fp_-Unu{z@-2da<`aTI@j$%` z)Q3PRY#&tcP6b@q1Ov?{5W+@;d4$agW7y`5c#MpgO)$`Wg6FZR$L1bec#L6NFmKMh zDYFR%nopR`*vlDP%-E|LW7uA?*@DepGMiwa`2<2}k5HG;3856*gc6sM9<>Punon?D z`pl&hmwGOx*gWb^sQZlC1Ov?{jK_2`rq9Rp#h6lTFX;F=9Z#rDFwlHLdM#~sV151x DRMC ziZNS_H%ynA?c(A>k|dwcrzlD!5=kTynM{TdqG?*GR2CN(Yc!h1#zup|Fg_ncfE561 z0kfEq76SzaklDx-n7EdKLV;BZtX1G{1;(tpu|kU#Dy%RACaz_m(cnuO+^N9>8jM*D zU`;31T*BtS#I+0nKpp^507(HttfUA~2zVfKVB%T^6oo_-l2S-UA;e0CC@G>u$Q+os zmVrcq;w4BXL8%giSfwI~3`ydVIWTc80|1~CfFytd03j;@1SAAb&>Wb!mH|mZ9ti~` zq(}%^QIHfsk_XL!iEA0~`B1=zi}^5^4^M8Fze)1G_GXPeZ zQKEOHIjX_igPC0sZZP>d*W+Z=M`1UD(uc=pj%H-X?WX64b&m3`MD*ipqPep|OTNDR z*zs2BiTZaAh2+=&Q6HdQxbxLE-kg;!uU36m@lti<(Zk{LG~=y)kSEG;pcY(6cGmHn z2`zc`-a2Bz)tqNu&g!9Z!f)$I<92(y=}t@h46%3m#2pSfg#$hnRc+y*r;j^WI_)*6 zgU8zfI9-d0WX?saz3iI#WDG2z1^?fu9C}o_G3EN4_S-!@J^8aUIY(p1)_>-cUd#F3 zo7uC|Wu#3>_pc?!Ji4;7v%O^X4%We^>(|S@3h{Wd2LpegrOP4vAOFu93tYmH~3)yVT@3>=E@Re0eZj+5$V$-@shK)hK zOKw)B>h|1pB>ZgZUU-n%a``RC__2m#SX}8@sU34C^fvaVs?z=4h)E)ST0d8Nx@A{w zvTmQzqt21*IM%qqZRA{tZHT|lfZBVBhN)kiACO%%Wi^1- z%J==Apf2$r^mJ^nbBlzX&c#0^3<}i&8{QDWGg}t;w(k(?hr18dxDPuC#^Wp3HEulg zvY_?8YQ_GVBjSHt=7E9dgVc<`V>g7Z)6)Xyc*&Stki)~(?=y$2`Hw@A5}Px9<|chB zc5<3Go=24q1JY&MMQW0aoQT$p)~dXmP1-Q1WOHmrYu}k1aZ1zpU}EnrDPh@5w!SAM ztS8SiD3`kbPnJ0TY#UDml^}=23UnweFEIPYPw)<~@ C9T+wM literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/text_drawing.pcx b/ggdt/tests/ref/indexed/text_drawing.pcx deleted file mode 100644 index cd2c924a30c5060626566943ec3a387b1a2b5211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14017 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 diff --git a/ggdt/tests/ref/indexed/text_drawing.png b/ggdt/tests/ref/indexed/text_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..15cd0952c381b163e7c265572fceb7bb3b4a22f8 GIT binary patch literal 4504 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

hHec=GQ12$2iq^}i5%&>Rmm|lX z$>4tUf+CP##c?RT`$B?*izLYElN}RdSnK%0x}XY5aZ&~2)NV2OY9gy|DpbCoi>1Cs zn0%YCi;-1uJ+drtub2OsS>i<-{0eV)I9J1_RozZCI=;(+xP510L=fXhZ^Wko^=I9@ zlLm0yen-E~qtn}vEK$HDN0qvLoL&U;X2tYj$(^9dahnDNI&~=VkR@!K{{3=j=nPk| zTy~6tgK!@Q?W}YoBCro-ycOPHyi)(d??H1$+I=46wq%rqt2wCh6>IP43pMOy>24gF zA4bNIoMCD&Si|gwbaPk^@zEVn`j{_g9%1Mn)aUNov87j6J?d{7jo!9`E^pK`~%^e7Orm|MtBQB-x*ltOr_Na<4UtISG+%}k8Lc0jpgSdh8Z~xuE;Q1`@ zUm3S7FaHGZS`msfS9&d7)25|b8RM&qV7(sq3r9xkj&nkTOasVvV6cBw+3$@6@g)Ps uG^0HIGWsc|gfAl$MU=idj)M?O{Y?j_+yw3Plo506dw-g0|L);`kgR3$L?ki zWt76q%gtuh)ZaunrBhM$!?$*?5+{RFC|Cg4p0~FUUxhQjqA*Kwx^@1$a5>XQ@0p48 z3vr6F8m!d|Kq_je={~Qbo9dMyuZ4KMMJiVxBg;TTM~_d+f^8dX9oNU{l`jO&F#Uy? zsg-J8)Bk;Cfxl;mH!6zJ8=u9Su+&MXor55ihDHCr;Dt^_i$5k?ztDMYg8_0Zwhq_P zZ_5Qpue4KATLB=&#&FlRM#@5T^Y%~3rAu)dUW@nP7g2)$X5wePOJ2fmL@QDB0Uw^w z6EW=rRXA9SY#n9`aqWsL>1<$2TM{gHQP8IpGw`LQkD<_B-;iQPUk{)zAdl1VqTYKQ zE;9i%0%*>GrqD6%k_NLu4>htVRjBuU)Kvfmy^~zWlJ?APeCv(&$|GLq2k5$r3e9?~ z4R;%rN*`4$FVxnHvH~zlPZ>oOtR)u=ODJI{0ffpuVVkUKGX_l2B-b~HVDyn%Y|lcV zPRrG;0-wT6{a%2NO}}eyZJW=$*7RD;Au&`SYoQQ~Q(A~FunLbkW(mNrqU8W!mPUO*{T)L*xDn3Q6^+Lc2J8UWjjzijY3_KdqFgQl8_X25lD5Ytz>A1b}MyY?> zW44~|hqQgoVLq_+=Xv|`MDyr`YpzA6hP#p3zP8Y(*tdA1QI|McdYek0Vz)ze=e5hq z)#wWyy#<19)`d=6-$rvSO%!oW9 zFd5pBB$*@(7}*F5>PKXme3i+gOn%Iy#P(5UM>2aQGY4To{fIo5RW3i|@;sLk+quj? z$h?v+!h-q{gzzVXCxnj)=h()aB%D0qF2aKP5lO;F2_GkXl5mb~!jmyiM%+bMP(LC~ z`HPfKQvNdK9NSBtPI&r)y9f*FM-aju6BZFRB#dDjG7>TJn7IfG>PJKodm6D}#FB_H tYzd2oEPBdZga!2@;+PF%wi~l&F=N=Cv3QroL*^nZs2@>Z^x7SW&tGtR9FqV5 diff --git a/ggdt/tests/ref/indexed/transparent_blits.png b/ggdt/tests/ref/indexed/transparent_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..b14de532e22f8797c1a1e008ff1b20a5ddfc48f4 GIT binary patch literal 1927 zcmbW1dr%Wc9LM)UDgnd^4~14o&!!eeBW6a0(_&pQQBZ+cq7bxr)}e$-a1|d=&hbVf zqhm9}6g5;Cz;@``O*w z+x_jGkcX{zb^gd10N@%DEd2ri46^NEfdgBv8wphc-~i;C6f*V^fP6NC{CuupD+Sk7 zaEW2Ff?>GgZN)a(-kzSGIF5_OVuB!~QmI@nCrJ_^MALLeMn+y5JFpE<=O{0 z4t;Sb!6AV|$cccs1meEX7FfCVfmjSBVz^8U1H}+>3WVZiP%MGAz{<4`xG?`$V&l`7 zqU!+Q2Zc!2D3Y@W+FK9)xWN-{ZV*jPT{F%t^(A*}8)8(OuQsNYHXZa{8vm7UwyLbK zCF1e$;E`)Bg{kA``kN-IZr#w8KWQH+avhpT2yM)rbTLa`ZZYZ0mdwJwbN_j$eeve9 z?WW0eVd$$y>8Zh1`q-!ucE$L8 z>1W1H+>7P4B=K(YHBJH#;ivc}c9;a)`9BP;gTA?_=4^GPZnW&d`~qH&4?9`YQgdsk ze&9gCPj%<2ucWcWO=ltO>XwroWAUl&f8~$#Ajh#6TW>SYS-Gs8SF3C;(v_@S`)*0a z5`0zK^uwbKti28d!ncZtLDv=qy%-X4$PU1Or#=Kkd?ZKQ3r3z?@+R-uiyXfMALc9YsZQi z0$qu!Ghp}yV0sSi^)THFrFDH(CG-zYf>u|us7firyiy-uXuRwF=B(gN%gH$W0q+dE zGtR|bNu|--7RMb(cYn{uYd0#doT*jjB>B`IHm)_1+{vs0qD-ZKxN7r`NUX%>9-+8axA5~PB%?3uNFh1&mk&-3(dvEIGo@B2=?qn7#n z!NITvn*JwzzU3$q06Txo>PPeOU@p9{`tHKyusC(byO0^VlPyrfTmikAX$ySDzT&s#NP&n4&Ky5PSGo;P7eJr`kN)@y4Y# zqZ{w0*84&U|C8Bnj+$Df;rmGc>;N7(bEzx#ZjV+dOw`awl-?)C{#e)GBG}>4{IzJ| zv^E*+mmEOb{bA@9hwK6u)$<8(-ulNqKZf^diwk5bhGai#s$Kc%1X?=<(DV_Nw*_ z#CtjIDN?&+l}AEsN*zG|GC04&bu6iZ-iKxCb0*AxK21y!(R;#~6Uk0w<&FL+O@C=f T#>Ipx?k^J}3zJ?7B9Hz9hY}W? literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/transparent_flipped_blits.pcx b/ggdt/tests/ref/indexed/transparent_flipped_blits.pcx deleted file mode 100644 index e74342e61eddf38350b5ad50f66c869bdcc72b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5946 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 IlfeD?H|Wupa{vGU diff --git a/ggdt/tests/ref/indexed/transparent_offset_blits.png b/ggdt/tests/ref/indexed/transparent_offset_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..392f71b61712edebc19ac958bc9fca23d53d53ad GIT binary patch literal 1961 zcmb7^3s4hB7{~WQ8bDCPLrN9OISxo;s+kt_c&J+lC@qEvfq*Y!5#tEf1)=yj@rI)D zG1FoZv=t>*Q3M4mX+;w;#Ro`~k+C2(DAW$3A~lM{3Rmf!v|}=6nCb0*_ICfj-M#O2 zzq=h$$-J>+CXN9BjE$Nvjs*aNOxxsO$JCMi3z7h^1JY<&1k(keoGGBZoUNFfjBU!; zi)M<9rrGNCjcGEY-QC@B92W|O1VMW6h##j6sXl|jYiYh*x1$8^?E!F z0Zjs02bjr>bTlAo0GWj>frV=ukR)9~(mImvAZeOa2Tkf|vVoRw4*+2>8$%Sh%(U zjzfPOif~Ba5V9g5E`qo}v<4QgZ6Fjvkq`z5VW<#7R-sTB0EHrG4J=&SfKBtaE+#+y zNvatD?usb!C$jY=eRqr!BXoxg!yP|7k42pfGY$`5-f&Wx9)2$&;eL8Jes}1X%zMj@ zlr?2F8?O3w5PQLWIYVGDf4CgD8GrOO!yOk$T{`u%5xsM&eKQHJy@_c6m zI4tg$cM4m`pQx8``?ks_J66@*;)S*xc+~C6_rueZ^ffxeb-5D}lT|!?<^C>Ech&xO zobMY@8}`FX0k-CQN`x)v)N}J49o(3C(Qx1YHxk#?B%hwL`bAn*RaKMLN6QVZFi)3D zaze0PcFpuLe;tp}r%a>f4t{wjS8LtO?rYtYGCB4kNKv-ji4iaCg=TlZQn%j zBt+l)?9WJcjxlrN3URT0!}o zRgVJ2|fm4~+Ysb_VlLq>}Q3if}<<~QFy{51`U{8%x zw)SMT<&APur>>NpNE|XG<@QL_8M<)2f<4*USfpRg;|*bz8G^}e!~tCK?}>YZ;I@UG z#G#^6y92u%1DYEgJefzksSQa#mNYN&A0;i?YWGa27Ak{^_%mXrIykTi7Y!4!Xo+vW z;ie-eZzP)%fOqfqy$vB;E*o(ISlYak37=yTe$LD+W%!FCH>n}DKaysr z#@)C&E>=6?bvIF)9pu!VW=MIaXvj3r|2#L5VOp*5wB)AV! literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/transparent_single_blits.pcx b/ggdt/tests/ref/indexed/transparent_single_blits.pcx deleted file mode 100644 index 03c399584df48ec8d91ca1c861b8870ba4a7db3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5482 zcmeHLF;m+x6qYaPCD&`t3|yuT9vM7jVDP|QHRK0)$iSG9Q9r-~KY<^>z?dK4F$-~G z(!0>h$iTo>j!RnxxW}NY`<@-!5*SFZLx(m|BI)}+Jv}{1w(O4|j3&d+7vmS>#*~Wd zeGG0G*z$J0R+;)Igv|*|n%}a#Ifk=l01BcjBKQG$t2yePZ!vEsYF+hIPr3+ZXgBBb z617egH_s>%56MOZUpJ!3eMowsy4ve^B_`|Q$=D(w8)-R$Fdj`Zrpft2)}t8OoiV+7@9^8x0@EzIlq zYv8Z-01prvI4_8Xbl! zuBx2X7Ob1!)KW|%d`&pR{Sfbx*QLwdvs6EJPi503 zx`4IOS+-sCsORRC7_0*7#?lsLH_oQ*OtTQ&!PE?t3*{Xyf)Tt8(XEcv3*#M4Q(#t& z={;8A^`;|VmHlxxgA&FV*VJyAnsOtPfUBZxy&A95k(J$3|N6}+sNJu4GrGr}x@on3 zZBKiA`Bt*JY6Ljg*NowHF4jGECBf5W_Z#oAq!G>NmakAT-zHrF4X8PLYgX zz+{nC+odW!rxu^$S3UzaU~Dj;Kg@bm?9oT!w= z3R+A!j_5j~=ZL-|1f{-kdcx@nolwwX!ga;IEBdZDaD||BAl$xi_k~UVrJf)*2&#dj>;vAAP#PRZd`hg&;bCls`pux;M4`L50PY|bg|aeJ5B R9j+4!T1;fGHq`>I&p!@vP|*MY diff --git a/ggdt/tests/ref/indexed/transparent_single_blits.png b/ggdt/tests/ref/indexed/transparent_single_blits.png new file mode 100644 index 0000000000000000000000000000000000000000..b6f806daa5f6555fc52330776b7221041a3628a8 GIT binary patch literal 1770 zcmb7@4^R|U9LL|ec_@NmGIRmuLP8bTaJv}{1l2j^{6h*1kYMQ1QhCv8%9H-aojYcES^CpwYVzE4$k0HP; zz->VIv!FH%SPY;L$R60a&H>Bf8Wy*)c!0%N)BtANFk6FJ2Vmzq2Rx6@^0=SJRvu$f zR?PQf{w#I`cCK>(0P+Ed0!RxG5~W3eLcj+(0z20^peUrKkd{IWg^(x)QCdW)kt48k zodcRi2{dA8lujcgDjm@bq7#rKuydUQ0H6neB!DUap(qsuBm^GN5!kuT0ZBpy2~{Md zNC-tykW@iZ0Ud#z>l`SRP^E;yN*JPqP*ez121BI^Is!Y_IS|YIUyo3q3YIeqcj2>W zb(l7%=JsINu@9jqOeuTe)Ww*0A5P`xwv5Cj8AD=pql>P%-bnJOTz4%xH4UT|SH7Qi zB~D%&diSl#l!mRj_pQhGUvBW7D2Vln-0oZAKI`g(yq1lw39)4U?ZCa4!jCpujtF${vh-6KIE)_LDgEI-Vx@$$Rb7rtb2OYxEKixm5W zJw;Wg5|6teqr^SEBiNPieVa4S=lsQG2AvOLmSoRMI9Z*2ohyx* zxP8OzpsKxoXGhiS5SwBk(87C1PmP731>*i;8%WNhw z7boUg3+Co-{&;s}Z>nG3HfiCBFVy9?-tqT4J41rpw{#snwAH+V>AYWmR8lI&SxmfI ze7R<1W$&4WXMSjk50EuaXLzMVUNn~66{a~NhQ(=>r*;pQ|EMAnaXYa3Rix5^(;+m1z(zL6f)jO4J{00Rx<_{-F!A07D)n$@POvZ z4b3~sPICvv?+L9vH$(Lt?)*Ga-TIttsaO@_?hhZ^<0pMelLDtV98k5p?2>FcFQK(X zGsF@WyTIjp{bGAv_^^EW>Nl?nSK+l2@nQjI%hlyM`@5wXhCsNqC$zmTk7)9J*(hn> zW8i+vpB(DDMD&{VqlT7IMaYAw4BKS#nu+SR_~fokx$SCC=H%=HJr9%WPey3OiyXaH Kqizak_Wcd5C%&Wr literal 0 HcmV?d00001 diff --git a/ggdt/tests/ref/indexed/vert_line_drawing.pcx b/ggdt/tests/ref/indexed/vert_line_drawing.pcx deleted file mode 100644 index 5d13fb45a691cacec305b8506113fae85c901a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4695 zcmeI0uWrLI5XLW?DoxWsL1BSmfk8llL8TqY0~iDp1{U4}81xbP00o780K>vc>*!Qa z&`E`5-G)!v>`v|M$)qEjG&`RX`}^5ZbU8bJZd=6-xN=_{0E?BcURDY$3ODlQvQg*W zYq)-g&+P!e)p&;D5w1?x@!+o`Tkfv>-AKHByJNW>XK;>3jz_qn<$TEbkn`c|37_Xf zo)4$_u!hzvgb9(29FO4r@~7!=T5X+81_P&Fpu_ zgR8p!olZvxA*EDGRaK?6ZkmRO#^dp1GMUY0*4ou-wcG8E{TYD`@B-Xmrv-yyKzE`L z1a2A_!&Acx!&}4bwPmwlGi4Kjz)b^dd1-lLd2gA$_G~w7mmGt@O#=Yx0x6&xh`ee7 zMbM=f1a2BAMU|pjQKN{w8d5c>ieeDBX`nR?H8q+>n#gNJx*aMR%YA1AE1 G{QLk23pWb@ diff --git a/ggdt/tests/ref/indexed/vert_line_drawing.png b/ggdt/tests/ref/indexed/vert_line_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..40c63f4bd6e71ab9146c6deb2eec0d45847cf0ed GIT binary patch literal 1359 zcmeH_ziU)M5XVO&DhH7RPl$5G3Kj=0_|z0jOfiO+!~+eBu5fm*5w6lH{jtIkBw%-c zz!g_sWtuH7aK#l@h*+jb@ybIG0v3V{oV%&^#l=QT_xojb_WRj=#bZ9`o$ck?wHg2{ zw;$w>0nVWBk1sCyy7m3hGk_(~56z}O0*t(1Gz!IUCbT9j_A<<&oNT`Jw;PRy5JF0+ zl*;p5Yh4rt5%qe#e!o8)4xMwe*{m$fllzRo7I+N)vG