[librsvg: 9/90] wip: test render_to_viewport_with_transform()



commit 6c44febba8cdf36b26c0f3cc5be3371e3e854f47
Author: Federico Mena Quintero <federico gnome org>
Date:   Fri Mar 8 14:22:04 2019 -0600

    wip: test render_to_viewport_with_transform()

 librsvg_crate/tests/render_to_viewport.rs | 60 +++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
---
diff --git a/librsvg_crate/tests/render_to_viewport.rs b/librsvg_crate/tests/render_to_viewport.rs
index 51c51d44..36e22e23 100644
--- a/librsvg_crate/tests/render_to_viewport.rs
+++ b/librsvg_crate/tests/render_to_viewport.rs
@@ -133,3 +133,63 @@ fn render_to_offsetted_viewport() {
         }
     }
 }
+
+#[test]
+fn render_to_viewport_with_transform() {
+    let svg = load_svg(
+        br#"<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"; width="48" height="48">
+  <g transform="translate(-10, -10)">
+    <path fill="blue" d="M 18 18 l 32 0 l 0 32 l -32 0 z"/>
+  </g>
+</svg>
+"#,
+    );
+
+    let renderer = CairoRenderer::new(&svg);
+
+    let output = cairo::ImageSurface::create(cairo::Format::ARgb32, 100, 100).unwrap();
+
+    {
+        let cr = cairo::Context::new(&output);
+        cr.translate(10.0, 20.0);
+        renderer
+            .render_element_to_viewport(
+                &cr,
+                None,
+                &cairo::Rectangle {
+                    x: 0.0,
+                    y: 0.0,
+                    width: 48.0,
+                    height: 48.0,
+                },
+            )
+            .unwrap();
+    }
+
+    let mut output_file = File::create(Path::new("output.png")).unwrap();
+    output.write_to_png(&mut output_file).unwrap();
+
+    let output_surf = SharedImageSurface::new(output, SurfaceType::SRgb).unwrap();
+
+    let fixture_path = Path::new("tests/fixtures/rect-48x48-offsetted-100x100-10x20.png");
+    let mut fixture_file = BufReader::new(File::open(fixture_path).unwrap());
+
+    let expected = cairo::ImageSurface::create_from_png(&mut fixture_file).unwrap();
+    let expected_surf = SharedImageSurface::new(expected, SurfaceType::SRgb).unwrap();
+
+    let diff = compare_surfaces(&output_surf, &expected_surf).unwrap();
+
+    match diff {
+        BufferDiff::DifferentSizes => unreachable!("surfaces should be of the same size"),
+
+        BufferDiff::Diff(diff) => {
+            let surf = diff.surface.into_image_surface().unwrap();
+            let mut output_file = File::create(Path::new("diff.png")).unwrap();
+            surf.write_to_png(&mut output_file).unwrap();
+
+            assert_eq!(diff.num_pixels_changed, 0);
+            
+        }
+    }
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]