]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // Boost.Geometry (aka GGL, Generic Geometry Library) |
2 | ||
3 | // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands. | |
4 | ||
5 | // Use, modification and distribution is subject to the Boost Software License, | |
6 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
7 | // http://www.boost.org/LICENSE_1_0.txt) | |
8 | ||
9 | // Code to create SVG for examples | |
10 | ||
11 | #ifndef CREATE_SVG_OVERLAY_HPP | |
12 | #define CREATE_SVG_OVERLAY_HPP | |
13 | ||
14 | #include <fstream> | |
15 | ||
16 | #include <boost/foreach.hpp> | |
17 | #include <boost/algorithm/string.hpp> | |
18 | ||
19 | #if defined(HAVE_SVG) | |
20 | # include <boost/geometry/io/svg/svg_mapper.hpp> | |
21 | #endif | |
22 | ||
23 | template <typename Geometry, typename Range> | |
24 | void create_svg(std::string const& filename, Geometry const& a, Geometry const& b, Range const& range) | |
25 | { | |
26 | #if defined(HAVE_SVG) | |
27 | std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl; | |
28 | ||
29 | typedef typename boost::geometry::point_type<Geometry>::type point_type; | |
30 | std::ofstream svg(filename.c_str()); | |
31 | ||
32 | boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400); | |
33 | mapper.add(a); | |
34 | mapper.add(b); | |
35 | ||
36 | mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2"); | |
37 | mapper.map(b, "fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2"); | |
38 | int i = 0; | |
39 | BOOST_FOREACH(typename boost::range_value<Range>::type const& g, range) | |
40 | { | |
41 | mapper.map(g, "opacity:0.8;fill:none;stroke:rgb(255,128,0);stroke-width:4;stroke-dasharray:1,7;stroke-linecap:round"); | |
42 | std::ostringstream out; | |
43 | out << i++; | |
44 | mapper.text(boost::geometry::return_centroid<point_type>(g), out.str(), | |
45 | "fill:rgb(0,0,0);font-family:Arial;font-size:10px"); | |
46 | } | |
47 | #else | |
48 | boost::ignore_unused_variable_warning(filename); | |
49 | boost::ignore_unused_variable_warning(a); | |
50 | boost::ignore_unused_variable_warning(b); | |
51 | boost::ignore_unused_variable_warning(range); | |
52 | #endif | |
53 | } | |
54 | ||
55 | // NOTE: convert manually from svg to png using Inkscape ctrl-shift-E | |
56 | // and copy png to html/img/algorithms/ | |
57 | ||
58 | ||
59 | #endif // CREATE_SVG_OVERLAY_HPP | |
60 |