[librsvg: 3/19] Combine the get_dimensions and get_dimensions_sub implementations into a single function



commit 29926383204fc7e77e62d93a66ef146533753e5d
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Apr 23 17:11:54 2020 -0500

    Combine the get_dimensions and get_dimensions_sub implementations into a single function

 librsvg/c_api.rs             | 12 +++---------
 rsvg_internals/src/handle.rs | 41 +++++++++++++++++------------------------
 2 files changed, 20 insertions(+), 33 deletions(-)
---
diff --git a/librsvg/c_api.rs b/librsvg/c_api.rs
index fc19e464..23f3abb3 100644
--- a/librsvg/c_api.rs
+++ b/librsvg/c_api.rs
@@ -674,16 +674,10 @@ impl CHandle {
     }
 
     fn get_dimensions_or_empty(&self) -> RsvgDimensionData {
-        self.get_dimensions()
+        self.get_dimensions_sub(None)
             .unwrap_or_else(|_| RsvgDimensionData::empty())
     }
 
-    fn get_dimensions(&self) -> Result<RsvgDimensionData, RenderingError> {
-        let handle = self.get_handle_ref()?;
-        let inner = self.inner.borrow();
-        handle.get_dimensions(inner.dpi, &inner.size_callback, inner.is_testing)
-    }
-
     fn get_dimensions_sub(&self, id: Option<&str>) -> Result<RsvgDimensionData, RenderingError> {
         let handle = self.get_handle_ref()?;
         let inner = self.inner.borrow();
@@ -735,7 +729,7 @@ impl CHandle {
         let dpi = inner.dpi;
         let is_testing = inner.is_testing;
 
-        let dimensions = handle.get_dimensions(dpi, &inner.size_callback, is_testing)?;
+        let dimensions = handle.get_dimensions_sub(None, dpi, &inner.size_callback, is_testing)?;
 
         if dimensions.width == 0 || dimensions.height == 0 {
             return empty_pixbuf();
@@ -1212,7 +1206,7 @@ pub unsafe extern "C" fn rsvg_rust_handle_get_dimensions(
     }
 
     let rhandle = get_rust_handle(handle);
-    match rhandle.get_dimensions() {
+    match rhandle.get_dimensions_sub(None) {
         Ok(dimensions) => {
             *dimension_data = dimensions;
         }
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index e1ca24fb..6b041e96 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -206,8 +206,9 @@ impl Handle {
         }
     }
 
-    pub fn get_dimensions(
+    pub fn get_dimensions_sub(
         &self,
+        id: Option<&str>,
         dpi: Dpi,
         size_callback: &SizeCallback,
         is_testing: bool,
@@ -227,33 +228,25 @@ impl Handle {
 
         size_callback.start_loop();
 
-        let res = self.get_dimensions_sub(None, dpi, size_callback, is_testing);
-
-        size_callback.end_loop();
+        let res = self
+            .get_geometry_sub(id, dpi, is_testing)
+            .and_then(|(ink_r, _)| {
+                let width = ink_r.width().round() as libc::c_int;
+                let height = ink_r.height().round() as libc::c_int;
 
-        res
-    }
+                let (w, h) = size_callback.call(width, height);
 
-    pub fn get_dimensions_sub(
-        &self,
-        id: Option<&str>,
-        dpi: Dpi,
-        size_callback: &SizeCallback,
-        is_testing: bool,
-    ) -> Result<RsvgDimensionData, RenderingError> {
-        let (ink_r, _) = self.get_geometry_sub(id, dpi, is_testing)?;
-
-        let width = ink_r.width().round() as libc::c_int;
-        let height = ink_r.height().round() as libc::c_int;
+                Ok(RsvgDimensionData {
+                    width: w,
+                    height: h,
+                    em: ink_r.width(),
+                    ex: ink_r.height(),
+                })
+            });
 
-        let (w, h) = size_callback.call(width, height);
+        size_callback.end_loop();
 
-        Ok(RsvgDimensionData {
-            width: w,
-            height: h,
-            em: ink_r.width(),
-            ex: ink_r.height(),
-        })
+        res
     }
 
     pub fn get_position_sub(


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