[librsvg: 85/95] rsvg_node_light_source_set_atts(): Parse attributes with the PHF
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 85/95] rsvg_node_light_source_set_atts(): Parse attributes with the PHF
- Date: Thu, 22 Feb 2018 03:20:16 +0000 (UTC)
commit 28586d0c0c1c20a9cb20686925cc3baaae44be3e
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Feb 21 17:37:06 2018 -0600
rsvg_node_light_source_set_atts(): Parse attributes with the PHF
rsvg-filter.c | 73 +++++++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 53 insertions(+), 20 deletions(-)
---
diff --git a/rsvg-filter.c b/rsvg-filter.c
index 6c64e415..c17f55d0 100644
--- a/rsvg-filter.c
+++ b/rsvg-filter.c
@@ -4787,28 +4787,61 @@ static void
rsvg_node_light_source_set_atts (RsvgNode *node, gpointer impl, RsvgHandle *handle, RsvgPropertyBag atts)
{
RsvgNodeLightSource *data = impl;
+ RsvgPropertyBagIter *iter;
+ const char *key;
+ RsvgAttribute attr;
const char *value;
- if ((value = rsvg_property_bag_lookup (atts, "azimuth")))
- data->azimuth = g_ascii_strtod (value, NULL) / 180.0 * M_PI;
- if ((value = rsvg_property_bag_lookup (atts, "elevation")))
- data->elevation = g_ascii_strtod (value, NULL) / 180.0 * M_PI;
- if ((value = rsvg_property_bag_lookup (atts, "limitingConeAngle")))
- data->limitingconeAngle = g_ascii_strtod (value, NULL) / 180.0 * M_PI;
- if ((value = rsvg_property_bag_lookup (atts, "x")))
- data->x = data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_HORIZONTAL);
- if ((value = rsvg_property_bag_lookup (atts, "y")))
- data->y = data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_VERTICAL);
- if ((value = rsvg_property_bag_lookup (atts, "z")))
- data->z = data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_BOTH);
- if ((value = rsvg_property_bag_lookup (atts, "pointsAtX")))
- data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_HORIZONTAL);
- if ((value = rsvg_property_bag_lookup (atts, "pointsAtY")))
- data->pointsAtY = rsvg_length_parse (value, LENGTH_DIR_VERTICAL);
- if ((value = rsvg_property_bag_lookup (atts, "pointsAtZ")))
- data->pointsAtZ = rsvg_length_parse (value, LENGTH_DIR_BOTH);
- if ((value = rsvg_property_bag_lookup (atts, "specularExponent")))
- data->specularExponent = g_ascii_strtod (value, NULL);
+ iter = rsvg_property_bag_iter_begin (atts);
+
+ while (rsvg_property_bag_iter_next (iter, &key, &attr, &value)) {
+ switch (attr) {
+ case RSVG_ATTRIBUTE_AZIMUTH:
+ data->azimuth = g_ascii_strtod (value, NULL) / 180.0 * M_PI;
+ break;
+
+ case RSVG_ATTRIBUTE_ELEVATION:
+ data->elevation = g_ascii_strtod (value, NULL) / 180.0 * M_PI;
+ break;
+
+ case RSVG_ATTRIBUTE_LIMITING_CONE_ANGLE:
+ data->limitingconeAngle = g_ascii_strtod (value, NULL) / 180.0 * M_PI;
+ break;
+
+ case RSVG_ATTRIBUTE_X:
+ data->x = data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_HORIZONTAL);
+ break;
+
+ case RSVG_ATTRIBUTE_Y:
+ data->y = data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_VERTICAL);
+ break;
+
+ case RSVG_ATTRIBUTE_Z:
+ data->z = data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_BOTH);
+ break;
+
+ case RSVG_ATTRIBUTE_POINTS_AT_X:
+ data->pointsAtX = rsvg_length_parse (value, LENGTH_DIR_HORIZONTAL);
+ break;
+
+ case RSVG_ATTRIBUTE_POINTS_AT_Y:
+ data->pointsAtY = rsvg_length_parse (value, LENGTH_DIR_VERTICAL);
+ break;
+
+ case RSVG_ATTRIBUTE_POINTS_AT_Z:
+ data->pointsAtZ = rsvg_length_parse (value, LENGTH_DIR_BOTH);
+ break;
+
+ case RSVG_ATTRIBUTE_SPECULAR_EXPONENT:
+ data->specularExponent = g_ascii_strtod (value, NULL);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ rsvg_property_bag_iter_end (iter);
}
RsvgNode *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]