[librsvg: 36/45] Return Result<Resolved> from resolve(), not Result<Option<Resolved>>



commit 07f72ad7fda6d5985e2206451c9b5c175075fdb0
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Sep 30 15:13:36 2019 -0500

    Return Result<Resolved> from resolve(), not Result<Option<Resolved>>
    
    Now that gradients check the incoming bounding box at a later stage,
    they can always return a valid resolved gradient.

 rsvg_internals/src/gradient.rs     | 4 ++--
 rsvg_internals/src/paint_server.rs | 6 ++----
 rsvg_internals/src/pattern.rs      | 8 +++-----
 3 files changed, 7 insertions(+), 11 deletions(-)
---
diff --git a/rsvg_internals/src/gradient.rs b/rsvg_internals/src/gradient.rs
index d66974cb..bb9f1f42 100644
--- a/rsvg_internals/src/gradient.rs
+++ b/rsvg_internals/src/gradient.rs
@@ -583,7 +583,7 @@ impl PaintSource for NodeGradient {
         &self,
         node: &RsvgNode,
         draw_ctx: &mut DrawingCtx,
-    ) -> Result<Option<Self::Resolved>, PaintServerError> {
+    ) -> Result<Self::Resolved, PaintServerError> {
         let Unresolved { mut gradient, mut fallback } = self.get_unresolved(node);
 
         let mut stack = NodeStack::new();
@@ -612,7 +612,7 @@ impl PaintSource for NodeGradient {
             }
         }
 
-        Ok(Some(gradient.to_resolved()))
+        Ok(gradient.to_resolved())
     }
 }
 
diff --git a/rsvg_internals/src/paint_server.rs b/rsvg_internals/src/paint_server.rs
index 04295fb5..e31deeec 100644
--- a/rsvg_internals/src/paint_server.rs
+++ b/rsvg_internals/src/paint_server.rs
@@ -61,7 +61,7 @@ pub trait PaintSource {
         &self,
         node: &RsvgNode,
         draw_ctx: &mut DrawingCtx,
-    ) -> Result<Option<Self::Resolved>, PaintServerError>;
+    ) -> Result<Self::Resolved, PaintServerError>;
 
     fn resolve_fallbacks_and_set_pattern(
         &self,
@@ -71,14 +71,12 @@ pub trait PaintSource {
         bbox: &BoundingBox,
     ) -> Result<bool, RenderingError> {
         match self.resolve(&node, draw_ctx) {
-            Ok(Some(resolved)) => {
+            Ok(resolved) => {
                 let cascaded = CascadedValues::new_from_node(node);
                 let values = cascaded.get();
                 resolved.set_pattern_on_draw_context(values, draw_ctx, opacity, bbox)
             }
 
-            Ok(None) => Ok(false),
-
             Err(PaintServerError::CircularReference(_)) => {
                 // FIXME: add a fragment or node id to this:
                 rsvg_log!("circular reference in paint server {}", node);
diff --git a/rsvg_internals/src/pattern.rs b/rsvg_internals/src/pattern.rs
index 98f622be..95fce0a5 100644
--- a/rsvg_internals/src/pattern.rs
+++ b/rsvg_internals/src/pattern.rs
@@ -144,7 +144,7 @@ impl PaintSource for NodePattern {
         &self,
         node: &RsvgNode,
         draw_ctx: &mut DrawingCtx,
-    ) -> Result<Option<Self::Resolved>, PaintServerError> {
+    ) -> Result<Self::Resolved, PaintServerError> {
         *self.node.borrow_mut() = Some(node.downgrade());
 
         let mut result = node.borrow().get_impl::<NodePattern>().clone();
@@ -159,9 +159,7 @@ impl PaintSource for NodePattern {
                     let a_node = acquired.get();
 
                     if stack.contains(a_node) {
-                        return Err(PaintServerError::CircularReference(
-                            fallback.clone(),
-                        ));
+                        return Err(PaintServerError::CircularReference(fallback.clone()));
                     }
 
                     let node_data = a_node.borrow();
@@ -180,7 +178,7 @@ impl PaintSource for NodePattern {
             }
         }
 
-        Ok(Some(result))
+        Ok(result)
     }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]