diff options
author | Federico Mena Quintero <federico@gnome.org> | 2018-12-28 11:34:57 -0600 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2018-12-28 11:34:57 -0600 |
commit | f04a3c773a9352a27420ae6dfbf218228cdc3061 (patch) | |
tree | fe03310422faf902b547196f82df216a75b21c4f /rsvg_internals | |
parent | 2e6056683dc51f5d7a94092751e623c6e7c7defc (diff) | |
download | librsvg-f04a3c773a9352a27420ae6dfbf218228cdc3061.tar.gz |
Handle::get_dimensions(): Extract this bit of common code from other places
Diffstat (limited to 'rsvg_internals')
-rw-r--r-- | rsvg_internals/src/handle.rs | 37 |
1 files 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)?; |