summaryrefslogtreecommitdiff
path: root/rsvg_internals
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2018-12-28 11:34:57 -0600
committerFederico Mena Quintero <federico@gnome.org>2018-12-28 11:34:57 -0600
commitf04a3c773a9352a27420ae6dfbf218228cdc3061 (patch)
treefe03310422faf902b547196f82df216a75b21c4f /rsvg_internals
parent2e6056683dc51f5d7a94092751e623c6e7c7defc (diff)
downloadlibrsvg-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.rs37
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)?;