[librsvg: 7/10] Move get_dimensions_no_error() to CHandle as get_dimensions_or_empty()
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 7/10] Move get_dimensions_no_error() to CHandle as get_dimensions_or_empty()
- Date: Tue, 23 Jul 2019 21:26:12 +0000 (UTC)
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]