From: Michael Orlitzky Date: Tue, 17 Oct 2023 20:55:03 +0000 (-0400) Subject: src/svgtiny_css.c: define a css_select_handler X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;ds=sidebyside;h=b90df4ac34f3873c235392568f6b35ec8d56e78f;p=libsvgtiny.git src/svgtiny_css.c: define a css_select_handler We define a css_select_handler structure full of all of the select handlers we've just implemented. This is the big piece of the puzzle that we need before we can call css_select_style(). --- diff --git a/src/svgtiny_css.c b/src/svgtiny_css.c index 97d6307..76b01d1 100644 --- a/src/svgtiny_css.c +++ b/src/svgtiny_css.c @@ -4,6 +4,7 @@ #include "svgtiny.h" #include "svgtiny_internal.h" +/* select handler callbacks */ static css_error node_name(void *pw, void *node, css_qname *qname); static css_error node_classes(void *pw, void *node, lwc_string ***classes, uint32_t *n_classes); @@ -68,6 +69,9 @@ static css_error set_libcss_node_data(void *pw, void *node, static css_error get_libcss_node_data(void *pw, void *node, void **libcss_node_data); +/* select handler vtable */ +static struct css_select_handler svgtiny_select_handler; + /** * Resolve a relative URL to an absolute one by doing nothing. This is @@ -1920,3 +1924,48 @@ css_error get_libcss_node_data(void *pw, void *node, /* dom_node_get_user_data() always returns DOM_NO_ERR */ return CSS_OK; } + + +/** + * The vtable of select handler callbacks passed by libsvgtiny to + * css_select_style(). + */ +static css_select_handler svgtiny_select_handler = { + CSS_SELECT_HANDLER_VERSION_1, + node_name, + node_classes, + node_id, + named_ancestor_node, + named_parent_node, + named_sibling_node, + named_generic_sibling_node, + parent_node, + sibling_node, + node_has_name, + node_has_class, + node_has_id, + node_has_attribute, + node_has_attribute_equal, + node_has_attribute_dashmatch, + node_has_attribute_includes, + node_has_attribute_prefix, + node_has_attribute_suffix, + node_has_attribute_substring, + node_is_root, + node_count_siblings, + node_is_empty, + node_is_link, + node_is_visited, + node_is_hover, + node_is_active, + node_is_focus, + node_is_enabled, + node_is_disabled, + node_is_checked, + node_is_target, + node_is_lang, + node_presentational_hint, + ua_default_for_property, + set_libcss_node_data, + get_libcss_node_data, +};