[librsvg: 1/90] Add test for render_element_to_viewport() with a viewport not at 0, 0
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 1/90] Add test for render_element_to_viewport() with a viewport not at 0, 0
- Date: Tue, 26 Mar 2019 19:12:08 +0000 (UTC)
commit 812b44587ec0d48904dd27ce61487d50172381f3
Author: Federico Mena Quintero <federico gnome org>
Date: Fri Mar 8 09:12:22 2019 -0600
Add test for render_element_to_viewport() with a viewport not at 0,0
This fails currently.
.../rect-48x48-offsetted-100x100-10x20.png | Bin 0 -> 1331 bytes
librsvg_crate/tests/render_to_viewport.rs | 57 +++++++++++++++++++++
2 files changed, 57 insertions(+)
---
diff --git a/librsvg_crate/tests/fixtures/rect-48x48-offsetted-100x100-10x20.png
b/librsvg_crate/tests/fixtures/rect-48x48-offsetted-100x100-10x20.png
new file mode 100644
index 00000000..ac9bb3fb
Binary files /dev/null and b/librsvg_crate/tests/fixtures/rect-48x48-offsetted-100x100-10x20.png differ
diff --git a/librsvg_crate/tests/render_to_viewport.rs b/librsvg_crate/tests/render_to_viewport.rs
index 2ad44e14..51c51d44 100644
--- a/librsvg_crate/tests/render_to_viewport.rs
+++ b/librsvg_crate/tests/render_to_viewport.rs
@@ -76,3 +76,60 @@ fn render_to_viewport_with_different_size() {
}
}
}
+
+#[test]
+fn render_to_offsetted_viewport() {
+ let svg = load_svg(
+ br#"<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48">
+ <rect x="8" y="8" width="32" height="32" fill="blue"/>
+</svg>
+"#,
+ );
+
+ let renderer = CairoRenderer::new(&svg);
+
+ let output = cairo::ImageSurface::create(cairo::Format::ARgb32, 100, 100).unwrap();
+
+ {
+ let cr = cairo::Context::new(&output);
+ renderer
+ .render_element_to_viewport(
+ &cr,
+ None,
+ &cairo::Rectangle {
+ x: 10.0,
+ y: 20.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]