[librsvg] Handle::get_dimensions(): Extract this bit of common code from other places
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Handle::get_dimensions(): Extract this bit of common code from other places
- Date: Fri, 28 Dec 2018 17:36:13 +0000 (UTC)
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]