[librsvg: 7/10] Move get_dimensions_no_error() to CHandle as get_dimensions_or_empty()



commit 0bca3cae164c33a1cc3f6fe8eaf35d18afcdddc2
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue Jul 23 15:30:30 2019 -0500

    Move get_dimensions_no_error() to CHandle as get_dimensions_or_empty()
    
    This lets us remove the unwrap()s in CHandle::get_property()

 rsvg_internals/src/c_api.rs  | 49 ++++++++++++++++++--------------------------
 rsvg_internals/src/handle.rs | 10 ---------
 2 files changed, 20 insertions(+), 39 deletions(-)
---
diff --git a/rsvg_internals/src/c_api.rs b/rsvg_internals/src/c_api.rs
index 5b176a3a..d55c97f7 100644
--- a/rsvg_internals/src/c_api.rs
+++ b/rsvg_internals/src/c_api.rs
@@ -435,11 +435,10 @@ impl ObjectImpl for CHandle {
         }
     }
 
+    #[cfg_attr(rustfmt, rustfmt_skip)]
     fn get_property(&self, _obj: &glib::Object, id: usize) -> Result<glib::Value, ()> {
         let prop = &PROPERTIES[id];
 
-        let size_callback = self.size_callback.borrow();
-
         match *prop {
             subclass::Property("flags", ..) => {
                 let flags = HandleFlags::from(self.load_flags.get());
@@ -456,36 +455,21 @@ impl ObjectImpl for CHandle {
                 .map(|url| url.as_str())
                 .to_value()),
 
-            subclass::Property("width", ..) => Ok(self
-                .get_handle_ref()
-                .unwrap()
-                .get_dimensions_no_error(self.dpi.get(), &*size_callback, self.is_testing.get())
-                .width
-                .to_value()),
+            subclass::Property("width", ..) =>
+                Ok(self.get_dimensions_or_empty().width.to_value()),
 
-            subclass::Property("height", ..) => Ok(self
-                .get_handle_ref()
-                .unwrap()
-                .get_dimensions_no_error(self.dpi.get(), &*size_callback, self.is_testing.get())
-                .height
-                .to_value()),
+            subclass::Property("height", ..) =>
+                Ok(self.get_dimensions_or_empty().height.to_value()),
 
-            subclass::Property("em", ..) => Ok(self
-                .get_handle_ref()
-                .unwrap()
-                .get_dimensions_no_error(self.dpi.get(), &*size_callback, self.is_testing.get())
-                .em
-                .to_value()),
-            subclass::Property("ex", ..) => Ok(self
-                .get_handle_ref()
-                .unwrap()
-                .get_dimensions_no_error(self.dpi.get(), &*size_callback, self.is_testing.get())
-                .ex
-                .to_value()),
+            subclass::Property("em", ..) =>
+                Ok(self.get_dimensions_or_empty().em.to_value()),
+
+            subclass::Property("ex", ..) =>
+                Ok(self.get_dimensions_or_empty().ex.to_value()),
 
             // the following three are deprecated
-            subclass::Property("title", ..) => Ok((None as Option<String>).to_value()),
-            subclass::Property("desc", ..) => Ok((None as Option<String>).to_value()),
+            subclass::Property("title", ..)    => Ok((None as Option<String>).to_value()),
+            subclass::Property("desc", ..)     => Ok((None as Option<String>).to_value()),
             subclass::Property("metadata", ..) => Ok((None as Option<String>).to_value()),
 
             _ => unreachable!("invalid property id={} for RsvgHandle", id),
@@ -664,6 +648,11 @@ impl CHandle {
         handle.has_sub(id)
     }
 
+    fn get_dimensions_or_empty(&self) -> RsvgDimensionData {
+        self.get_dimensions()
+            .unwrap_or_else(|_| RsvgDimensionData::empty())
+    }
+
     fn get_dimensions(&self) -> Result<RsvgDimensionData, RenderingError> {
         let handle = self.get_handle_ref()?;
         let size_callback = self.size_callback.borrow();
@@ -1025,7 +1014,9 @@ pub unsafe extern "C" fn rsvg_rust_handle_get_dimensions(
     dimension_data: *mut RsvgDimensionData,
 ) {
     let rhandle = get_rust_handle(handle);
-    *dimension_data = rhandle.get_dimensions().unwrap_or_else(|_| RsvgDimensionData::empty());
+    *dimension_data = rhandle
+        .get_dimensions()
+        .unwrap_or_else(|_| RsvgDimensionData::empty());
 }
 
 #[no_mangle]
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index db7909b1..7f1064fe 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -121,16 +121,6 @@ impl Handle {
         res
     }
 
-    pub fn get_dimensions_no_error(
-        &self,
-        dpi: Dpi,
-        size_callback: &SizeCallback,
-        is_testing: bool,
-    ) -> RsvgDimensionData {
-        self.get_dimensions(dpi, size_callback, is_testing)
-            .unwrap_or_else(|_| RsvgDimensionData::empty())
-    }
-
     pub fn get_dimensions_sub(
         &self,
         id: Option<&str>,


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