3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>svg_mapper</title>
5 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../../../index.html" title="Chapter 1. Geometry">
8 <link rel="up" href="../svg.html" title="SVG (Scalable Vector Graphics)">
9 <link rel="prev" href="svg.html" title="svg">
10 <link rel="next" href="../../iterators.html" title="Iterators">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="svg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../svg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../iterators.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h5 class="title">
27 <a name="geometry.reference.io.svg.svg_mapper"></a><a class="link" href="svg_mapper.html" title="svg_mapper">svg_mapper</a>
28 </h5></div></div></div>
30 <a class="indexterm" name="idm46186984382576"></a>
31 Helper class to create SVG maps.
34 <a name="geometry.reference.io.svg.svg_mapper.h0"></a>
35 <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.synopsis"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.synopsis">Synopsis</a>
39 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">SameScale</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SvgCoordinateType</span><span class="special">></span>
40 <span class="keyword">class</span> <span class="identifier">svg_mapper</span>
41 <span class="special">:</span> <span class="identifier">noncopyable</span>
42 <span class="special">{</span>
43 <span class="comment">// ...</span>
44 <span class="special">};</span>
49 <a name="geometry.reference.io.svg.svg_mapper.h1"></a>
50 <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.template_parameter_s_"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.template_parameter_s_">Template
53 <div class="informaltable"><table class="table">
87 Point type, for input geometries.
104 Boolean flag indicating if horizontal and vertical scale should
105 be the same. The default value is true
112 typename SvgCoordinateType
122 Coordinate type of SVG points. SVG is capable to use floating
123 point coordinates. Therefore the default value is double
130 <a name="geometry.reference.io.svg.svg_mapper.h2"></a>
131 <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.constructor_s_"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.constructor_s_">Constructor(s)</a>
133 <div class="informaltable"><table class="table">
161 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">svg_mapper</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span> <span class="special">&</span> <span class="identifier">stream</span><span class="special">,</span> <span class="identifier">SvgCoordinateType</span> <span class="identifier">width</span><span class="special">,</span> <span class="identifier">SvgCoordinateType</span> <span class="identifier">height</span><span class="special">,</span>
162 <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">width_height</span> <span class="special">=</span> <span class="string">"width=\"100%\" height=\"100%\""</span><span class="special">)</span></pre>
168 Constructor, initializing the SVG map. Opens and initializes
169 the SVG. Should be called explicitly.
174 <span class="bold"><strong>std::ostream &</strong></span>: <span class="emphasis"><em>stream</em></span>:
175 Output stream, should be a stream already open
178 <span class="bold"><strong>SvgCoordinateType</strong></span>: <span class="emphasis"><em>width</em></span>:
179 Width of the SVG map (in SVG pixels)
182 <span class="bold"><strong>SvgCoordinateType</strong></span>: <span class="emphasis"><em>height</em></span>:
183 Height of the SVG map (in SVG pixels)
186 <span class="bold"><strong>std::string const &</strong></span>:
187 <span class="emphasis"><em>width_height</em></span>: Optional information to
188 increase width and/or height
196 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">~</span><span class="identifier">svg_mapper</span><span class="special">()</span></pre>
202 Destructor, called automatically. Closes the SVG by streaming
212 <a name="geometry.reference.io.svg.svg_mapper.h3"></a>
213 <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.member_function_s_"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.member_function_s_">Member
216 <div class="informaltable"><table class="table">
250 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">></span>
251 <span class="keyword">void</span> <span class="identifier">add</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
257 Adds a geometry to the transformation matrix. After doing this,
258 the specified geometry can be mapped fully into the SVG map.
263 <span class="bold"><strong>Geometry const &</strong></span>: <span class="emphasis"><em>geometry</em></span>:
264 A model of the specified concept
274 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">></span>
275 <span class="keyword">void</span> <span class="identifier">map</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">style</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">size</span> <span class="special">=</span> <span class="special">-</span><span class="number">1.0</span><span class="special">)</span></pre>
281 Maps a geometry into the SVG map using the specified style.
286 <span class="bold"><strong>Geometry const &</strong></span>: <span class="emphasis"><em>geometry</em></span>:
287 A model of the specified concept
290 <span class="bold"><strong>std::string const &</strong></span>:
291 <span class="emphasis"><em>style</em></span>: String containing verbatim SVG
295 <span class="bold"><strong>double</strong></span>: <span class="emphasis"><em>size</em></span>:
296 Optional size (used for SVG points) in SVG pixels. For linestrings,
297 specify linewidth in the SVG style information
307 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TextPoint</span><span class="special">></span>
308 <span class="keyword">void</span> <span class="identifier">text</span><span class="special">(</span><span class="identifier">TextPoint</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">style</span><span class="special">,</span>
309 <span class="keyword">double</span> <span class="identifier">offset_x</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">offset_y</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">lineheight</span> <span class="special">=</span> <span class="number">10.0</span><span class="special">)</span></pre>
315 Adds a text to the SVG map.
320 <span class="bold"><strong>TextPoint const &</strong></span>: <span class="emphasis"><em>point</em></span>:
321 Location of the text (in map units)
324 <span class="bold"><strong>std::string const &</strong></span>:
325 <span class="emphasis"><em>s</em></span>: The text itself
328 <span class="bold"><strong>std::string const &</strong></span>:
329 <span class="emphasis"><em>style</em></span>: String containing verbatim SVG
330 style information, of the text
333 <span class="bold"><strong>double</strong></span>: <span class="emphasis"><em>offset_x</em></span>:
334 Offset in SVG pixels, defaults to 0
337 <span class="bold"><strong>double</strong></span>: <span class="emphasis"><em>offset_y</em></span>:
338 Offset in SVG pixels, defaults to 0
341 <span class="bold"><strong>double</strong></span>: <span class="emphasis"><em>lineheight</em></span>:
342 Line height in SVG pixels, in case the text contains
351 <a name="geometry.reference.io.svg.svg_mapper.h4"></a>
352 <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.header"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.header">Header</a>
358 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
364 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">svg</span><span class="special">/</span><span class="identifier">svg_mapper</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
367 <a name="geometry.reference.io.svg.svg_mapper.h5"></a>
368 <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.example"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.example">Example</a>
371 Shows the usage of svg_mapper
375 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
376 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">fstream</span><span class="special">></span>
378 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
379 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
380 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
382 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
383 <span class="special">{</span>
384 <span class="comment">// Specify the basic type</span>
385 <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">point_type</span><span class="special">;</span>
387 <span class="comment">// Declare some geometries and set their values</span>
388 <span class="identifier">point_type</span> <span class="identifier">a</span><span class="special">;</span>
389 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">assign_values</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="number">6</span><span class="special">);</span>
391 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special"><</span><span class="identifier">point_type</span><span class="special">></span> <span class="identifier">b</span><span class="special">;</span>
392 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 7,4 2,2 0,0 0))"</span><span class="special">,</span> <span class="identifier">b</span><span class="special">);</span>
394 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special"><</span><span class="identifier">point_type</span><span class="special">></span> <span class="identifier">c</span><span class="special">;</span>
395 <span class="identifier">c</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point_type</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="number">4</span><span class="special">));</span>
396 <span class="identifier">c</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point_type</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
398 <span class="comment">// Declare a stream and an SVG mapper</span>
399 <span class="identifier">std</span><span class="special">::</span><span class="identifier">ofstream</span> <span class="identifier">svg</span><span class="special">(</span><span class="string">"my_map.svg"</span><span class="special">);</span>
400 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">svg_mapper</span><span class="special"><</span><span class="identifier">point_type</span><span class="special">></span> <span class="identifier">mapper</span><span class="special">(</span><span class="identifier">svg</span><span class="special">,</span> <span class="number">400</span><span class="special">,</span> <span class="number">400</span><span class="special">);</span>
402 <span class="comment">// Add geometries such that all these geometries fit on the map</span>
403 <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">a</span><span class="special">);</span>
404 <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span>
405 <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">c</span><span class="special">);</span>
407 <span class="comment">// Draw the geometries on the SVG map, using a specific SVG style</span>
408 <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">map</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="string">"fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2"</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span>
409 <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">map</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="string">"fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2"</span><span class="special">);</span>
410 <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">map</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="string">"opacity:0.4;fill:none;stroke:rgb(212,0,0);stroke-width:5"</span><span class="special">);</span>
412 <span class="comment">// Destructor of map will be called - adding </svg></span>
413 <span class="comment">// Destructor of stream will be called, closing the file</span>
415 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
416 <span class="special">}</span>
424 <span class="inlinemediaobject"><img src="../../../../img/io/svg_mapper.png" alt="svg_mapper"></span>
427 <a name="geometry.reference.io.svg.svg_mapper.h6"></a>
428 <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.see_also"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.see_also">See
431 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
432 <a class="link" href="svg.html" title="svg">The SVG manipulator</a>
435 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
436 <td align="left"></td>
437 <td align="right"><div class="copyright-footer">Copyright © 2009-2019 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
438 Wulkiewicz, Oracle and/or its affiliates<p>
439 Distributed under the Boost Software License, Version 1.0. (See accompanying
440 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
445 <div class="spirit-nav">
446 <a accesskey="p" href="svg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../svg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../iterators.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>