use svgdom;
use tree;
use super::prelude::*;
use super::{
path,
text,
shapes,
};
pub fn convert(
node: &svgdom::Node,
rtree: &mut tree::Tree,
) -> tree::Node {
let attrs = node.attributes();
rtree.append_to_defs(
tree::NodeKind::ClipPath(tree::ClipPath {
id: node.id().clone(),
units: super::convert_element_units(&attrs, AId::ClipPathUnits),
transform: attrs.get_transform(AId::Transform).unwrap_or_default(),
})
)
}
pub fn convert_children(
node: &svgdom::Node,
parent: &tree::Node,
rtree: &mut tree::Tree,
) {
for (id, node) in node.children().svg() {
match id {
EId::Rect
| EId::Polyline
| EId::Polygon
| EId::Circle
| EId::Ellipse => {
if let Some(d) = shapes::convert(&node) {
path::convert(&node, d, parent.clone(), rtree);
}
}
EId::Path => {
let attrs = node.attributes();
if let Some(d) = attrs.get_path(AId::D) {
path::convert(&node, d.clone(), parent.clone(), rtree);
}
}
EId::Text => {
text::convert(&node, parent.clone(), rtree);
}
EId::Line => {
}
_ => {
warn!("Skipping the '{}' clipPath invalid child element '{}'.",
node.id(), id);
continue;
}
}
}
}