[librsvg: 85/95] rsvg_node_light_source_set_atts(): Parse attributes with the PHF



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]