[librsvg] Handle::get_dimensions(): Extract this bit of common code from other places



commit f04a3c773a9352a27420ae6dfbf218228cdc3061
Author: Federico Mena Quintero <federico gnome org>
Date:   Fri Dec 28 11:34:57 2018 -0600

    Handle::get_dimensions(): Extract this bit of common code from other places

 rsvg_internals/src/handle.rs | 37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)
---
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index a8a7e5a5..806c91ec 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -234,11 +234,10 @@ impl Handle {
         draw_ctx
     }
 
-    fn get_node_geometry(
+    fn get_dimensions(
         &mut self,
         handle: *mut RsvgHandle,
-        node: &RsvgNode,
-    ) -> Result<(RsvgRectangle, RsvgRectangle), RenderingError> {
+    ) -> Result<RsvgDimensionData, RenderingError> {
         let dimensions = unsafe {
             let mut dimensions = mem::zeroed();
             rsvg_handle_get_dimensions(handle, &mut dimensions);
@@ -246,8 +245,18 @@ impl Handle {
         };
 
         if dimensions.width == 0 || dimensions.height == 0 {
-            return Err(RenderingError::SvgHasNoSize);
+            Err(RenderingError::SvgHasNoSize)
+        } else {
+            Ok(dimensions)
         }
+    }
+
+    fn get_node_geometry(
+        &mut self,
+        handle: *mut RsvgHandle,
+        node: &RsvgNode,
+    ) -> Result<(RsvgRectangle, RsvgRectangle), RenderingError> {
+        let dimensions = self.get_dimensions(handle)?;
 
         let target = ImageSurface::create(cairo::Format::Rgb24, 1, 1)?;
 
@@ -401,15 +410,7 @@ impl Handle {
             None
         };
 
-        let dimensions = unsafe {
-            let mut dimensions = mem::zeroed();
-            rsvg_handle_get_dimensions(handle, &mut dimensions);
-            dimensions
-        };
-
-        if dimensions.width == 0 || dimensions.height == 0 {
-            return Err(RenderingError::SvgHasNoSize);
-        }
+        let dimensions = self.get_dimensions(handle)?;
 
         cr.save();
 
@@ -438,15 +439,7 @@ impl Handle {
         handle: *mut RsvgHandle,
         id: Option<&str>,
     ) -> Result<Pixbuf, RenderingError> {
-        let dimensions = unsafe {
-            let mut dimensions = mem::zeroed();
-            rsvg_handle_get_dimensions(handle, &mut dimensions);
-            dimensions
-        };
-
-        if dimensions.width == 0 || dimensions.height == 0 {
-            return Err(RenderingError::SvgHasNoSize);
-        }
+        let dimensions = self.get_dimensions(handle)?;
 
         let surface =
             ImageSurface::create(cairo::Format::ARgb32, dimensions.width, dimensions.height)?;


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