[librsvg/attribute-parsers-737: 6/26] structure.rs: use set_attribute()




commit 4617bbef18f40420775009e029a77a9a50b34e73
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Oct 20 12:49:37 2022 -0500

    structure.rs: use set_attribute()

 src/structure.rs | 72 +++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 43 insertions(+), 29 deletions(-)
---
diff --git a/src/structure.rs b/src/structure.rs
index 425cdb599..b91321896 100644
--- a/src/structure.rs
+++ b/src/structure.rs
@@ -7,7 +7,7 @@ use crate::bbox::BoundingBox;
 use crate::coord_units::CoordUnits;
 use crate::document::{AcquiredNodes, NodeId};
 use crate::drawing_ctx::{ClipMode, DrawingCtx, ViewParams};
-use crate::element::{Draw, Element, ElementResult, SetAttributes};
+use crate::element::{set_attribute, Draw, Element, ElementResult, SetAttributes};
 use crate::error::*;
 use crate::href::{is_href, set_href};
 use crate::layout::StackingContext;
@@ -274,13 +274,15 @@ impl Svg {
 }
 
 impl SetAttributes for Svg {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
                 expanded_name!("", "preserveAspectRatio") => {
-                    self.preserve_aspect_ratio = attr.parse(value)?
+                    set_attribute(&mut self.preserve_aspect_ratio, attr.parse(value), session)
+                }
+                expanded_name!("", "viewBox") => {
+                    set_attribute(&mut self.vbox, attr.parse(value), session)
                 }
-                expanded_name!("", "viewBox") => self.vbox = attr.parse(value)?,
                 _ => (),
             }
         }
@@ -355,7 +357,7 @@ impl Default for Use {
 }
 
 impl SetAttributes for Use {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
                 ref a if is_href(a) => set_href(
@@ -363,10 +365,14 @@ impl SetAttributes for Use {
                     &mut self.link,
                     NodeId::parse(value).attribute(attr.clone())?,
                 ),
-                expanded_name!("", "x") => self.x = attr.parse(value)?,
-                expanded_name!("", "y") => self.y = attr.parse(value)?,
-                expanded_name!("", "width") => self.width = attr.parse(value)?,
-                expanded_name!("", "height") => self.height = attr.parse(value)?,
+                expanded_name!("", "x") => set_attribute(&mut self.x, attr.parse(value), session),
+                expanded_name!("", "y") => set_attribute(&mut self.y, attr.parse(value), session),
+                expanded_name!("", "width") => {
+                    set_attribute(&mut self.width, attr.parse(value), session)
+                }
+                expanded_name!("", "height") => {
+                    set_attribute(&mut self.height, attr.parse(value), session)
+                }
                 _ => (),
             }
         }
@@ -441,13 +447,15 @@ impl Symbol {
 }
 
 impl SetAttributes for Symbol {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
                 expanded_name!("", "preserveAspectRatio") => {
-                    self.preserve_aspect_ratio = attr.parse(value)?
+                    set_attribute(&mut self.preserve_aspect_ratio, attr.parse(value), session)
+                }
+                expanded_name!("", "viewBox") => {
+                    set_attribute(&mut self.vbox, attr.parse(value), session)
                 }
-                expanded_name!("", "viewBox") => self.vbox = attr.parse(value)?,
                 _ => (),
             }
         }
@@ -472,13 +480,11 @@ impl ClipPath {
 }
 
 impl SetAttributes for ClipPath {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        let result = attrs
-            .iter()
-            .find(|(attr, _)| attr.expanded() == expanded_name!("", "clipPathUnits"))
-            .and_then(|(attr, value)| attr.parse(value).ok());
-        if let Some(units) = result {
-            self.units = units
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        for (attr, value) in attrs.iter() {
+            if attr.expanded() == expanded_name!("", "clipPathUnits") {
+                set_attribute(&mut self.units, attr.parse(value), session);
+            }
         }
 
         Ok(())
@@ -535,15 +541,23 @@ impl Mask {
 }
 
 impl SetAttributes for Mask {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
-                expanded_name!("", "x") => self.x = attr.parse(value)?,
-                expanded_name!("", "y") => self.y = attr.parse(value)?,
-                expanded_name!("", "width") => self.width = attr.parse(value)?,
-                expanded_name!("", "height") => self.height = attr.parse(value)?,
-                expanded_name!("", "maskUnits") => self.units = attr.parse(value)?,
-                expanded_name!("", "maskContentUnits") => self.content_units = attr.parse(value)?,
+                expanded_name!("", "x") => set_attribute(&mut self.x, attr.parse(value), session),
+                expanded_name!("", "y") => set_attribute(&mut self.y, attr.parse(value), session),
+                expanded_name!("", "width") => {
+                    set_attribute(&mut self.width, attr.parse(value), session)
+                }
+                expanded_name!("", "height") => {
+                    set_attribute(&mut self.height, attr.parse(value), session)
+                }
+                expanded_name!("", "maskUnits") => {
+                    set_attribute(&mut self.units, attr.parse(value), session)
+                }
+                expanded_name!("", "maskContentUnits") => {
+                    set_attribute(&mut self.content_units, attr.parse(value), session)
+                }
                 _ => (),
             }
         }
@@ -562,9 +576,9 @@ pub struct Link {
 impl SetAttributes for Link {
     fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
         for (attr, value) in attrs.iter() {
-            match attr.expanded() {
-                ref a if is_href(a) => set_href(a, &mut self.link, value.to_owned()),
-                _ => (),
+            let expanded = attr.expanded();
+            if is_href(&expanded) {
+                set_href(&expanded, &mut self.link, value.to_owned());
             }
         }
 


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