Click here to Skip to main content
15,885,683 members
Articles / Desktop Programming / MFC

An MFC Chart Control with Enhanced User Interface

Rate me:
Please Sign up or sign in to vote.
4.92/5 (102 votes)
17 Jun 2013CPOL112 min read 437.1K   98.4K   390  
An MFC linear chart control with enhanced appearance.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>ChartContainerLib: C:/VS2010/Projects/ChartCtrlLib/ChartCtrlLib/Util.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">ChartContainerLib
   &#160;<span id="projectnumber">1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_util_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Macros</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Util.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_util_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"></span><span class="comment">//</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">//  Util.h - misc. utility functios</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span><span class="comment"></span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="keyword">using namespace </span>Gdiplus;</div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"></span><span class="comment">// Normalize string len</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"><a class="code" href="_util_8h.html#a5380adc60229a980c9421b8f6b066cdc">   15</a></span>&#160;<span class="keyword">typedef</span> std::basic_string&lt;TCHAR&gt; <a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a>;</div>
<div class="line"><a name="l00016"></a><span class="lineno"><a class="code" href="_util_8h.html#a6dbea4e28fa3d26f696fab6efc07a847">   16</a></span>&#160;<span class="keyword">typedef</span> std::basic_stringstream&lt;TCHAR&gt; <a class="code" href="_chart_def_8h.html#a6dbea4e28fa3d26f696fab6efc07a847">sstream_t</a>;</div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a> <a class="code" href="_util_8cpp.html#aa79e41e9f6c19b0beca118c9b2e75c96">NormalizeString</a>(<a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a> str, <span class="keywordtype">size_t</span> maxLen, TCHAR delim);</div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">/////////////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="_util_8h.html#a96faf9b07a88e2201a66a60bc52a5c45">   23</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_util_8h.html#a96faf9b07a88e2201a66a60bc52a5c45">in_range</a>(<span class="keyword">const</span> T&amp; lL, <span class="keyword">const</span> T&amp; rL, <span class="keyword">const</span> T&amp; val)</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;{</div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;  <span class="keywordflow">return</span> ((val &gt;= lL) &amp;&amp; (val &lt;= rL));</div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;}</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"></span><span class="comment">// Gdiplus RectF conversion functions</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="_util_8h.html#a541fae2d078ff90c197fe91e6ec83428">   31</a></span>&#160;<span class="keyword">inline</span> Rect <a class="code" href="_util_8h.html#a541fae2d078ff90c197fe91e6ec83428">CRectToGdiRect</a>(CRect&amp; rect)</div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;{</div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  <span class="keywordflow">return</span> Rect(<span class="keywordtype">int</span>(rect.left), <span class="keywordtype">int</span>(rect.top), <span class="keywordtype">int</span>(rect.Width()), <span class="keywordtype">int</span>(rect.Height()));</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;}</div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="_util_8h.html#a13896b0e29b485fe16bf2780699a51c3">   36</a></span>&#160;<span class="keyword">inline</span> RectF <a class="code" href="_util_8h.html#a13896b0e29b485fe16bf2780699a51c3">CRectToGdiRectF</a>(CRect&amp; rect)</div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;{</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="keywordflow">return</span> </div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;   RectF(<span class="keywordtype">float</span>(rect.left), <span class="keywordtype">float</span>(rect.top), <span class="keywordtype">float</span>(rect.Width()), <span class="keywordtype">float</span>(rect.Height()));</div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;}</div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="_util_8h.html#a3932b37fc39105a22443847c75a66e02">   42</a></span>&#160;<span class="keyword">inline</span> CRect <a class="code" href="_util_8h.html#a3932b37fc39105a22443847c75a66e02" title="In client coord. ">RectFToCRect</a>(RectF&amp; rectF)  <span class="comment">/// In client coord</span></div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment"></span>{</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <span class="keywordtype">int</span> left = int(max(floor(rectF.X), 0.0f));</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  <span class="keywordtype">int</span> top  = int(max(floor(rectF.Y), 0.0f));;</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="keywordtype">int</span> right = int(ceil(rectF.GetRight()));</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="keywordtype">int</span> bottom = int(ceil(rectF.GetBottom()));</div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keywordflow">return</span> CRect(left, top, right, bottom);</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;}</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="_util_8h.html#ad4241dcbd92007f79c6b005879616616">   51</a></span>&#160;<span class="keyword">inline</span> RectF <a class="code" href="_util_8h.html#ad4241dcbd92007f79c6b005879616616">GdiRectToRectF</a>(Rect rect)</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;{</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="keywordflow">return</span> </div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    RectF(<span class="keywordtype">float</span>(rect.X), <span class="keywordtype">float</span>(rect.Y), <span class="keywordtype">float</span>(rect.Width), <span class="keywordtype">float</span>(rect.Height));</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;}</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="_util_8h.html#ad12a28f5ed37de8eceb17c2bfc099de8">   57</a></span>&#160;<span class="keyword">inline</span> RectF <a class="code" href="_util_8h.html#ad12a28f5ed37de8eceb17c2bfc099de8">RectFFromCenterF</a>(<span class="keyword">const</span> PointF pntCenterF, </div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;                                                   <span class="keywordtype">float</span> fWidth, <span class="keywordtype">float</span> fHeight)</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;{</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  RectF rectF(pntCenterF.X, pntCenterF.Y, 0.0f, 0.0f);</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  rectF.Inflate(fWidth/2.0f, fHeight/2.0f);</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keywordflow">return</span> rectF;</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;}         </div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="_util_8h.html#a46ed6c789465b9ff2a2bf731b67b684e">   65</a></span>&#160;<span class="keyword">inline</span> PointF <a class="code" href="_util_8h.html#a46ed6c789465b9ff2a2bf731b67b684e">GetRectFCenterF</a>(<span class="keyword">const</span> RectF rectF)</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;{</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  PointF pntF;</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  pntF.X = rectF.X + rectF.Width/2.0f;</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  pntF.Y = rectF.Y + rectF.Height/2.0f;</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  <span class="keywordflow">return</span> pntF;</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="_util_8h.html#aa5ba45a77b5acb31e4faa08bc690f626">   73</a></span>&#160;<span class="keyword">inline</span> CPoint <a class="code" href="_util_8h.html#aa5ba45a77b5acb31e4faa08bc690f626">CPointFromPntF</a>(PointF pntF)</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;{</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  CPoint pntC;</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="keywordtype">float</span> fX = pntF.X &lt; 0.0f ? pntF.X - 0.5f : pntF.X + 0.5f;   </div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="keywordtype">float</span> fY = pntF.Y &lt; 0.0f ? pntF.Y - 0.5f : pntF.Y + 0.5f;   </div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  pntC.x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(fX);</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  pntC.y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(fY);</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordflow">return</span> pntC;</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;}</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="keywordtype">void</span> <a class="code" href="_util_8cpp.html#a56499599dbb1620816adc7cf265e13d2">CreateRoundedRect</a>(GraphicsPath&amp; grPath, RectF&amp; rectF, <span class="keywordtype">float</span> radius, <span class="keywordtype">bool</span> bReset);</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="_util_8h.html#a68596bdfd7bfb50647b3df02d9ae2e3b">   85</a></span>&#160;<span class="keyword">inline</span> Color <a class="code" href="_util_8h.html#a68596bdfd7bfb50647b3df02d9ae2e3b">SetAlpha</a>(<span class="keyword">const</span> Color color, <span class="keywordtype">int</span> alpha)</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;{</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  ARGB locArgb = color.GetValue();</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  locArgb &amp;= ~Color::AlphaMask;</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  locArgb |= (alpha &lt;&lt; Color::AlphaShift);</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keywordflow">return</span> Color(locArgb);</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;}</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="comment">/////////////////////////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="comment"></span><span class="comment">// Predicates</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="keyword">class </span><a class="code" href="class_point_t.html">PointT</a>;</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="structcoord__in__range.html">  101</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcoord__in__range.html">coord_in_range</a></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;{</div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="structcoord__in__range.html#a9e857884d2f1f4c5c7430eefe0ac2161">  103</a></span>&#160;  T <a class="code" href="structcoord__in__range.html#a9e857884d2f1f4c5c7430eefe0ac2161">_left</a>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="structcoord__in__range.html#a00dc186f9d5d478822af8dd0964389d7">  104</a></span>&#160;  T <a class="code" href="structcoord__in__range.html#a00dc186f9d5d478822af8dd0964389d7">_right</a>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="structcoord__in__range.html#a1f4111733e41749c887ab8a32e29f244">  105</a></span>&#160;  <a class="code" href="structcoord__in__range.html#a1f4111733e41749c887ab8a32e29f244">coord_in_range</a>(T left, T right):_left(left), _right(right) {}</div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="code" href="structcoord__in__range.html#ac9b4db71cb58c2350a1add7284804433">  106</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  {</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    T val = pnt.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a>;</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordflow">return</span> ((val &gt; _left)&amp;&amp;(val &lt; _right));</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  }</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;};</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html">  115</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcoord__in__range.html">coord_in_range</a>&lt;T, false&gt;</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;{</div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html#a46e7ddff1f90b0ba2e3b93555c95deea">  117</a></span>&#160;  T <a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html#a46e7ddff1f90b0ba2e3b93555c95deea">_left</a>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html#a364477c72ed11545eab232b2bfa9672a">  118</a></span>&#160;  T <a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html#a364477c72ed11545eab232b2bfa9672a">_right</a>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html#aca5c479f7274bfa1234df6bb2c3897a0">  119</a></span>&#160;  <a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html#aca5c479f7274bfa1234df6bb2c3897a0">coord_in_range</a>(T left, T right):_left(left), _right(right) {}</div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="structcoord__in__range_3_01_t_00_01false_01_4.html#af4cc7975aa4c5831e98f807755cc57e2">  120</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    T val = pnt.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a>;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keywordflow">return</span> ((val &gt; _left)&amp;&amp;(val &lt; _right));</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  }</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;};</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="code" href="structless__pnt.html">  128</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structless__pnt.html">less_pnt</a></div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div>
<div class="line"><a name="l00130"></a><span class="lineno"><a class="code" href="structless__pnt.html#ae6379e54c7dca249c5033d5b5fcfd84f">  130</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; Left, <span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; Right)</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  {</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordflow">return</span> Left.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a> &lt; Right.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a>;</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  }</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;};</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="structless__pnt_3_01_t_00_01false_01_4.html">  138</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structless__pnt.html">less_pnt</a>&lt;T, false&gt;</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;{</div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="code" href="structless__pnt_3_01_t_00_01false_01_4.html#a91ffbd7667bc91e055ff74754b7f8710">  140</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; Left, <span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; Right)</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  {</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">return</span> Left.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a> &lt; Right.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a>;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  }</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;};</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="structequal__coord.html">  147</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structequal__coord.html">equal_coord</a></div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;{</div>
<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="structequal__coord.html#aa5288f416d5e703e0f35a0dfdde7d9c9">  149</a></span>&#160;  T <a class="code" href="structequal__coord.html#aa5288f416d5e703e0f35a0dfdde7d9c9">_coord</a>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="code" href="structequal__coord.html#a81883426d2610a03ed09467baffbf145">  150</a></span>&#160;  <a class="code" href="structequal__coord.html#a81883426d2610a03ed09467baffbf145">equal_coord</a>(T coord) : _coord(coord) {}</div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="structequal__coord.html#abcc19ed4ae43f8f7ebe4235b4e33cbb6">  151</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pntT)</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  {</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keywordflow">return</span> (pntT.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a> == _coord);</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  }</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;};</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="structequal__coord_3_01_t_00_01false_01_4.html">  159</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structequal__coord.html">equal_coord</a>&lt;T, false&gt;</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;{</div>
<div class="line"><a name="l00161"></a><span class="lineno"><a class="code" href="structequal__coord_3_01_t_00_01false_01_4.html#a002c197618d9e8f883b633213af23868">  161</a></span>&#160;  T <a class="code" href="structequal__coord_3_01_t_00_01false_01_4.html#a002c197618d9e8f883b633213af23868">_coord</a>;</div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="structequal__coord_3_01_t_00_01false_01_4.html#a7851f80ddfd1ef053701e90a429e3576">  162</a></span>&#160;  <a class="code" href="structequal__coord_3_01_t_00_01false_01_4.html#a7851f80ddfd1ef053701e90a429e3576">equal_coord</a>(T coord) : _coord(coord) {}</div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="code" href="structequal__coord_3_01_t_00_01false_01_4.html#a99158aa83bbd19a81da12cba4158a567">  163</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pntT)</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  {</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="keywordflow">return</span> (pntT.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a> == _coord);</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  }</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;};</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="structgreater__or__equal.html">  170</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structgreater__or__equal.html">greater_or_equal</a></div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;{</div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="code" href="structgreater__or__equal.html#a833425b3f58a6733cb9bb7d2b304e6d3">  172</a></span>&#160;  T <a class="code" href="structgreater__or__equal.html#a833425b3f58a6733cb9bb7d2b304e6d3">_val</a>;</div>
<div class="line"><a name="l00173"></a><span class="lineno"><a class="code" href="structgreater__or__equal.html#a7264b395da852676fc260e61eeba0ecb">  173</a></span>&#160;  <a class="code" href="structgreater__or__equal.html#a7264b395da852676fc260e61eeba0ecb">greater_or_equal</a>(T val): _val(val) {}</div>
<div class="line"><a name="l00174"></a><span class="lineno"><a class="code" href="structgreater__or__equal.html#a4358bd48deda020a04fdd134ccbd0d7a">  174</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  {</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">return</span>  _val : pnt.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a> &gt;= _val;</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  }</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;};</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="code" href="structgreater__or__equal_3_01_t_00_01false_01_4.html">  182</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structgreater__or__equal.html">greater_or_equal</a>&lt;T, false&gt;</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;{</div>
<div class="line"><a name="l00184"></a><span class="lineno"><a class="code" href="structgreater__or__equal_3_01_t_00_01false_01_4.html#ad39bc309aa591f3b90eb5db6a78a70e7">  184</a></span>&#160;  T <a class="code" href="structgreater__or__equal_3_01_t_00_01false_01_4.html#ad39bc309aa591f3b90eb5db6a78a70e7">_val</a>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"><a class="code" href="structgreater__or__equal_3_01_t_00_01false_01_4.html#a4d8f402518a2cf7b064072006ec037e7">  185</a></span>&#160;  <a class="code" href="structgreater__or__equal_3_01_t_00_01false_01_4.html#a4d8f402518a2cf7b064072006ec037e7">greater_or_equal</a>(T val): _val(val) {}</div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="code" href="structgreater__or__equal_3_01_t_00_01false_01_4.html#a18c32f282032d0d7ac31b27bfdc02377">  186</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  {</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordflow">return</span> pnt.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a> &gt;= _val;</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  }</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;};</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="code" href="structin__vicinity.html">  193</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structin__vicinity.html">in_vicinity</a> </div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;{</div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="structin__vicinity.html#a91a7c7b379e311de4b479d45f3b28880">  195</a></span>&#160;  <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> <a class="code" href="structin__vicinity.html#a91a7c7b379e311de4b479d45f3b28880">_origPntT</a>, _epsPntT;</div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="structin__vicinity.html#a2f90006dc56a867a2baf83a053b6905e">  196</a></span>&#160;  <a class="code" href="structin__vicinity.html#a2f90006dc56a867a2baf83a053b6905e">in_vicinity</a>(<a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> origPntT, <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> epsPntT): _origPntT(origPntT), </div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                              _epsPntT(<a class="code" href="class_point_t.html">PointT</a>&lt;T&gt;(abs(epsPntT.X), abs(epsPntT.Y))) {}</div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="code" href="structin__vicinity.html#a8e720bfab9487750658be24cea1fae4a">  198</a></span>&#160;  <span class="keywordtype">bool</span> operator ()(<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pntT)</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  {</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;      <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> vicT = pntT - _origPntT;</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;      <span class="keywordflow">return</span> ((abs(vicT.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a>) &lt; _epsPntT.X)&amp;&amp; (abs(vicT.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a>) &lt; _epsPntT.Y));</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  }</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;};</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> Pnt, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00206"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval.html">  206</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlesser__adjacent__interval.html">lesser_adjacent_interval</a></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;{</div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval.html#a4aa08007bae8159bcc9ab3568a370d45">  208</a></span>&#160;  Pnt <a class="code" href="structlesser__adjacent__interval.html#a4aa08007bae8159bcc9ab3568a370d45">_epsPnt</a>;</div>
<div class="line"><a name="l00209"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval.html#a394f861cf9a59b6b17d240fd314096a5">  209</a></span>&#160;  <a class="code" href="structlesser__adjacent__interval.html#a394f861cf9a59b6b17d240fd314096a5">lesser_adjacent_interval</a>(Pnt epsPnt):_epsPnt(epsPnt) {}</div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval.html#abde85d639b4df86714baa2df8c92009e">  210</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> Pnt&amp; leftPnt, <span class="keyword">const</span> Pnt&amp; rightPnt)</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  {</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="keywordtype">bool</span> bRes;</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordflow">if</span> (rightPnt.Y == leftPnt.Y)</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      bRes = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      bRes = (rightPnt.Y - leftPnt.Y) &lt; _epsPnt.Y;</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">return</span> bRes;</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  }</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;};</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="comment">// Partial Specialization for false</span></div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> Pnt&gt;</div>
<div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval_3_01_pnt_00_01false_01_4.html">  223</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlesser__adjacent__interval.html">lesser_adjacent_interval</a>&lt;Pnt, false&gt;</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;{</div>
<div class="line"><a name="l00225"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval_3_01_pnt_00_01false_01_4.html#a2a8517e50dc48ed7fd373a36f8c65c48">  225</a></span>&#160;  Pnt <a class="code" href="structlesser__adjacent__interval_3_01_pnt_00_01false_01_4.html#a2a8517e50dc48ed7fd373a36f8c65c48">_epsPnt</a>;</div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval_3_01_pnt_00_01false_01_4.html#a14862d496f938f40cd126f850fc29c74">  226</a></span>&#160;  <a class="code" href="structlesser__adjacent__interval_3_01_pnt_00_01false_01_4.html#a14862d496f938f40cd126f850fc29c74">lesser_adjacent_interval</a>(Pnt epsPnt):_epsPnt(epsPnt) {}</div>
<div class="line"><a name="l00227"></a><span class="lineno"><a class="code" href="structlesser__adjacent__interval_3_01_pnt_00_01false_01_4.html#a5bfc75650171eecdb51956065190ea8f">  227</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> Pnt&amp; leftPnt, <span class="keyword">const</span> Pnt&amp; rightPnt)</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  {</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keywordtype">bool</span> bRes;</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordflow">if</span> (rightPnt.X == leftPnt.X)</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      bRes = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      bRes = (rightPnt.X - leftPnt.X) &lt; _epsPnt.X;</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">return</span> bRes;</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  }</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;};</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00239"></a><span class="lineno"><a class="code" href="structtime__series__to__pnt.html">  239</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structtime__series__to__pnt.html">time_series_to_pnt</a></div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;{</div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="code" href="structtime__series__to__pnt.html#ae699a935c7ea4d0138857b78f8c2399c">  241</a></span>&#160;  <span class="keywordtype">size_t</span> <a class="code" href="structtime__series__to__pnt.html#ae699a935c7ea4d0138857b78f8c2399c">_idx</a>;</div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="code" href="structtime__series__to__pnt.html#a887bf4f2a7dede62e3fd1ca073c38af9">  242</a></span>&#160;  T <a class="code" href="structtime__series__to__pnt.html#a887bf4f2a7dede62e3fd1ca073c38af9">_startX</a>;</div>
<div class="line"><a name="l00243"></a><span class="lineno"><a class="code" href="structtime__series__to__pnt.html#aeb1cc676a4685a98020ae2eef7aedee5">  243</a></span>&#160;  T <a class="code" href="structtime__series__to__pnt.html#aeb1cc676a4685a98020ae2eef7aedee5">_stepX</a>;</div>
<div class="line"><a name="l00244"></a><span class="lineno"><a class="code" href="structtime__series__to__pnt.html#a4ec928698897a129f405b66a6711647e">  244</a></span>&#160;  <a class="code" href="structtime__series__to__pnt.html#a4ec928698897a129f405b66a6711647e">time_series_to_pnt</a>(T startX, T stepX) : </div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;              _startX(startX), _stepX(stepX), _idx(0) {}</div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="code" href="structtime__series__to__pnt.html#a50716d5e0a32dfa68961a4e5f2dd9934">  246</a></span>&#160;  <span class="keyword">inline</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> operator () (<span class="keyword">const</span> T&amp; valY)</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  {</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> pnt(_startX + _idx*_stepX, valY);</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    ++_idx;</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <span class="keywordflow">return</span> pnt;</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  }</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;};</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00256"></a><span class="lineno"><a class="code" href="structxy__to__pnt.html">  256</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structxy__to__pnt.html">xy_to_pnt</a></div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;{</div>
<div class="line"><a name="l00258"></a><span class="lineno"><a class="code" href="structxy__to__pnt.html#acf3479bddc83bac6ede1ab6a56dbbc2d">  258</a></span>&#160;  <a class="code" href="structxy__to__pnt.html#acf3479bddc83bac6ede1ab6a56dbbc2d">xy_to_pnt</a>() {}</div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="code" href="structxy__to__pnt.html#a1eac246f399b5160803e9d440a2adee1">  259</a></span>&#160;  <span class="keyword">inline</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> operator () (<span class="keyword">const</span> std::pair&lt;T, T&gt;&amp; XY)</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  {</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> pnt(XY.first, XY.second);</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <span class="keywordflow">return</span> pnt;</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  }</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;};</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="comment">// Receives dereferenced map iterator and returns the second of the pair key-value</span></div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt;</div>
<div class="line"><a name="l00268"></a><span class="lineno"><a class="code" href="structget__map__value.html">  268</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structget__map__value.html">get_map_value</a></div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;{</div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="code" href="structget__map__value.html#a14f57d46058fd22a67e62e77e18b6398">  270</a></span>&#160;  <span class="keyword">inline</span> T2 operator () (<span class="keyword">const</span> std::pair&lt;T1, T2&gt;&amp; val_pair)</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  {</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="keywordflow">return</span> val_pair.second;</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  }</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;};</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="code" href="structcount__in__range.html">  277</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcount__in__range.html">count_in_range</a></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;{</div>
<div class="line"><a name="l00279"></a><span class="lineno"><a class="code" href="structcount__in__range.html#a6486c73a9213a6c3f04e7fecb1217225">  279</a></span>&#160;  T <a class="code" href="structcount__in__range.html#a6486c73a9213a6c3f04e7fecb1217225">_left</a>;</div>
<div class="line"><a name="l00280"></a><span class="lineno"><a class="code" href="structcount__in__range.html#a02ba123ee621c265d06787e02325051a">  280</a></span>&#160;  T <a class="code" href="structcount__in__range.html#a02ba123ee621c265d06787e02325051a">_right</a>;</div>
<div class="line"><a name="l00281"></a><span class="lineno"><a class="code" href="structcount__in__range.html#a5a92cd8de0b77433dbef3b7cf6074463">  281</a></span>&#160;  <a class="code" href="structcount__in__range.html#a5a92cd8de0b77433dbef3b7cf6074463">count_in_range</a>(T left, T right):_left(left), _right(right) {}</div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="code" href="structcount__in__range.html#a9094b67ef457f0bf65746f6fa6c2f481">  282</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  {</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    T compVal = pnt.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a>;</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keywordflow">return</span> ((compVal &gt;= _left) &amp;&amp; (compVal &lt;= _right));</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  }</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;};</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00291"></a><span class="lineno"><a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html">  291</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcount__in__range.html">count_in_range</a>&lt;T, false&gt;</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;{</div>
<div class="line"><a name="l00293"></a><span class="lineno"><a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html#a1863bef597364e96d0937066c00a2e4a">  293</a></span>&#160;  T <a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html#a1863bef597364e96d0937066c00a2e4a">_left</a>;</div>
<div class="line"><a name="l00294"></a><span class="lineno"><a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html#aab9d5d5fed3147c259555ebed07b8c30">  294</a></span>&#160;  T <a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html#aab9d5d5fed3147c259555ebed07b8c30">_right</a>;</div>
<div class="line"><a name="l00295"></a><span class="lineno"><a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html#a1e62f99fe7329dada70d1050a18463c6">  295</a></span>&#160;  <a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html#a1e62f99fe7329dada70d1050a18463c6">count_in_range</a>(T left, T right):_left(left), _right(right) {}</div>
<div class="line"><a name="l00296"></a><span class="lineno"><a class="code" href="structcount__in__range_3_01_t_00_01false_01_4.html#a4a01e5db4a4d9bd5b86e88588e1ae1b8">  296</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  {</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    T compVal = pnt.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a>;</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    <span class="keywordflow">return</span> ((compVal &gt;= _left) &amp;&amp; (compVal &lt;= _right));</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  }</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;};</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00304"></a><span class="lineno"><a class="code" href="structnearest__to.html">  304</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnearest__to.html">nearest_to</a>     <span class="comment">// Apply to sorted sequence only</span></div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;{</div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="code" href="structnearest__to.html#a38ed5a7de8188c481f388f7d4c69f7ef">  306</a></span>&#160;  <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> <a class="code" href="structnearest__to.html#a38ed5a7de8188c481f388f7d4c69f7ef">_origPnt</a>;</div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="code" href="structnearest__to.html#a9e4a1949b3e2f844e430826c9709884d">  307</a></span>&#160;  T <a class="code" href="structnearest__to.html#a9e4a1949b3e2f844e430826c9709884d">_distance</a>;</div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="code" href="structnearest__to.html#a7aa0b1fa289399721e4b9065b8d5b044">  308</a></span>&#160;  <a class="code" href="structnearest__to.html#a7aa0b1fa289399721e4b9065b8d5b044">nearest_to</a>(<a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> origPnt, T distance):_origPnt(origPnt), _distance(distance) {}</div>
<div class="line"><a name="l00309"></a><span class="lineno"><a class="code" href="structnearest__to.html#a6618c32abb86e15f717049413c574d1c">  309</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  {</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    T value = pnt.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a>;</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    T  orig = _origPnt.Y;</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    T dist = orig - value;</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <span class="keywordflow">if</span> (dist &lt; T(0)) dist = -dist;</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <span class="keywordflow">if</span> (dist &gt; _distance)</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    _distance = dist;</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  }</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;};</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00324"></a><span class="lineno"><a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html">  324</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnearest__to.html">nearest_to</a>&lt;T, false&gt;     <span class="comment">// Apply to sorted sequence only</span></div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;{</div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html#a61a3e11adf2651e93ffb9e86b009979b">  326</a></span>&#160;  <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> <a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html#a61a3e11adf2651e93ffb9e86b009979b">_origPnt</a>;</div>
<div class="line"><a name="l00327"></a><span class="lineno"><a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html#ab4ca8ad53e2c656aad9d6978cbbe6745">  327</a></span>&#160;  T <a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html#ab4ca8ad53e2c656aad9d6978cbbe6745">_distance</a>;</div>
<div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html#a2457817cd228543f90aa8c2882e95d91">  328</a></span>&#160;  <a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html#a2457817cd228543f90aa8c2882e95d91">nearest_to</a>(<a class="code" href="class_point_t.html">PointT&lt;T&gt;</a> origPnt, T distance):_origPnt(origPnt), _distance(distance) {}</div>
<div class="line"><a name="l00329"></a><span class="lineno"><a class="code" href="structnearest__to_3_01_t_00_01false_01_4.html#a6146415c4a0c6861a64d0f56ed1a1d46">  329</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  {</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    T value = pnt.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a>;</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    T  orig = _origPnt.X;</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    T dist = orig - value;</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordflow">if</span> (dist &lt; T(0)) dist = -dist;</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keywordflow">if</span> (dist &gt; _distance)</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    _distance = dist;</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;  }</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;};</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="structnmb__to__string.html">  343</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnmb__to__string.html">nmb_to_string</a></div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;{</div>
<div class="line"><a name="l00345"></a><span class="lineno"><a class="code" href="structnmb__to__string.html#a82b49154fb2565831cc7b7d9b8f2dc9d">  345</a></span>&#160;  <span class="keyword">typedef</span> std::basic_string&lt;_TCHAR&gt; <a class="code" href="structnmb__to__string.html#a82b49154fb2565831cc7b7d9b8f2dc9d">string_t</a>;</div>
<div class="line"><a name="l00346"></a><span class="lineno"><a class="code" href="structnmb__to__string.html#a71c64670c62649d1501134b08f111c28">  346</a></span>&#160;  <span class="keyword">typedef</span> std::basic_stringstream&lt;TCHAR&gt; <a class="code" href="structnmb__to__string.html#a71c64670c62649d1501134b08f111c28">sstream_t</a>;</div>
<div class="line"><a name="l00347"></a><span class="lineno"><a class="code" href="structnmb__to__string.html#aea79174e6d09934aec1885e46a05c3ca">  347</a></span>&#160;  <span class="keyword">typedef</span> <a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a> (__stdcall *<a class="code" href="_chart_def_8h.html#a36793f1e036a5b91b34104c2d8b6ea39">val_label_str_fn</a>)(<span class="keywordtype">double</span> val, <span class="keywordtype">int</span> precision, <span class="keywordtype">bool</span> bAddEqSign);</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div>
<div class="line"><a name="l00349"></a><span class="lineno"><a class="code" href="structnmb__to__string.html#a95c13191e1507ecab6c6b2291a97a8c4">  349</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="structnmb__to__string.html#a95c13191e1507ecab6c6b2291a97a8c4">_prec</a>;</div>
<div class="line"><a name="l00350"></a><span class="lineno"><a class="code" href="structnmb__to__string.html#a8631264e50a3a6efdc6050f717da14f1">  350</a></span>&#160;  <a class="code" href="_chart_def_8h.html#a36793f1e036a5b91b34104c2d8b6ea39">val_label_str_fn</a> <a class="code" href="structnmb__to__string.html#a8631264e50a3a6efdc6050f717da14f1">_pStrFn</a>;</div>
<div class="line"><a name="l00351"></a><span class="lineno"><a class="code" href="structnmb__to__string.html#a05161922faca4714d30d751b353962b3">  351</a></span>&#160;  <a class="code" href="structnmb__to__string.html#a05161922faca4714d30d751b353962b3">nmb_to_string</a>(<span class="keywordtype">int</span> prec, <a class="code" href="_chart_def_8h.html#a36793f1e036a5b91b34104c2d8b6ea39">val_label_str_fn</a> pStrFn) : _prec(prec), _pStrFn(pStrFn) {}</div>
<div class="line"><a name="l00352"></a><span class="lineno"><a class="code" href="structnmb__to__string.html#a07bd78c779ded7c1718b349741789dcb">  352</a></span>&#160;  <a class="code" href="structnmb__to__string.html#a82b49154fb2565831cc7b7d9b8f2dc9d">string_t</a> <a class="code" href="structnmb__to__string.html#a07bd78c779ded7c1718b349741789dcb">operator()</a>(<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;  {</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    T val = pnt.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a>;</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <a class="code" href="structnmb__to__string.html#a82b49154fb2565831cc7b7d9b8f2dc9d">string_t</a> res = _pStrFn(val, _prec, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  }</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;};</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment">// Partial specialization for pntD.X</span></div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00362"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html">  362</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnmb__to__string.html">nmb_to_string</a> &lt;T, false&gt;</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;{</div>
<div class="line"><a name="l00364"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#af3725228f638485391b294af6408aa5f">  364</a></span>&#160;  <span class="keyword">typedef</span> std::basic_string&lt;_TCHAR&gt; <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#af3725228f638485391b294af6408aa5f">string_t</a>;</div>
<div class="line"><a name="l00365"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#a3bd0b1c68d45565139b00947bec607a4">  365</a></span>&#160;  <span class="keyword">typedef</span> std::basic_stringstream&lt;TCHAR&gt; <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#a3bd0b1c68d45565139b00947bec607a4">sstream_t</a>;</div>
<div class="line"><a name="l00366"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#ad4838975d87255b04ce1b02df8968c7c">  366</a></span>&#160;  <span class="keyword">typedef</span> <a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a> (__stdcall *<a class="code" href="_chart_def_8h.html#a36793f1e036a5b91b34104c2d8b6ea39">val_label_str_fn</a>)(<span class="keywordtype">double</span> val, <span class="keywordtype">int</span> precision, <span class="keywordtype">bool</span> bAddEqSign);</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div>
<div class="line"><a name="l00368"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#ac04cfa8c68adb4c20ad6ce33b407da5b">  368</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#ac04cfa8c68adb4c20ad6ce33b407da5b">_prec</a>;</div>
<div class="line"><a name="l00369"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#a6414976c105d61953886f623b6167bf4">  369</a></span>&#160;  <a class="code" href="_chart_def_8h.html#a36793f1e036a5b91b34104c2d8b6ea39">val_label_str_fn</a> <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#a6414976c105d61953886f623b6167bf4">_pStrFn</a>;</div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#af4dbde08e36d4ee108b318c577100398">  370</a></span>&#160;  <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#af4dbde08e36d4ee108b318c577100398">nmb_to_string</a>(<span class="keywordtype">int</span> prec, <a class="code" href="_chart_def_8h.html#a36793f1e036a5b91b34104c2d8b6ea39">val_label_str_fn</a> pStrFn) : _prec(prec), _pStrFn(pStrFn) {}</div>
<div class="line"><a name="l00371"></a><span class="lineno"><a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#a43544421e08cd86635b2a315c400d497">  371</a></span>&#160;  <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#af3725228f638485391b294af6408aa5f">string_t</a> <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#a43544421e08cd86635b2a315c400d497">operator()</a>(<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pnt)</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  {</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    T val = pnt.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a>;</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <a class="code" href="structnmb__to__string_3_01_t_00_01false_01_4.html#af3725228f638485391b294af6408aa5f">string_t</a> res = _pStrFn(val, _prec, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;  }</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;};</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> bY&gt;</div>
<div class="line"><a name="l00380"></a><span class="lineno"><a class="code" href="structnot__inside__range.html">  380</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnot__inside__range.html">not_inside_range</a></div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;{</div>
<div class="line"><a name="l00382"></a><span class="lineno"><a class="code" href="structnot__inside__range.html#a210843537e8a7c716db584232bc32f6d">  382</a></span>&#160;  T <a class="code" href="structnot__inside__range.html#a210843537e8a7c716db584232bc32f6d">_lhs</a>;</div>
<div class="line"><a name="l00383"></a><span class="lineno"><a class="code" href="structnot__inside__range.html#a62a04c5096111945d0dcf96fdcfe6285">  383</a></span>&#160;  T <a class="code" href="structnot__inside__range.html#a62a04c5096111945d0dcf96fdcfe6285">_rhs</a>;</div>
<div class="line"><a name="l00384"></a><span class="lineno"><a class="code" href="structnot__inside__range.html#a0a4990624662b164fc7e3a25788e2b24">  384</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structnot__inside__range.html#a0a4990624662b164fc7e3a25788e2b24">_bFnd</a>;</div>
<div class="line"><a name="l00385"></a><span class="lineno"><a class="code" href="structnot__inside__range.html#ab8b6a459ce69239456fa4c4574bc5ca6">  385</a></span>&#160;  <a class="code" href="structnot__inside__range.html#ab8b6a459ce69239456fa4c4574bc5ca6">not_inside_range</a>(T lhs, T rhs) : _lhs(lhs), _rhs(rhs), _bFnd(false) {}</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div>
<div class="line"><a name="l00387"></a><span class="lineno"><a class="code" href="structnot__inside__range.html#a0422a29b82f33b9e844b2bbceb4ecc73">  387</a></span>&#160;  <span class="keyword">inline</span> std::pair&lt;bool, bool&gt; operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pntT)</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  {</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keywordtype">bool</span> bLeft = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <span class="keywordtype">bool</span> bRight = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    <span class="keywordflow">if</span> (pntT.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a> &lt; _lhs)</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      bLeft = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!_bFnd &amp;&amp; (pntT.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a> == _lhs))</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    { </div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;      bLeft = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      _bFnd = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    }</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pntT.<a class="code" href="class_point_t.html#ae15d4277de9185eabced96bc8d94ffcc">Y</a> &gt;= _rhs)</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;      bRight = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    std::pair&lt;bool, bool&gt; pair_res(bLeft, bRight);</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    <span class="keywordflow">return</span> pair_res;</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;  }</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;};</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00407"></a><span class="lineno"><a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html">  407</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnot__inside__range.html">not_inside_range</a>&lt;T, false&gt;</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;{</div>
<div class="line"><a name="l00409"></a><span class="lineno"><a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#a40c5886935edc0c535c50d8e08d86bd4">  409</a></span>&#160;  T <a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#a40c5886935edc0c535c50d8e08d86bd4">_lhs</a>;</div>
<div class="line"><a name="l00410"></a><span class="lineno"><a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#a858e05f1db3fbac455f458bdee83059c">  410</a></span>&#160;  T <a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#a858e05f1db3fbac455f458bdee83059c">_rhs</a>;</div>
<div class="line"><a name="l00411"></a><span class="lineno"><a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#ad977656d70ee8997ecbe82524cb995e7">  411</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#ad977656d70ee8997ecbe82524cb995e7">_bFnd</a>;</div>
<div class="line"><a name="l00412"></a><span class="lineno"><a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#a1037d59ab55782fd8d146579db844f23">  412</a></span>&#160;  <a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#a1037d59ab55782fd8d146579db844f23">not_inside_range</a>(T lhs, T rhs) : _lhs(lhs), _rhs(rhs), _bFnd(false) {}</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;</div>
<div class="line"><a name="l00414"></a><span class="lineno"><a class="code" href="structnot__inside__range_3_01_t_00_01false_01_4.html#a3fd0090bac494d76cc6be317c1430806">  414</a></span>&#160;  <span class="keyword">inline</span> std::pair&lt;bool, bool&gt; operator () (<span class="keyword">const</span> <a class="code" href="class_point_t.html">PointT&lt;T&gt;</a>&amp; pntT)</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;  {</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    <span class="keywordtype">bool</span> bLeft = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <span class="keywordtype">bool</span> bRight = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordflow">if</span> (pntT.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a> &lt; _lhs)</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;      bLeft = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!_bFnd &amp;&amp; (pntT.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a> == _lhs))</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;    { </div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;      bLeft = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;      _bFnd = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    }</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pntT.<a class="code" href="class_point_t.html#ae8656a84c5abd873ea65e951b89a0e18">X</a> &gt;= _rhs)</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;      bRight = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    std::pair&lt;bool, bool&gt; pair_res(bLeft, bRight);</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="keywordflow">return</span> pair_res;</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  }</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;};</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">int</span> Idx&gt;</div>
<div class="line"><a name="l00433"></a><span class="lineno"><a class="code" href="structget__max__str.html">  433</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structget__max__str.html">get_max_str</a></div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;{</div>
<div class="line"><a name="l00435"></a><span class="lineno"><a class="code" href="structget__max__str.html#a969570559a5516ef53b4336d48add373">  435</a></span>&#160;  Gdiplus::Font* <a class="code" href="structget__max__str.html#a969570559a5516ef53b4336d48add373">_pFont</a>;</div>
<div class="line"><a name="l00436"></a><span class="lineno"><a class="code" href="structget__max__str.html#af8b2398af21d5324d6c7a59c457755f2">  436</a></span>&#160;  Graphics* <a class="code" href="structget__max__str.html#af8b2398af21d5324d6c7a59c457755f2">_grPtr</a>;</div>
<div class="line"><a name="l00437"></a><span class="lineno"><a class="code" href="structget__max__str.html#ab1b4638a79b5cc72bf63a9a500cc9ce9">  437</a></span>&#160;  RectF     <a class="code" href="structget__max__str.html#ab1b4638a79b5cc72bf63a9a500cc9ce9">_maxRF</a>;</div>
<div class="line"><a name="l00438"></a><span class="lineno"><a class="code" href="structget__max__str.html#aa67db7b3841065fd25f62baa91aa190a">  438</a></span>&#160;  <a class="code" href="structget__max__str.html#aa67db7b3841065fd25f62baa91aa190a">get_max_str</a>(Gdiplus::Font *pFont, Graphics* grPtr): _pFont(pFont), _grPtr(grPtr) {}</div>
<div class="line"><a name="l00439"></a><span class="lineno"><a class="code" href="structget__max__str.html#ad872da83a36d0350787f86c223c7b60c">  439</a></span>&#160;  <span class="keywordtype">void</span> operator () (<span class="keyword">const</span> T&amp; t)</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  {</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    RectF rF;</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    PointF pntF(0.0f, 0.0f);</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a> str = get&lt;Idx&gt;(t);</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;    _grPtr-&gt;MeasureString(str.c_str(),-1, _pFont, pntF, &amp;rF);</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    <span class="keywordflow">if</span> (rF.Width &gt; _maxRF.Width)</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;      _maxRF = rF;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  }</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;};</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="comment">// Partial specialization</span></div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Idx&gt;</div>
<div class="line"><a name="l00452"></a><span class="lineno"><a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html">  452</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structget__max__str.html">get_max_str</a> &lt;<a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a>, Idx&gt;</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;{</div>
<div class="line"><a name="l00454"></a><span class="lineno"><a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#ac698ac03cf32f55970d921a3e6af0e6f">  454</a></span>&#160;  Gdiplus::Font* <a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#ac698ac03cf32f55970d921a3e6af0e6f">_pFont</a>;</div>
<div class="line"><a name="l00455"></a><span class="lineno"><a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#a78c9358af4e68184d0e9b70d1241f953">  455</a></span>&#160;  Graphics* <a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#a78c9358af4e68184d0e9b70d1241f953">_grPtr</a>;</div>
<div class="line"><a name="l00456"></a><span class="lineno"><a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#af116f2f74011cdd742f8bab44c534aae">  456</a></span>&#160;  RectF     <a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#af116f2f74011cdd742f8bab44c534aae">_maxRF</a>;</div>
<div class="line"><a name="l00457"></a><span class="lineno"><a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#aa3b99a7827e10d0ac64d176427ded205">  457</a></span>&#160;  <a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#aa3b99a7827e10d0ac64d176427ded205">get_max_str</a>(Gdiplus::Font *pFont, Graphics* grPtr): _pFont(pFont), _grPtr(grPtr) {}</div>
<div class="line"><a name="l00458"></a><span class="lineno"><a class="code" href="structget__max__str_3_01string__t_00_01_idx_01_4.html#a1d0499e8084954183cf15bb0be48e8aa">  458</a></span>&#160;  <span class="keywordtype">void</span> operator () (<span class="keyword">const</span> <a class="code" href="_chart_def_8h.html#a5380adc60229a980c9421b8f6b066cdc">string_t</a>&amp; str)</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;  {</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;    RectF rF;</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    PointF pntF(0.0f, 0.0f);</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    _grPtr-&gt;MeasureString(str.c_str(),-1, _pFont, pntF, &amp;rF);</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <span class="keywordflow">if</span> (rF.Width &gt; _maxRF.Width)</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;      _maxRF = rF;</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;  }</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;};</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;<span class="comment"></span><span class="comment">// Algorithms</span></div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;<span class="comment">//Find closest to X or Y coord of some origin point; apply to sorted sequences only</span></div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> _InIt, <span class="keyword">class</span> _Pr&gt; </div>
<div class="line"><a name="l00473"></a><span class="lineno"><a class="code" href="_util_8h.html#a331344e36737d0d5398411ee57ceddb1">  473</a></span>&#160;<span class="keyword">inline</span> _InIt <a class="code" href="_util_8h.html#a331344e36737d0d5398411ee57ceddb1">find_nearest</a>(_InIt _First, _InIt _Last, _Pr _Pred)</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;{       </div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        _DEBUG_RANGE(_First, _Last);</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        _DEBUG_POINTER(_Pred);</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  _InIt _NearestIt = _First; <span class="comment">// Find first satisfying _Pred</span></div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;        <span class="keywordflow">for</span> (; _First != _Last; ++_First)</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  {</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                <span class="keywordflow">if</span> (_Pred(*_First))</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;                        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    _NearestIt = _First;</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;  }</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        <span class="keywordflow">return</span> (_NearestIt);</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;}</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;<span class="comment">// Search for the points with X coordinates closest to, but no inside some X range.</span></div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;<span class="comment">// Apply to sorted sequeces only</span></div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> _InIt, <span class="keyword">class</span> _Pr&gt;</div>
<div class="line"><a name="l00492"></a><span class="lineno"><a class="code" href="_util_8h.html#afdb2319561cb5e462e1608318f504f7e">  492</a></span>&#160;<span class="keyword">inline</span> std::pair&lt;_InIt, _InIt&gt; <a class="code" href="_util_8h.html#afdb2319561cb5e462e1608318f504f7e">find_border_pnts</a>(_InIt _First, _InIt _Last, _Pr _Pred)</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;{</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        _DEBUG_RANGE(_First, _Last);</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;        _DEBUG_POINTER(_Pred);</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  std::pair&lt;_InIt, _InIt&gt; pair_res_alg = make_pair(_First, _Last);</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <span class="keywordflow">for</span> (; _First != _Last; ++_First )</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;  {</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    std::pair&lt;bool, bool&gt; pair_pred_res = _Pred(*_First);</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    <span class="keywordflow">if</span> (pair_pred_res.first == <span class="keyword">true</span>)</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;      pair_res_alg.first = _First;</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    <span class="keywordflow">if</span> (pair_pred_res.second == <span class="keyword">true</span>)</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    {</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;      pair_res_alg.second = _First;</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;    }</div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  }</div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  <span class="keywordflow">return</span> pair_res_alg;</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;}</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;</div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;</div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_0a9f44e95b87e02e38e480a4eb5f2de7.html">ChartCtrlLib</a></li><li class="navelem"><a class="el" href="_util_8h.html">Util.h</a></li>
    <li class="footer">Generated on Sun Jun 16 2013 20:31:44 for ChartContainerLib by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.4 </li>
  </ul>
</div>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer Verizon Internet Services
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions