[librsvg/librsvg-2.48] Combine the get_dimensions and get_dimensions_sub implementations into a single function
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg/librsvg-2.48] Combine the get_dimensions and get_dimensions_sub implementations into a single function
- Date: Wed, 29 Apr 2020 18:05:06 +0000 (UTC)
commit 5afc3710763541c341c9f0e72b4c9771365dcda5
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 15cb3076..99144ebf 100644
--- a/librsvg/c_api.rs
+++ b/librsvg/c_api.rs
@@ -675,16 +675,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();
@@ -736,7 +730,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();
@@ -1213,7 +1207,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 45d85f8d..40dce2b4 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -217,8 +217,9 @@ impl Handle {
}
}
- pub fn get_dimensions(
+ pub fn get_dimensions_sub(
&self,
+ id: Option<&str>,
dpi: Dpi,
size_callback: &SizeCallback,
is_testing: bool,
@@ -238,33 +239,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]