Refactor filter code
More and more moving things around, giving names to types, etc. with the goal of having drawing_ctx construct the user_space_filter
and user_space_primitives
itself, and pass them down to the filters engine.
This MR doesn't quite reach that point, but almost! filters::render()
does the element-walking mess in a separate function, extract_filter_from_filter_node
, which creates a FilterSpec
. Then it just iterates the UserSpacePrimitive
s inside that and renders them.