[librsvg: 37/51] displacement_map.rs: impl Parse for ColorChannel instead of using a custom method
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 37/51] displacement_map.rs: impl Parse for ColorChannel instead of using a custom method
- Date: Thu, 19 Dec 2019 01:51:08 +0000 (UTC)
commit bbd9c562cdde7fe516df9ee890c5e055b6c297b6
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Dec 18 10:19:35 2019 -0600
displacement_map.rs: impl Parse for ColorChannel instead of using a custom method
rsvg_internals/src/filters/displacement_map.rs | 32 +++++++++++++++-----------
1 file changed, 18 insertions(+), 14 deletions(-)
---
diff --git a/rsvg_internals/src/filters/displacement_map.rs b/rsvg_internals/src/filters/displacement_map.rs
index 05e4edb7..ed8eac8e 100644
--- a/rsvg_internals/src/filters/displacement_map.rs
+++ b/rsvg_internals/src/filters/displacement_map.rs
@@ -1,10 +1,11 @@
use cairo::{self, ImageSurface};
-use markup5ever::{expanded_name, local_name, namespace_url, ns, QualName};
+use cssparser::Parser;
+use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::drawing_ctx::DrawingCtx;
use crate::error::*;
use crate::node::{NodeResult, NodeTrait, RsvgNode};
-use crate::parsers;
+use crate::parsers::{self, Parse, ParseValue};
use crate::property_bag::PropertyBag;
use crate::surface_utils::{iterators::Pixels, shared_surface::SharedImageSurface};
@@ -52,12 +53,14 @@ impl NodeTrait for FeDisplacementMap {
for (attr, value) in pbag.iter() {
match attr.expanded() {
expanded_name!(svg "in2") => self.in2 = Some(Input::parse(attr, value)?),
- expanded_name!(svg "scale") => self.scale = parsers::number(value).attribute(attr)?,
+ expanded_name!(svg "scale") => {
+ self.scale = parsers::number(value).attribute(attr)?
+ }
expanded_name!(svg "xChannelSelector") => {
- self.x_channel_selector = ColorChannel::parse(attr, value)?
+ self.x_channel_selector = attr.parse(value)?
}
expanded_name!(svg "yChannelSelector") => {
- self.y_channel_selector = ColorChannel::parse(attr, value)?
+ self.y_channel_selector = attr.parse(value)?
}
_ => (),
}
@@ -143,14 +146,15 @@ impl FilterEffect for FeDisplacementMap {
}
}
-impl ColorChannel {
- fn parse(attr: QualName, s: &str) -> Result<Self, NodeError> {
- match s {
- "R" => Ok(ColorChannel::R),
- "G" => Ok(ColorChannel::G),
- "B" => Ok(ColorChannel::B),
- "A" => Ok(ColorChannel::A),
- _ => Err(ValueErrorKind::parse_error("invalid value")).attribute(attr),
- }
+impl Parse for ColorChannel {
+ fn parse<'i>(parser: &mut Parser<'i, '_>) -> Result<ColorChannel, ValueErrorKind> {
+ parse_identifiers!(
+ parser,
+ "R" => ColorChannel::R,
+ "G" => ColorChannel::G,
+ "B" => ColorChannel::B,
+ "A" => ColorChannel::A,
+ )
+ .map_err(|_: ParseError| ValueErrorKind::parse_error("parse error"))
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]