/** * as_image_node_parse_dep11: * @image: a #AsImage instance. * @node: a #GNode. * @ctx: a #AsNodeContext. * @error: A #GError or %NULL. * * Populates the object from a DEP-11 node. * * Returns: %TRUE for success * * Since: 0.3.0 **/ gboolean as_image_node_parse_dep11 (AsImage *im, GNode *node, AsNodeContext *ctx, GError **error) { GNode *n; const gchar *tmp; for (n = node->children; n != NULL; n = n->next) { tmp = as_yaml_node_get_key (n); if (g_strcmp0 (tmp, "height") == 0) as_image_set_height (im, as_yaml_node_get_value_as_uint (n)); else if (g_strcmp0 (tmp, "width") == 0) as_image_set_width (im, as_yaml_node_get_value_as_uint (n)); else if (g_strcmp0 (tmp, "url") == 0) { const gchar *media_base_url = as_node_context_get_media_base_url (ctx); if (media_base_url != NULL) { g_autofree gchar *url = NULL; url = g_build_path ("/", media_base_url, as_yaml_node_get_value (n), NULL); as_image_set_url (im, url); } else { as_image_set_url (im, as_yaml_node_get_value (n)); } } } return TRUE; }
/** * as_icon_node_parse_dep11: * @icon: a #AsIcon instance. * @node: a #GNode. * @ctx: a #AsNodeContext. * @error: A #GError or %NULL. * * Populates the object from a DEP-11 node. * * Returns: %TRUE for success * * Since: 0.3.1 **/ gboolean as_icon_node_parse_dep11 (AsIcon *icon, GNode *node, AsNodeContext *ctx, GError **error) { GNode *n; AsIconPrivate *priv = GET_PRIVATE (icon); for (n = node->children; n != NULL; n = n->next) { const gchar *key; guint size; key = as_yaml_node_get_key (n); if (g_strcmp0 (key, "width") == 0) { size = as_yaml_node_get_value_as_uint (n); if (size == G_MAXUINT) size = 64; priv->width = size; } else if (g_strcmp0 (key, "height") == 0) { size = as_yaml_node_get_value_as_uint (n); if (size == G_MAXUINT) size = 64; priv->height = size; } else { if (priv->kind == AS_ICON_KIND_REMOTE) { if (g_strcmp0 (key, "url") == 0) { const gchar *media_baseurl; media_baseurl = as_node_context_get_media_base_url (ctx); if (media_baseurl == NULL) { /* no baseurl, we can just set the value as URL */ as_icon_set_url (icon, as_yaml_node_get_value (n)); } else { /* handle the media baseurl */ g_autofree gchar *url = NULL; url = g_build_filename (media_baseurl, as_yaml_node_get_value (n), NULL); as_icon_set_url (icon, url); } } } else { if (g_strcmp0 (key, "name") == 0) { const gchar *icon_name; icon_name = as_yaml_node_get_value (n); if (g_str_has_prefix (icon_name, "/")) as_icon_set_filename (icon, icon_name); else as_icon_set_name (icon, icon_name); } } } } return TRUE; }