[librsvg: 26/53] CairoRenderer::test_mode - new function to turn on the testing flag




commit d6a0716c684f4638f1e706a405aca4cafa741f35
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Oct 15 11:09:59 2020 -0500

    CairoRenderer::test_mode - new function to turn on the testing flag
    
    This is so that DrawingCtx can know that it is being run in the test
    suite, and so must set up reproducible font rendering.
    
    We'll probably hide this behind a feature flag later, or something.

 librsvg_crate/src/lib.rs | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/librsvg_crate/src/lib.rs b/librsvg_crate/src/lib.rs
index 7425924e..5424d437 100644
--- a/librsvg_crate/src/lib.rs
+++ b/librsvg_crate/src/lib.rs
@@ -389,6 +389,7 @@ impl SvgHandle {
 pub struct CairoRenderer<'a> {
     handle: &'a SvgHandle,
     dpi: Dpi,
+    is_testing: bool,
 }
 
 // Note that these are different than the C API's default, which is 90.
@@ -433,6 +434,7 @@ impl<'a> CairoRenderer<'a> {
         CairoRenderer {
             handle,
             dpi: Dpi::new(DEFAULT_DPI_X, DEFAULT_DPI_Y),
+            is_testing: false,
         }
     }
 
@@ -448,6 +450,7 @@ impl<'a> CairoRenderer<'a> {
         CairoRenderer {
             handle: self.handle,
             dpi: Dpi::new(dpi_x, dpi_y),
+            is_testing: self.is_testing,
         }
     }
 
@@ -481,7 +484,9 @@ impl<'a> CairoRenderer<'a> {
         cr: &cairo::Context,
         viewport: &cairo::Rectangle,
     ) -> Result<(), RenderingError> {
-        self.handle.0.render_document(cr, viewport, self.dpi, false)
+        self.handle
+            .0
+            .render_document(cr, viewport, self.dpi, self.is_testing)
     }
 
     /// Computes the (ink_rect, logical_rect) of an SVG element, as if
@@ -515,7 +520,7 @@ impl<'a> CairoRenderer<'a> {
     ) -> Result<(cairo::Rectangle, cairo::Rectangle), RenderingError> {
         self.handle
             .0
-            .get_geometry_for_layer(id, viewport, self.dpi, false)
+            .get_geometry_for_layer(id, viewport, self.dpi, self.is_testing)
             .map(|(i, l)| (i, l))
     }
 
@@ -546,7 +551,7 @@ impl<'a> CairoRenderer<'a> {
     ) -> Result<(), RenderingError> {
         self.handle
             .0
-            .render_layer(cr, id, viewport, self.dpi, false)
+            .render_layer(cr, id, viewport, self.dpi, self.is_testing)
     }
 
     /// Computes the (ink_rect, logical_rect) of a single SVG element
@@ -585,7 +590,7 @@ impl<'a> CairoRenderer<'a> {
     ) -> Result<(cairo::Rectangle, cairo::Rectangle), RenderingError> {
         self.handle
             .0
-            .get_geometry_for_element(id, self.dpi, false)
+            .get_geometry_for_element(id, self.dpi, self.is_testing)
             .map(|(i, l)| (i, l))
     }
 
@@ -613,6 +618,15 @@ impl<'a> CairoRenderer<'a> {
     ) -> Result<(), RenderingError> {
         self.handle
             .0
-            .render_element(cr, id, element_viewport, self.dpi, false)
+            .render_element(cr, id, element_viewport, self.dpi, self.is_testing)
+    }
+
+    /// Turns on test mode.  Do not use this function; it is for librsvg's test suite only.
+    pub fn test_mode(self) -> Self {
+        CairoRenderer {
+            handle: self.handle,
+            dpi: self.dpi,
+            is_testing: true,
+        }
     }
 }


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