m_num_rects++;
}
+void SVGAnalyzer::on_enter_element_text() {
+ enter_element(SVG::SVGElementType::Text);
+ m_num_texts++;
+}
+
void SVGAnalyzer::on_enter_element_title() {
enter_element(SVG::SVGElementType::Title);
m_num_titles++;
void on_enter_element_polygon() override;
void on_enter_element_polyline() override;
void on_enter_element_rect() override;
+ void on_enter_element_text() override;
void on_enter_element_title() override;
void on_exit_element() override;
std::size_t num_svgs() const { return m_num_svgs; };
std::size_t num_polygons() const { return m_num_polygons; };
std::size_t num_polylines() const { return m_num_polylines; };
std::size_t num_rects() const { return m_num_rects; };
+ std::size_t num_texts() const { return m_num_texts; };
std::size_t num_titles() const { return m_num_titles; };
std::string svg_string(std::size_t indent_size = 2) const;
std::size_t m_num_polygons = 0;
std::size_t m_num_polylines = 0;
std::size_t m_num_rects = 0;
+ std::size_t m_num_texts = 0;
std::size_t m_num_titles = 0;
/// The top level SVG `svg` element corresponding to the Graphviz graph
SVG::SVGElement m_svg;
virtual void on_enter_element_polygon() = 0;
virtual void on_enter_element_polyline() = 0;
virtual void on_enter_element_rect() = 0;
+ virtual void on_enter_element_text() = 0;
virtual void on_enter_element_title() = 0;
virtual void on_exit_element() = 0;
};
m_svgAnalyzer->on_enter_element_rect();
}
+void SvgppContext::on_enter_element(svgpp::tag::element::text) {
+ m_svgAnalyzer->on_enter_element_text();
+}
+
void SvgppContext::on_enter_element(svgpp::tag::element::title) {
m_svgAnalyzer->on_enter_element_title();
}
void on_enter_element(svgpp::tag::element::polygon e);
void on_enter_element(svgpp::tag::element::polyline e);
void on_enter_element(svgpp::tag::element::rect e);
+ void on_enter_element(svgpp::tag::element::text e);
void on_enter_element(svgpp::tag::element::title e);
void on_exit_element();
void path_move_to(double x, double y, svgpp::tag::coordinate::absolute);
svgpp::tag::element::circle, svgpp::tag::element::ellipse,
svgpp::tag::element::line, svgpp::tag::element::path,
svgpp::tag::element::polygon, svgpp::tag::element::polyline,
- svgpp::tag::element::rect, svgpp::tag::element::title>::type;
+ svgpp::tag::element::rect, svgpp::tag::element::text,
+ svgpp::tag::element::title>::type;
svgpp::document_traversal<
svgpp::processed_elements<processed_elements_t>,
const std::size_t expected_num_rects = 0;
const std::size_t expected_num_titles =
expected_num_graphs + expected_num_nodes + expected_num_edges;
+ const std::size_t expected_num_texts =
+ shape == "point" ? 0 : expected_num_nodes;
CHECK(svgAnalyzer.num_svgs() == expected_num_svgs);
CHECK(svgAnalyzer.num_groups() == expected_num_groups);
CHECK(svgAnalyzer.num_polylines() == expected_num_polylines);
CHECK(svgAnalyzer.num_rects() == expected_num_rects);
CHECK(svgAnalyzer.num_titles() == expected_num_titles);
+ CHECK(svgAnalyzer.num_texts() == expected_num_texts);
const auto indent_size = 0;
auto recreated_svg = svgAnalyzer.svg_string(indent_size);
CHECK(recreated_svg.find("<g>") != std::string::npos);
CHECK(recreated_svg.find("</g>") != std::string::npos);
CHECK(recreated_svg.find("<title/>") != std::string::npos);
+ if (shape != "point") {
+ CHECK(recreated_svg.find("<text/>") != std::string::npos);
+ }
CHECK(recreated_svg.find("<polygon/>") != std::string::npos);
CHECK(recreated_svg.find("<path/>") != std::string::npos);
}