~ubuntu-branches/ubuntu/vivid/tesseract/vivid

« back to all changes in this revision

Viewing changes to doc/html/a00921.html

  • Committer: Package Import Robot
  • Author(s): Jeff Breidenbach
  • Date: 2014-02-03 11:10:20 UTC
  • mfrom: (1.3.1) (19.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20140203111020-igquodd7pjlp3uri
Tags: 3.03.01-1
* New upstream release, includes critical fix to PDF rendering
* Complete leptonlib transition (see bug #735509)
* Promote from experimental to unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
2
<html xmlns="http://www.w3.org/1999/xhtml">
 
3
<head>
 
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
5
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
 
6
<title>tesseract: /usr/local/google/home/jbreiden/tesseract-ocr-read-only/classify/mfoutline.h File Reference</title>
 
7
 
 
8
<link href="tabs.css" rel="stylesheet" type="text/css"/>
 
9
<link href="doxygen.css" rel="stylesheet" type="text/css" />
 
10
<link href="navtree.css" rel="stylesheet" type="text/css"/>
 
11
<script type="text/javascript" src="jquery.js"></script>
 
12
<script type="text/javascript" src="resize.js"></script>
 
13
<script type="text/javascript" src="navtree.js"></script>
 
14
<script type="text/javascript">
 
15
  $(document).ready(initResizable);
 
16
</script>
 
17
<link href="search/search.css" rel="stylesheet" type="text/css"/>
 
18
<script type="text/javascript" src="search/search.js"></script>
 
19
<script type="text/javascript">
 
20
  $(document).ready(function() { searchBox.OnSelectItem(0); });
 
21
</script>
 
22
 
 
23
</head>
 
24
<body>
 
25
<div id="top"><!-- do not remove this div! -->
 
26
 
 
27
 
 
28
<div id="titlearea">
 
29
<table cellspacing="0" cellpadding="0">
 
30
 <tbody>
 
31
 <tr style="height: 56px;">
 
32
  
 
33
  
 
34
  <td style="padding-left: 0.5em;">
 
35
   <div id="projectname">tesseract
 
36
   &#160;<span id="projectnumber">3.03</span>
 
37
   </div>
 
38
   
 
39
  </td>
 
40
  
 
41
  
 
42
  
 
43
 </tr>
 
44
 </tbody>
 
45
</table>
 
46
</div>
 
47
 
 
48
<!-- Generated by Doxygen 1.7.6.1 -->
 
49
<script type="text/javascript">
 
50
var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
51
</script>
 
52
  <div id="navrow1" class="tabs">
 
53
    <ul class="tablist">
 
54
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
 
55
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
 
56
      <li><a href="modules.html"><span>Modules</span></a></li>
 
57
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
 
58
      <li><a href="annotated.html"><span>Classes</span></a></li>
 
59
      <li class="current"><a href="files.html"><span>Files</span></a></li>
 
60
      <li>
 
61
        <div id="MSearchBox" class="MSearchBoxInactive">
 
62
        <span class="left">
 
63
          <img id="MSearchSelect" src="search/mag_sel.png"
 
64
               onmouseover="return searchBox.OnSearchSelectShow()"
 
65
               onmouseout="return searchBox.OnSearchSelectHide()"
 
66
               alt=""/>
 
67
          <input type="text" id="MSearchField" value="Search" accesskey="S"
 
68
               onfocus="searchBox.OnSearchFieldFocus(true)" 
 
69
               onblur="searchBox.OnSearchFieldFocus(false)" 
 
70
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
 
71
          </span><span class="right">
 
72
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
 
73
          </span>
 
74
        </div>
 
75
      </li>
 
76
    </ul>
 
77
  </div>
 
78
  <div id="navrow2" class="tabs2">
 
79
    <ul class="tablist">
 
80
      <li><a href="files.html"><span>File&#160;List</span></a></li>
 
81
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
 
82
    </ul>
 
83
  </div>
 
84
</div>
 
85
<div id="side-nav" class="ui-resizable side-nav-resizable">
 
86
  <div id="nav-tree">
 
87
    <div id="nav-tree-contents">
 
88
    </div>
 
89
  </div>
 
90
  <div id="splitbar" style="-moz-user-select:none;" 
 
91
       class="ui-resizable-handle">
 
92
  </div>
 
93
</div>
 
94
<script type="text/javascript">
 
95
  initNavTree('a00921.html','');
 
96
</script>
 
97
<div id="doc-content">
 
98
<div class="header">
 
99
  <div class="summary">
 
100
<a href="#nested-classes">Classes</a> &#124;
 
101
<a href="#define-members">Defines</a> &#124;
 
102
<a href="#typedef-members">Typedefs</a> &#124;
 
103
<a href="#enum-members">Enumerations</a> &#124;
 
104
<a href="#func-members">Functions</a>  </div>
 
105
  <div class="headertitle">
 
106
<div class="title">/usr/local/google/home/jbreiden/tesseract-ocr-read-only/classify/mfoutline.h File Reference</div>  </div>
 
107
</div><!--header-->
 
108
<div class="contents">
 
109
<div class="textblock"><code>#include &quot;<a class="el" href="a00730_source.html">blobs.h</a>&quot;</code><br/>
 
110
<code>#include &quot;<a class="el" href="a00831_source.html">host.h</a>&quot;</code><br/>
 
111
<code>#include &quot;<a class="el" href="a01043_source.html">oldlist.h</a>&quot;</code><br/>
 
112
<code>#include &quot;<a class="el" href="a00897_source.html">fpoint.h</a>&quot;</code><br/>
 
113
<code>#include &quot;<a class="el" href="a00844_source.html">params.h</a>&quot;</code><br/>
 
114
</div>
 
115
<p><a href="a00921_source.html">Go to the source code of this file.</a></p>
 
116
<table class="memberdecls">
 
117
<tr><td colspan="2"><h2><a name="nested-classes"></a>
 
118
Classes</h2></td></tr>
 
119
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00466.html">MFEDGEPT</a></td></tr>
 
120
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00479.html">OUTLINE_STATS</a></td></tr>
 
121
<tr><td colspan="2"><h2><a name="define-members"></a>
 
122
Defines</h2></td></tr>
 
123
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ac2f24132ffdd44f1b1ac9f861003ef55">NORMAL_X_HEIGHT</a>&#160;&#160;&#160;(0.5)</td></tr>
 
124
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ac5d2acf8cce6a604ff52887a9be290ed">NORMAL_BASELINE</a>&#160;&#160;&#160;(0.0)</td></tr>
 
125
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a3bebacc8131f75b46dc7a107d22fcae2">AverageOf</a>(A, B)&#160;&#160;&#160;(((A) + (B)) / 2)</td></tr>
 
126
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a91645597f620e8307a65e8ab35d963b8">MF_SCALE_FACTOR</a>&#160;&#160;&#160;(<a class="el" href="a00921.html#ac2f24132ffdd44f1b1ac9f861003ef55">NORMAL_X_HEIGHT</a> / <a class="el" href="a00759.html#af974e6755e636c8bc7cbe57e3bcbdd73">kBlnXHeight</a>)</td></tr>
 
127
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ac8e258367e719e5a22e83af1c2b33e53">DegenerateOutline</a>(O)&#160;&#160;&#160;(((O) == <a class="el" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>) || ((O) == <a class="el" href="a01043.html#adb120d4c08ce52b5dfe524f0419a9154">list_rest</a>(O)))</td></tr>
 
128
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a>(O)&#160;&#160;&#160;((<a class="el" href="a00466.html">MFEDGEPT</a> *) <a class="el" href="a01043.html#a69547be764424f18b0be535400747978">first_node</a> (O))</td></tr>
 
129
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a>(E)&#160;&#160;&#160;(<a class="el" href="a01043.html#adb120d4c08ce52b5dfe524f0419a9154">list_rest</a> (E))</td></tr>
 
130
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a72b744e3e7220468dad3d2c67ef65bbf">MakeOutlineCircular</a>(O)&#160;&#160;&#160;(<a class="el" href="a01043.html#a42cc2d9c5eabb2193e2e64df41adedf4">set_rest</a> (<a class="el" href="a01043.html#ad9ec1d10cbd07fc3376ef300df603418">last</a> (O), (O)))</td></tr>
 
131
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a1960e4d5f6a5ee3649830432ab38937b">ClearMark</a>(P)&#160;&#160;&#160;((P)-&gt;ExtremityMark = FALSE)</td></tr>
 
132
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ae5174bb3e6e300b198551b13834c1a62">MarkPoint</a>(P)&#160;&#160;&#160;((P)-&gt;ExtremityMark = TRUE)</td></tr>
 
133
<tr><td colspan="2"><h2><a name="typedef-members"></a>
 
134
Typedefs</h2></td></tr>
 
135
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a></td></tr>
 
136
<tr><td colspan="2"><h2><a name="enum-members"></a>
 
137
Enumerations</h2></td></tr>
 
138
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0">DIRECTION</a> { <br/>
 
139
&#160;&#160;<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0a257e6b7fcd6ccb860083f20eb9bd660d">north</a>, 
 
140
<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0a035a454a75284b5dc261bd500ab311ed">south</a>, 
 
141
<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0a1be79cd4775c5384e197f1031580b10a">east</a>, 
 
142
<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0a9f771a3f89930d6b7e164e32a951dcb6">west</a>, 
 
143
<br/>
 
144
&#160;&#160;<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0ae3b4c14104592166f37bd10677137b23">northeast</a>, 
 
145
<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0a612166623e6f200d052d3d8dc4c075c0">northwest</a>, 
 
146
<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0ae1fe6949267a85f8ffd113c0eb67116a">southeast</a>, 
 
147
<a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0a0a8b39b36c98d2346b9a5453838f3aea">southwest</a>
 
148
<br/>
 
149
 }</td></tr>
 
150
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#abace9421f1a42147c8af40a950bc7203">OUTLINETYPE</a> { <a class="el" href="a00921.html#abace9421f1a42147c8af40a950bc7203a281b97b7e8b9c87a09e7fc5b5fe95da8">outer</a>, 
 
151
<a class="el" href="a00921.html#abace9421f1a42147c8af40a950bc7203a35dab49845fd740fff6be6c2702e49a4">hole</a>
 
152
 }</td></tr>
 
153
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a2a4b69f9a2827dc98bc4cbc233118865">NORM_METHOD</a> { <a class="el" href="a00921.html#a2a4b69f9a2827dc98bc4cbc233118865a83297de004f4e58b9be2108c6cd08a23">baseline</a>, 
 
154
<a class="el" href="a00921.html#a2a4b69f9a2827dc98bc4cbc233118865afa40ef3af4fea0001b535318130960b2">character</a>
 
155
 }</td></tr>
 
156
<tr><td colspan="2"><h2><a name="func-members"></a>
 
157
Functions</h2></td></tr>
 
158
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ac9f4e1c384c1d17dfa37ebd63096d232">ComputeBlobCenter</a> (<a class="el" href="a00591.html">TBLOB</a> *Blob, <a class="el" href="a00629.html">TPOINT</a> *BlobCenter)</td></tr>
 
159
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a36feb3bd4df38dbd78e7153278a08b10">ConvertBlob</a> (<a class="el" href="a00591.html">TBLOB</a> *Blob)</td></tr>
 
160
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a55eac211652384977ec812120a44e757">ConvertOutline</a> (<a class="el" href="a00613.html">TESSLINE</a> *Outline)</td></tr>
 
161
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a8e6bfe5c4f9d8f25a36647bc079d7e49">ConvertOutlines</a> (<a class="el" href="a00613.html">TESSLINE</a> *Outline, <a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a> ConvertedOutlines, <a class="el" href="a00921.html#abace9421f1a42147c8af40a950bc7203">OUTLINETYPE</a> OutlineType)</td></tr>
 
162
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a6a0f0accb0239e9d76cd8ff4ff147350">FilterEdgeNoise</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> Outline, <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> NoiseSegmentLength)</td></tr>
 
163
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ac2b870343576dd24d1c4871f5988d556">FindDirectionChanges</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> Outline, <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> MinSlope, <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> MaxSlope)</td></tr>
 
164
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a717586ca196e0c54bd0c99792acde58d">FreeMFOutline</a> (void *agr)</td></tr>
 
165
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a553352ad44661adad2a80a24ac78aeaf">FreeOutlines</a> (<a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a> Outlines)</td></tr>
 
166
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#afa2531f8656ba496465bc23ff1a2f99c">MarkDirectionChanges</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> Outline)</td></tr>
 
167
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00466.html">MFEDGEPT</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a917b406f8854b822d8cf2eb2480e6684">NewEdgePoint</a> ()</td></tr>
 
168
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#af520bd5bba313216d0b6fb9e58041266">NextExtremity</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> EdgePoint)</td></tr>
 
169
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a30b1492f0756c31499da0157ecba50ff">NormalizeOutline</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> Outline, <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> XOrigin)</td></tr>
 
170
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#abd95d6d2be6406aea26fbf0f0bf157ae">ChangeDirection</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> Start, <a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> End, <a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0">DIRECTION</a> Direction)</td></tr>
 
171
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#af5936ef194bb508756e2b1b891c31ece">CharNormalizeOutline</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> Outline, const <a class="el" href="a00352.html">DENORM</a> &amp;cn_denorm)</td></tr>
 
172
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a97334eef13fe16a7e0ce178f905d2c39">ComputeDirection</a> (<a class="el" href="a00466.html">MFEDGEPT</a> *Start, <a class="el" href="a00466.html">MFEDGEPT</a> *Finish, <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> MinSlope, <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> MaxSlope)</td></tr>
 
173
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a8983618bd7c7c05ff69355b0aa4185fe">FinishOutlineStats</a> (register <a class="el" href="a00479.html">OUTLINE_STATS</a> *OutlineStats)</td></tr>
 
174
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#ab1a3167a695b3448b64ee38f6da9a264">InitOutlineStats</a> (<a class="el" href="a00479.html">OUTLINE_STATS</a> *OutlineStats)</td></tr>
 
175
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a224d838335416038dcb0348f665f5a05">NextDirectionChange</a> (<a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> EdgePoint)</td></tr>
 
176
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00921.html#a943167d00e171b3cbc68252f32a45196">UpdateOutlineStats</a> (register <a class="el" href="a00479.html">OUTLINE_STATS</a> *OutlineStats, register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> x1, register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> x2, register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> y1, register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a> y2)</td></tr>
 
177
</table>
 
178
<hr/><h2>Define Documentation</h2>
 
179
<a class="anchor" id="a3bebacc8131f75b46dc7a107d22fcae2"></a><!-- doxytag: member="mfoutline.h::AverageOf" ref="a3bebacc8131f75b46dc7a107d22fcae2" args="(A, B)" -->
 
180
<div class="memitem">
 
181
<div class="memproto">
 
182
      <table class="memname">
 
183
        <tr>
 
184
          <td class="memname">#define <a class="el" href="a00921.html#a3bebacc8131f75b46dc7a107d22fcae2">AverageOf</a></td>
 
185
          <td>(</td>
 
186
          <td class="paramtype">&#160;</td>
 
187
          <td class="paramname">A, </td>
 
188
        </tr>
 
189
        <tr>
 
190
          <td class="paramkey"></td>
 
191
          <td></td>
 
192
          <td class="paramtype">&#160;</td>
 
193
          <td class="paramname">B&#160;</td>
 
194
        </tr>
 
195
        <tr>
 
196
          <td></td>
 
197
          <td>)</td>
 
198
          <td></td><td>&#160;&#160;&#160;(((A) + (B)) / 2)</td>
 
199
        </tr>
 
200
      </table>
 
201
</div>
 
202
<div class="memdoc">
 
203
<p>---------------------------------------------------------------------------- Macros ---------------------------------------------------------------------------- </p>
 
204
 
 
205
<p>Definition at line <a class="el" href="a00921_source.html#l00068">68</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
206
 
 
207
</div>
 
208
</div>
 
209
<a class="anchor" id="a1960e4d5f6a5ee3649830432ab38937b"></a><!-- doxytag: member="mfoutline.h::ClearMark" ref="a1960e4d5f6a5ee3649830432ab38937b" args="(P)" -->
 
210
<div class="memitem">
 
211
<div class="memproto">
 
212
      <table class="memname">
 
213
        <tr>
 
214
          <td class="memname">#define <a class="el" href="a00921.html#a1960e4d5f6a5ee3649830432ab38937b">ClearMark</a></td>
 
215
          <td>(</td>
 
216
          <td class="paramtype">&#160;</td>
 
217
          <td class="paramname">P</td><td>)</td>
 
218
          <td>&#160;&#160;&#160;((P)-&gt;ExtremityMark = FALSE)</td>
 
219
        </tr>
 
220
      </table>
 
221
</div>
 
222
<div class="memdoc">
 
223
 
 
224
<p>Definition at line <a class="el" href="a00921_source.html#l00080">80</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
225
 
 
226
</div>
 
227
</div>
 
228
<a class="anchor" id="ac8e258367e719e5a22e83af1c2b33e53"></a><!-- doxytag: member="mfoutline.h::DegenerateOutline" ref="ac8e258367e719e5a22e83af1c2b33e53" args="(O)" -->
 
229
<div class="memitem">
 
230
<div class="memproto">
 
231
      <table class="memname">
 
232
        <tr>
 
233
          <td class="memname">#define <a class="el" href="a00921.html#ac8e258367e719e5a22e83af1c2b33e53">DegenerateOutline</a></td>
 
234
          <td>(</td>
 
235
          <td class="paramtype">&#160;</td>
 
236
          <td class="paramname">O</td><td>)</td>
 
237
          <td>&#160;&#160;&#160;(((O) == <a class="el" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>) || ((O) == <a class="el" href="a01043.html#adb120d4c08ce52b5dfe524f0419a9154">list_rest</a>(O)))</td>
 
238
        </tr>
 
239
      </table>
 
240
</div>
 
241
<div class="memdoc">
 
242
 
 
243
<p>Definition at line <a class="el" href="a00921_source.html#l00074">74</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
244
 
 
245
</div>
 
246
</div>
 
247
<a class="anchor" id="a72b744e3e7220468dad3d2c67ef65bbf"></a><!-- doxytag: member="mfoutline.h::MakeOutlineCircular" ref="a72b744e3e7220468dad3d2c67ef65bbf" args="(O)" -->
 
248
<div class="memitem">
 
249
<div class="memproto">
 
250
      <table class="memname">
 
251
        <tr>
 
252
          <td class="memname">#define <a class="el" href="a00921.html#a72b744e3e7220468dad3d2c67ef65bbf">MakeOutlineCircular</a></td>
 
253
          <td>(</td>
 
254
          <td class="paramtype">&#160;</td>
 
255
          <td class="paramname">O</td><td>)</td>
 
256
          <td>&#160;&#160;&#160;(<a class="el" href="a01043.html#a42cc2d9c5eabb2193e2e64df41adedf4">set_rest</a> (<a class="el" href="a01043.html#ad9ec1d10cbd07fc3376ef300df603418">last</a> (O), (O)))</td>
 
257
        </tr>
 
258
      </table>
 
259
</div>
 
260
<div class="memdoc">
 
261
 
 
262
<p>Definition at line <a class="el" href="a00921_source.html#l00077">77</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
263
 
 
264
</div>
 
265
</div>
 
266
<a class="anchor" id="ae5174bb3e6e300b198551b13834c1a62"></a><!-- doxytag: member="mfoutline.h::MarkPoint" ref="ae5174bb3e6e300b198551b13834c1a62" args="(P)" -->
 
267
<div class="memitem">
 
268
<div class="memproto">
 
269
      <table class="memname">
 
270
        <tr>
 
271
          <td class="memname">#define <a class="el" href="a00921.html#ae5174bb3e6e300b198551b13834c1a62">MarkPoint</a></td>
 
272
          <td>(</td>
 
273
          <td class="paramtype">&#160;</td>
 
274
          <td class="paramname">P</td><td>)</td>
 
275
          <td>&#160;&#160;&#160;((P)-&gt;ExtremityMark = TRUE)</td>
 
276
        </tr>
 
277
      </table>
 
278
</div>
 
279
<div class="memdoc">
 
280
 
 
281
<p>Definition at line <a class="el" href="a00921_source.html#l00081">81</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
282
 
 
283
</div>
 
284
</div>
 
285
<a class="anchor" id="a91645597f620e8307a65e8ab35d963b8"></a><!-- doxytag: member="mfoutline.h::MF_SCALE_FACTOR" ref="a91645597f620e8307a65e8ab35d963b8" args="" -->
 
286
<div class="memitem">
 
287
<div class="memproto">
 
288
      <table class="memname">
 
289
        <tr>
 
290
          <td class="memname">#define <a class="el" href="a00921.html#a91645597f620e8307a65e8ab35d963b8">MF_SCALE_FACTOR</a>&#160;&#160;&#160;(<a class="el" href="a00921.html#ac2f24132ffdd44f1b1ac9f861003ef55">NORMAL_X_HEIGHT</a> / <a class="el" href="a00759.html#af974e6755e636c8bc7cbe57e3bcbdd73">kBlnXHeight</a>)</td>
 
291
        </tr>
 
292
      </table>
 
293
</div>
 
294
<div class="memdoc">
 
295
 
 
296
<p>Definition at line <a class="el" href="a00921_source.html#l00071">71</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
297
 
 
298
</div>
 
299
</div>
 
300
<a class="anchor" id="ad2dfef920e57366bab3231610ab39f4d"></a><!-- doxytag: member="mfoutline.h::NextPointAfter" ref="ad2dfef920e57366bab3231610ab39f4d" args="(E)" -->
 
301
<div class="memitem">
 
302
<div class="memproto">
 
303
      <table class="memname">
 
304
        <tr>
 
305
          <td class="memname">#define <a class="el" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a></td>
 
306
          <td>(</td>
 
307
          <td class="paramtype">&#160;</td>
 
308
          <td class="paramname">E</td><td>)</td>
 
309
          <td>&#160;&#160;&#160;(<a class="el" href="a01043.html#adb120d4c08ce52b5dfe524f0419a9154">list_rest</a> (E))</td>
 
310
        </tr>
 
311
      </table>
 
312
</div>
 
313
<div class="memdoc">
 
314
 
 
315
<p>Definition at line <a class="el" href="a00921_source.html#l00076">76</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
316
 
 
317
</div>
 
318
</div>
 
319
<a class="anchor" id="ac5d2acf8cce6a604ff52887a9be290ed"></a><!-- doxytag: member="mfoutline.h::NORMAL_BASELINE" ref="ac5d2acf8cce6a604ff52887a9be290ed" args="" -->
 
320
<div class="memitem">
 
321
<div class="memproto">
 
322
      <table class="memname">
 
323
        <tr>
 
324
          <td class="memname">#define <a class="el" href="a00921.html#ac5d2acf8cce6a604ff52887a9be290ed">NORMAL_BASELINE</a>&#160;&#160;&#160;(0.0)</td>
 
325
        </tr>
 
326
      </table>
 
327
</div>
 
328
<div class="memdoc">
 
329
 
 
330
<p>Definition at line <a class="el" href="a00921_source.html#l00031">31</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
331
 
 
332
</div>
 
333
</div>
 
334
<a class="anchor" id="ac2f24132ffdd44f1b1ac9f861003ef55"></a><!-- doxytag: member="mfoutline.h::NORMAL_X_HEIGHT" ref="ac2f24132ffdd44f1b1ac9f861003ef55" args="" -->
 
335
<div class="memitem">
 
336
<div class="memproto">
 
337
      <table class="memname">
 
338
        <tr>
 
339
          <td class="memname">#define <a class="el" href="a00921.html#ac2f24132ffdd44f1b1ac9f861003ef55">NORMAL_X_HEIGHT</a>&#160;&#160;&#160;(0.5)</td>
 
340
        </tr>
 
341
      </table>
 
342
</div>
 
343
<div class="memdoc">
 
344
<p>---------------------------------------------------------------------------- Include Files and Type Defines ---------------------------------------------------------------------------- </p>
 
345
 
 
346
<p>Definition at line <a class="el" href="a00921_source.html#l00030">30</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
347
 
 
348
</div>
 
349
</div>
 
350
<a class="anchor" id="aabb22902a8c1b9a830cb6347a474feea"></a><!-- doxytag: member="mfoutline.h::PointAt" ref="aabb22902a8c1b9a830cb6347a474feea" args="(O)" -->
 
351
<div class="memitem">
 
352
<div class="memproto">
 
353
      <table class="memname">
 
354
        <tr>
 
355
          <td class="memname">#define <a class="el" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a></td>
 
356
          <td>(</td>
 
357
          <td class="paramtype">&#160;</td>
 
358
          <td class="paramname">O</td><td>)</td>
 
359
          <td>&#160;&#160;&#160;((<a class="el" href="a00466.html">MFEDGEPT</a> *) <a class="el" href="a01043.html#a69547be764424f18b0be535400747978">first_node</a> (O))</td>
 
360
        </tr>
 
361
      </table>
 
362
</div>
 
363
<div class="memdoc">
 
364
 
 
365
<p>Definition at line <a class="el" href="a00921_source.html#l00075">75</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
366
 
 
367
</div>
 
368
</div>
 
369
<hr/><h2>Typedef Documentation</h2>
 
370
<a class="anchor" id="a7ccab0cdf14413921e017ad0af14e1de"></a><!-- doxytag: member="mfoutline.h::MFOUTLINE" ref="a7ccab0cdf14413921e017ad0af14e1de" args="" -->
 
371
<div class="memitem">
 
372
<div class="memproto">
 
373
      <table class="memname">
 
374
        <tr>
 
375
          <td class="memname">typedef <a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a> <a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a></td>
 
376
        </tr>
 
377
      </table>
 
378
</div>
 
379
<div class="memdoc">
 
380
 
 
381
<p>Definition at line <a class="el" href="a00921_source.html#l00033">33</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
382
 
 
383
</div>
 
384
</div>
 
385
<hr/><h2>Enumeration Type Documentation</h2>
 
386
<a class="anchor" id="aa268a41a13430b18e933ed40207178d0"></a><!-- doxytag: member="mfoutline.h::DIRECTION" ref="aa268a41a13430b18e933ed40207178d0" args="" -->
 
387
<div class="memitem">
 
388
<div class="memproto">
 
389
      <table class="memname">
 
390
        <tr>
 
391
          <td class="memname">enum <a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0">DIRECTION</a></td>
 
392
        </tr>
 
393
      </table>
 
394
</div>
 
395
<div class="memdoc">
 
396
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
 
397
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0a257e6b7fcd6ccb860083f20eb9bd660d"></a><!-- doxytag: member="north" ref="aa268a41a13430b18e933ed40207178d0a257e6b7fcd6ccb860083f20eb9bd660d" args="" -->north</em>&nbsp;</td><td>
 
398
</td></tr>
 
399
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0a035a454a75284b5dc261bd500ab311ed"></a><!-- doxytag: member="south" ref="aa268a41a13430b18e933ed40207178d0a035a454a75284b5dc261bd500ab311ed" args="" -->south</em>&nbsp;</td><td>
 
400
</td></tr>
 
401
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0a1be79cd4775c5384e197f1031580b10a"></a><!-- doxytag: member="east" ref="aa268a41a13430b18e933ed40207178d0a1be79cd4775c5384e197f1031580b10a" args="" -->east</em>&nbsp;</td><td>
 
402
</td></tr>
 
403
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0a9f771a3f89930d6b7e164e32a951dcb6"></a><!-- doxytag: member="west" ref="aa268a41a13430b18e933ed40207178d0a9f771a3f89930d6b7e164e32a951dcb6" args="" -->west</em>&nbsp;</td><td>
 
404
</td></tr>
 
405
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0ae3b4c14104592166f37bd10677137b23"></a><!-- doxytag: member="northeast" ref="aa268a41a13430b18e933ed40207178d0ae3b4c14104592166f37bd10677137b23" args="" -->northeast</em>&nbsp;</td><td>
 
406
</td></tr>
 
407
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0a612166623e6f200d052d3d8dc4c075c0"></a><!-- doxytag: member="northwest" ref="aa268a41a13430b18e933ed40207178d0a612166623e6f200d052d3d8dc4c075c0" args="" -->northwest</em>&nbsp;</td><td>
 
408
</td></tr>
 
409
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0ae1fe6949267a85f8ffd113c0eb67116a"></a><!-- doxytag: member="southeast" ref="aa268a41a13430b18e933ed40207178d0ae1fe6949267a85f8ffd113c0eb67116a" args="" -->southeast</em>&nbsp;</td><td>
 
410
</td></tr>
 
411
<tr><td valign="top"><em><a class="anchor" id="aa268a41a13430b18e933ed40207178d0a0a8b39b36c98d2346b9a5453838f3aea"></a><!-- doxytag: member="southwest" ref="aa268a41a13430b18e933ed40207178d0a0a8b39b36c98d2346b9a5453838f3aea" args="" -->southwest</em>&nbsp;</td><td>
 
412
</td></tr>
 
413
</table>
 
414
</dd>
 
415
</dl>
 
416
 
 
417
<p>Definition at line <a class="el" href="a00921_source.html#l00035">35</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
418
<div class="fragment"><pre class="fragment">             {
 
419
  <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a257e6b7fcd6ccb860083f20eb9bd660d">north</a>, <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a035a454a75284b5dc261bd500ab311ed">south</a>, <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a1be79cd4775c5384e197f1031580b10a">east</a>, <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a9f771a3f89930d6b7e164e32a951dcb6">west</a>, <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0ae3b4c14104592166f37bd10677137b23">northeast</a>, <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a612166623e6f200d052d3d8dc4c075c0">northwest</a>, <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0ae1fe6949267a85f8ffd113c0eb67116a">southeast</a>, <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a0a8b39b36c98d2346b9a5453838f3aea">southwest</a>
 
420
} <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0">DIRECTION</a>;
 
421
</pre></div>
 
422
</div>
 
423
</div>
 
424
<a class="anchor" id="a2a4b69f9a2827dc98bc4cbc233118865"></a><!-- doxytag: member="mfoutline.h::NORM_METHOD" ref="a2a4b69f9a2827dc98bc4cbc233118865" args="" -->
 
425
<div class="memitem">
 
426
<div class="memproto">
 
427
      <table class="memname">
 
428
        <tr>
 
429
          <td class="memname">enum <a class="el" href="a00921.html#a2a4b69f9a2827dc98bc4cbc233118865">NORM_METHOD</a></td>
 
430
        </tr>
 
431
      </table>
 
432
</div>
 
433
<div class="memdoc">
 
434
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
 
435
<tr><td valign="top"><em><a class="anchor" id="a2a4b69f9a2827dc98bc4cbc233118865a83297de004f4e58b9be2108c6cd08a23"></a><!-- doxytag: member="baseline" ref="a2a4b69f9a2827dc98bc4cbc233118865a83297de004f4e58b9be2108c6cd08a23" args="" -->baseline</em>&nbsp;</td><td>
 
436
</td></tr>
 
437
<tr><td valign="top"><em><a class="anchor" id="a2a4b69f9a2827dc98bc4cbc233118865afa40ef3af4fea0001b535318130960b2"></a><!-- doxytag: member="character" ref="a2a4b69f9a2827dc98bc4cbc233118865afa40ef3af4fea0001b535318130960b2" args="" -->character</em>&nbsp;</td><td>
 
438
</td></tr>
 
439
</table>
 
440
</dd>
 
441
</dl>
 
442
 
 
443
<p>Definition at line <a class="el" href="a00921_source.html#l00061">61</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
444
<div class="fragment"><pre class="fragment">             {
 
445
  <a class="code" href="a00921.html#a2a4b69f9a2827dc98bc4cbc233118865a83297de004f4e58b9be2108c6cd08a23">baseline</a>, <a class="code" href="a00921.html#a2a4b69f9a2827dc98bc4cbc233118865afa40ef3af4fea0001b535318130960b2">character</a>
 
446
} <a class="code" href="a00921.html#a2a4b69f9a2827dc98bc4cbc233118865">NORM_METHOD</a>;
 
447
</pre></div>
 
448
</div>
 
449
</div>
 
450
<a class="anchor" id="abace9421f1a42147c8af40a950bc7203"></a><!-- doxytag: member="mfoutline.h::OUTLINETYPE" ref="abace9421f1a42147c8af40a950bc7203" args="" -->
 
451
<div class="memitem">
 
452
<div class="memproto">
 
453
      <table class="memname">
 
454
        <tr>
 
455
          <td class="memname">enum <a class="el" href="a00921.html#abace9421f1a42147c8af40a950bc7203">OUTLINETYPE</a></td>
 
456
        </tr>
 
457
      </table>
 
458
</div>
 
459
<div class="memdoc">
 
460
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
 
461
<tr><td valign="top"><em><a class="anchor" id="abace9421f1a42147c8af40a950bc7203a281b97b7e8b9c87a09e7fc5b5fe95da8"></a><!-- doxytag: member="outer" ref="abace9421f1a42147c8af40a950bc7203a281b97b7e8b9c87a09e7fc5b5fe95da8" args="" -->outer</em>&nbsp;</td><td>
 
462
</td></tr>
 
463
<tr><td valign="top"><em><a class="anchor" id="abace9421f1a42147c8af40a950bc7203a35dab49845fd740fff6be6c2702e49a4"></a><!-- doxytag: member="hole" ref="abace9421f1a42147c8af40a950bc7203a35dab49845fd740fff6be6c2702e49a4" args="" -->hole</em>&nbsp;</td><td>
 
464
</td></tr>
 
465
</table>
 
466
</dd>
 
467
</dl>
 
468
 
 
469
<p>Definition at line <a class="el" href="a00921_source.html#l00049">49</a> of file <a class="el" href="a00921_source.html">mfoutline.h</a>.</p>
 
470
<div class="fragment"><pre class="fragment">             {
 
471
  <a class="code" href="a00921.html#abace9421f1a42147c8af40a950bc7203a281b97b7e8b9c87a09e7fc5b5fe95da8">outer</a>, <a class="code" href="a00921.html#abace9421f1a42147c8af40a950bc7203a35dab49845fd740fff6be6c2702e49a4">hole</a>
 
472
} <a class="code" href="a00921.html#abace9421f1a42147c8af40a950bc7203">OUTLINETYPE</a>;
 
473
</pre></div>
 
474
</div>
 
475
</div>
 
476
<hr/><h2>Function Documentation</h2>
 
477
<a class="anchor" id="abd95d6d2be6406aea26fbf0f0bf157ae"></a><!-- doxytag: member="mfoutline.h::ChangeDirection" ref="abd95d6d2be6406aea26fbf0f0bf157ae" args="(MFOUTLINE Start, MFOUTLINE End, DIRECTION Direction)" -->
 
478
<div class="memitem">
 
479
<div class="memproto">
 
480
      <table class="memname">
 
481
        <tr>
 
482
          <td class="memname">void <a class="el" href="a00921.html#abd95d6d2be6406aea26fbf0f0bf157ae">ChangeDirection</a> </td>
 
483
          <td>(</td>
 
484
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
485
          <td class="paramname"><em>Start</em>, </td>
 
486
        </tr>
 
487
        <tr>
 
488
          <td class="paramkey"></td>
 
489
          <td></td>
 
490
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
491
          <td class="paramname"><em>End</em>, </td>
 
492
        </tr>
 
493
        <tr>
 
494
          <td class="paramkey"></td>
 
495
          <td></td>
 
496
          <td class="paramtype"><a class="el" href="a00921.html#aa268a41a13430b18e933ed40207178d0">DIRECTION</a>&#160;</td>
 
497
          <td class="paramname"><em>Direction</em>&#160;</td>
 
498
        </tr>
 
499
        <tr>
 
500
          <td></td>
 
501
          <td>)</td>
 
502
          <td></td><td></td>
 
503
        </tr>
 
504
      </table>
 
505
</div>
 
506
<div class="memdoc">
 
507
<p>---------------------------------------------------------------------------- Private Code ---------------------------------------------------------------------------- </p>
 
508
 
 
509
<p>Definition at line <a class="el" href="a00920_source.html#l00340">340</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
510
<div class="fragment"><pre class="fragment">                                                                          {
 
511
<span class="comment">/*</span>
 
512
<span class="comment"> ** Parameters:</span>
 
513
<span class="comment"> **   Start, End  defines segment of outline to be modified</span>
 
514
<span class="comment"> **   Direction new direction to assign to segment</span>
 
515
<span class="comment"> ** Globals: none</span>
 
516
<span class="comment"> ** Operation: Change the direction of every vector in the specified</span>
 
517
<span class="comment"> **   outline segment to Direction.  The segment to be changed</span>
 
518
<span class="comment"> **   starts at Start and ends at End.  Note that the previous</span>
 
519
<span class="comment"> **   direction of End must also be changed to reflect the</span>
 
520
<span class="comment"> **   change in direction of the point before it.</span>
 
521
<span class="comment"> ** Return: none</span>
 
522
<span class="comment"> ** Exceptions: none</span>
 
523
<span class="comment"> ** History: Fri May  4 10:42:04 1990, DSJ, Created.</span>
 
524
<span class="comment"> */</span>
 
525
  <a class="code" href="a00453.html">MFOUTLINE</a> Current;
 
526
 
 
527
  <span class="keywordflow">for</span> (Current = Start; Current != End; Current = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a> (Current))
 
528
    <a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a> (Current)-&gt;Direction = Direction;
 
529
 
 
530
  <a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a> (End)-&gt;PreviousDirection = Direction;
 
531
 
 
532
}                                <span class="comment">/* ChangeDirection */</span>
 
533
</pre></div>
 
534
</div>
 
535
</div>
 
536
<a class="anchor" id="af5936ef194bb508756e2b1b891c31ece"></a><!-- doxytag: member="mfoutline.h::CharNormalizeOutline" ref="af5936ef194bb508756e2b1b891c31ece" args="(MFOUTLINE Outline, const DENORM &amp;cn_denorm)" -->
 
537
<div class="memitem">
 
538
<div class="memproto">
 
539
      <table class="memname">
 
540
        <tr>
 
541
          <td class="memname">void <a class="el" href="a00921.html#af5936ef194bb508756e2b1b891c31ece">CharNormalizeOutline</a> </td>
 
542
          <td>(</td>
 
543
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
544
          <td class="paramname"><em>Outline</em>, </td>
 
545
        </tr>
 
546
        <tr>
 
547
          <td class="paramkey"></td>
 
548
          <td></td>
 
549
          <td class="paramtype">const <a class="el" href="a00352.html">DENORM</a> &amp;&#160;</td>
 
550
          <td class="paramname"><em>cn_denorm</em>&#160;</td>
 
551
        </tr>
 
552
        <tr>
 
553
          <td></td>
 
554
          <td>)</td>
 
555
          <td></td><td></td>
 
556
        </tr>
 
557
      </table>
 
558
</div>
 
559
<div class="memdoc">
 
560
 
 
561
<p>Definition at line <a class="el" href="a00920_source.html#l00366">366</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
562
<div class="fragment"><pre class="fragment">                                                                      {
 
563
<span class="comment">/*</span>
 
564
<span class="comment"> ** Parameters:</span>
 
565
<span class="comment"> **   Outline     outline to be character normalized</span>
 
566
<span class="comment"> **   XCenter, YCenter  center point for normalization</span>
 
567
<span class="comment"> **   XScale, YScale    scale factors for normalization</span>
 
568
<span class="comment"> ** Globals: none</span>
 
569
<span class="comment"> ** Operation: This routine normalizes each point in Outline by</span>
 
570
<span class="comment"> **   translating it to the specified center and scaling it</span>
 
571
<span class="comment"> **   anisotropically according to the given scale factors.</span>
 
572
<span class="comment"> ** Return: none</span>
 
573
<span class="comment"> ** Exceptions: none</span>
 
574
<span class="comment"> ** History: Fri Dec 14 10:27:11 1990, DSJ, Created.</span>
 
575
<span class="comment"> */</span>
 
576
  <a class="code" href="a00453.html">MFOUTLINE</a> First, Current;
 
577
  <a class="code" href="a00466.html">MFEDGEPT</a> *CurrentPoint;
 
578
 
 
579
  <span class="keywordflow">if</span> (Outline == <a class="code" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>)
 
580
    <span class="keywordflow">return</span>;
 
581
 
 
582
  First = Outline;
 
583
  Current = First;
 
584
  <span class="keywordflow">do</span> {
 
585
    CurrentPoint = <a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a>(Current);
 
586
    <a class="code" href="a00375.html">FCOORD</a> pos(CurrentPoint-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a>, CurrentPoint-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a>);
 
587
    cn_denorm.<a class="code" href="a00352.html#a379321502d4634137436539518311b9d">LocalNormTransform</a>(pos, &amp;pos);
 
588
    CurrentPoint-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> = (pos.x() - <a class="code" href="a00831.html#a05682ca8de174141447ff05a2289a27c">MAX_UINT8</a> / 2) * <a class="code" href="a00921.html#a91645597f620e8307a65e8ab35d963b8">MF_SCALE_FACTOR</a>;
 
589
    CurrentPoint-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> = (pos.y() - <a class="code" href="a00831.html#a05682ca8de174141447ff05a2289a27c">MAX_UINT8</a> / 2) * <a class="code" href="a00921.html#a91645597f620e8307a65e8ab35d963b8">MF_SCALE_FACTOR</a>;
 
590
 
 
591
    Current = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a>(Current);
 
592
  }
 
593
  <span class="keywordflow">while</span> (Current != First);
 
594
 
 
595
}                                <span class="comment">/* CharNormalizeOutline */</span>
 
596
</pre></div>
 
597
</div>
 
598
</div>
 
599
<a class="anchor" id="ac9f4e1c384c1d17dfa37ebd63096d232"></a><!-- doxytag: member="mfoutline.h::ComputeBlobCenter" ref="ac9f4e1c384c1d17dfa37ebd63096d232" args="(TBLOB *Blob, TPOINT *BlobCenter)" -->
 
600
<div class="memitem">
 
601
<div class="memproto">
 
602
      <table class="memname">
 
603
        <tr>
 
604
          <td class="memname">void <a class="el" href="a00921.html#ac9f4e1c384c1d17dfa37ebd63096d232">ComputeBlobCenter</a> </td>
 
605
          <td>(</td>
 
606
          <td class="paramtype"><a class="el" href="a00591.html">TBLOB</a> *&#160;</td>
 
607
          <td class="paramname"><em>Blob</em>, </td>
 
608
        </tr>
 
609
        <tr>
 
610
          <td class="paramkey"></td>
 
611
          <td></td>
 
612
          <td class="paramtype"><a class="el" href="a00629.html">TPOINT</a> *&#160;</td>
 
613
          <td class="paramname"><em>BlobCenter</em>&#160;</td>
 
614
        </tr>
 
615
        <tr>
 
616
          <td></td>
 
617
          <td>)</td>
 
618
          <td></td><td></td>
 
619
        </tr>
 
620
      </table>
 
621
</div>
 
622
<div class="memdoc">
 
623
<p>---------------------------------------------------------------------------- Public Function Prototypes ---------------------------------------------------------------------------- </p>
 
624
 
 
625
</div>
 
626
</div>
 
627
<a class="anchor" id="a97334eef13fe16a7e0ce178f905d2c39"></a><!-- doxytag: member="mfoutline.h::ComputeDirection" ref="a97334eef13fe16a7e0ce178f905d2c39" args="(MFEDGEPT *Start, MFEDGEPT *Finish, FLOAT32 MinSlope, FLOAT32 MaxSlope)" -->
 
628
<div class="memitem">
 
629
<div class="memproto">
 
630
      <table class="memname">
 
631
        <tr>
 
632
          <td class="memname">void <a class="el" href="a00921.html#a97334eef13fe16a7e0ce178f905d2c39">ComputeDirection</a> </td>
 
633
          <td>(</td>
 
634
          <td class="paramtype"><a class="el" href="a00466.html">MFEDGEPT</a> *&#160;</td>
 
635
          <td class="paramname"><em>Start</em>, </td>
 
636
        </tr>
 
637
        <tr>
 
638
          <td class="paramkey"></td>
 
639
          <td></td>
 
640
          <td class="paramtype"><a class="el" href="a00466.html">MFEDGEPT</a> *&#160;</td>
 
641
          <td class="paramname"><em>Finish</em>, </td>
 
642
        </tr>
 
643
        <tr>
 
644
          <td class="paramkey"></td>
 
645
          <td></td>
 
646
          <td class="paramtype"><a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
647
          <td class="paramname"><em>MinSlope</em>, </td>
 
648
        </tr>
 
649
        <tr>
 
650
          <td class="paramkey"></td>
 
651
          <td></td>
 
652
          <td class="paramtype"><a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
653
          <td class="paramname"><em>MaxSlope</em>&#160;</td>
 
654
        </tr>
 
655
        <tr>
 
656
          <td></td>
 
657
          <td>)</td>
 
658
          <td></td><td></td>
 
659
        </tr>
 
660
      </table>
 
661
</div>
 
662
<div class="memdoc">
 
663
 
 
664
<p>Definition at line <a class="el" href="a00920_source.html#l00403">403</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
665
<div class="fragment"><pre class="fragment">                                        {
 
666
<span class="comment">/*</span>
 
667
<span class="comment"> ** Parameters:</span>
 
668
<span class="comment"> **   Start   starting point to compute direction from</span>
 
669
<span class="comment"> **   Finish    finishing point to compute direction to</span>
 
670
<span class="comment"> **   MinSlope  slope below which lines are horizontal</span>
 
671
<span class="comment"> **   MaxSlope  slope above which lines are vertical</span>
 
672
<span class="comment"> ** Globals: none</span>
 
673
<span class="comment"> ** Operation:</span>
 
674
<span class="comment"> **   This routine computes the slope from Start to Finish and</span>
 
675
<span class="comment"> **   and then computes the approximate direction of the line</span>
 
676
<span class="comment"> **   segment from Start to Finish.  The direction is quantized</span>
 
677
<span class="comment"> **   into 8 buckets:</span>
 
678
<span class="comment"> **     N, S, E, W, NE, NW, SE, SW</span>
 
679
<span class="comment"> **   Both the slope and the direction are then stored into</span>
 
680
<span class="comment"> **   the appropriate fields of the Start edge point.  The</span>
 
681
<span class="comment"> **   direction is also stored into the PreviousDirection field</span>
 
682
<span class="comment"> **   of the Finish edge point.</span>
 
683
<span class="comment"> ** Return: none</span>
 
684
<span class="comment"> ** Exceptions: none</span>
 
685
<span class="comment"> ** History: 7/25/89, DSJ, Created.</span>
 
686
<span class="comment"> */</span>
 
687
  <a class="code" href="a00396.html">FVECTOR</a> Delta;
 
688
 
 
689
  Delta.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> = Finish-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> - Start-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a>;
 
690
  Delta.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> = Finish-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> - Start-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a>;
 
691
  <span class="keywordflow">if</span> (Delta.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> == 0)
 
692
  <span class="keywordflow">if</span> (Delta.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> &lt; 0) {
 
693
    Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> = -<a class="code" href="a00831.html#a9adcee815220ec9db98062213806ed04">MAX_FLOAT32</a>;
 
694
    Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a035a454a75284b5dc261bd500ab311ed">south</a>;
 
695
  }
 
696
  <span class="keywordflow">else</span> {
 
697
    Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> = <a class="code" href="a00831.html#a9adcee815220ec9db98062213806ed04">MAX_FLOAT32</a>;
 
698
    Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a257e6b7fcd6ccb860083f20eb9bd660d">north</a>;
 
699
  }
 
700
  <span class="keywordflow">else</span> {
 
701
    Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> = Delta.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> / Delta.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a>;
 
702
    <span class="keywordflow">if</span> (Delta.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> &gt; 0)
 
703
      <span class="keywordflow">if</span> (Delta.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> &gt; 0)
 
704
        <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &gt; MinSlope)
 
705
          <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &lt; MaxSlope)
 
706
            Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0ae3b4c14104592166f37bd10677137b23">northeast</a>;
 
707
    <span class="keywordflow">else</span>
 
708
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a257e6b7fcd6ccb860083f20eb9bd660d">north</a>;
 
709
    <span class="keywordflow">else</span>
 
710
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a1be79cd4775c5384e197f1031580b10a">east</a>;
 
711
    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &lt; -MinSlope)
 
712
    <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &gt; -MaxSlope)
 
713
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0ae1fe6949267a85f8ffd113c0eb67116a">southeast</a>;
 
714
    <span class="keywordflow">else</span>
 
715
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a035a454a75284b5dc261bd500ab311ed">south</a>;
 
716
    <span class="keywordflow">else</span>
 
717
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a1be79cd4775c5384e197f1031580b10a">east</a>;
 
718
    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Delta.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> &gt; 0)
 
719
    <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &lt; -MinSlope)
 
720
      <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &gt; -MaxSlope)
 
721
        Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a612166623e6f200d052d3d8dc4c075c0">northwest</a>;
 
722
    <span class="keywordflow">else</span>
 
723
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a257e6b7fcd6ccb860083f20eb9bd660d">north</a>;
 
724
    <span class="keywordflow">else</span>
 
725
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a9f771a3f89930d6b7e164e32a951dcb6">west</a>;
 
726
    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &gt; MinSlope)
 
727
    <span class="keywordflow">if</span> (Start-&gt;<a class="code" href="a00466.html#a75770cf1960863e6937f2ca578ede6ef">Slope</a> &lt; MaxSlope)
 
728
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a0a8b39b36c98d2346b9a5453838f3aea">southwest</a>;
 
729
    <span class="keywordflow">else</span>
 
730
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a035a454a75284b5dc261bd500ab311ed">south</a>;
 
731
    <span class="keywordflow">else</span>
 
732
      Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a> = <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0a9f771a3f89930d6b7e164e32a951dcb6">west</a>;
 
733
  }
 
734
  Finish-&gt;<a class="code" href="a00466.html#a47d3c4465ab5bb663d77c507cfebc18a">PreviousDirection</a> = Start-&gt;<a class="code" href="a00466.html#a2b987163e368c4d0a3c4d027b5619665">Direction</a>;
 
735
}                                <span class="comment">/* ComputeDirection */</span>
 
736
</pre></div>
 
737
</div>
 
738
</div>
 
739
<a class="anchor" id="a36feb3bd4df38dbd78e7153278a08b10"></a><!-- doxytag: member="mfoutline.h::ConvertBlob" ref="a36feb3bd4df38dbd78e7153278a08b10" args="(TBLOB *Blob)" -->
 
740
<div class="memitem">
 
741
<div class="memproto">
 
742
      <table class="memname">
 
743
        <tr>
 
744
          <td class="memname"><a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a> <a class="el" href="a00921.html#a36feb3bd4df38dbd78e7153278a08b10">ConvertBlob</a> </td>
 
745
          <td>(</td>
 
746
          <td class="paramtype"><a class="el" href="a00591.html">TBLOB</a> *&#160;</td>
 
747
          <td class="paramname"><em>Blob</em></td><td>)</td>
 
748
          <td></td>
 
749
        </tr>
 
750
      </table>
 
751
</div>
 
752
<div class="memdoc">
 
753
 
 
754
<p>Definition at line <a class="el" href="a00920_source.html#l00041">41</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
755
<div class="fragment"><pre class="fragment">                              {
 
756
  <a class="code" href="a00453.html">LIST</a> outlines = <a class="code" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>;
 
757
  <span class="keywordflow">return</span> (blob == NULL)
 
758
      ? <a class="code" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>
 
759
      : <a class="code" href="a00920.html#a4d507cbf8bfa947b364ed74f5cb160cd">ConvertOutlines</a>(blob-&gt;outlines, outlines, <a class="code" href="a00921.html#abace9421f1a42147c8af40a950bc7203a281b97b7e8b9c87a09e7fc5b5fe95da8">outer</a>);
 
760
}
 
761
</pre></div>
 
762
</div>
 
763
</div>
 
764
<a class="anchor" id="a55eac211652384977ec812120a44e757"></a><!-- doxytag: member="mfoutline.h::ConvertOutline" ref="a55eac211652384977ec812120a44e757" args="(TESSLINE *Outline)" -->
 
765
<div class="memitem">
 
766
<div class="memproto">
 
767
      <table class="memname">
 
768
        <tr>
 
769
          <td class="memname"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> <a class="el" href="a00921.html#a55eac211652384977ec812120a44e757">ConvertOutline</a> </td>
 
770
          <td>(</td>
 
771
          <td class="paramtype"><a class="el" href="a00613.html">TESSLINE</a> *&#160;</td>
 
772
          <td class="paramname"><em>Outline</em></td><td>)</td>
 
773
          <td></td>
 
774
        </tr>
 
775
      </table>
 
776
</div>
 
777
<div class="memdoc">
 
778
 
 
779
<p>Definition at line <a class="el" href="a00920_source.html#l00051">51</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
780
<div class="fragment"><pre class="fragment">                                            {
 
781
  <a class="code" href="a00466.html">MFEDGEPT</a> *NewPoint;
 
782
  <a class="code" href="a00453.html">MFOUTLINE</a> MFOutline = <a class="code" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>;
 
783
  <a class="code" href="a00362.html">EDGEPT</a> *EdgePoint;
 
784
  <a class="code" href="a00362.html">EDGEPT</a> *StartPoint;
 
785
  <a class="code" href="a00362.html">EDGEPT</a> *NextPoint;
 
786
 
 
787
  <span class="keywordflow">if</span> (outline == NULL || outline-&gt;loop == NULL)
 
788
    <span class="keywordflow">return</span> MFOutline;
 
789
 
 
790
  StartPoint = outline-&gt;loop;
 
791
  EdgePoint = StartPoint;
 
792
  <span class="keywordflow">do</span> {
 
793
    NextPoint = EdgePoint-&gt;<a class="code" href="a00362.html#a196f7786194752f89e364a586d24884d">next</a>;
 
794
 
 
795
    <span class="comment">/* filter out duplicate points */</span>
 
796
    <span class="keywordflow">if</span> (EdgePoint-&gt;<a class="code" href="a00362.html#adee462d390e637a8393ba373c8d2a1bb">pos</a>.<a class="code" href="a00629.html#aa9c98655c3a2a0437821e5a3d3418b0f">x</a> != NextPoint-&gt;<a class="code" href="a00362.html#adee462d390e637a8393ba373c8d2a1bb">pos</a>.<a class="code" href="a00629.html#aa9c98655c3a2a0437821e5a3d3418b0f">x</a> ||
 
797
        EdgePoint-&gt;<a class="code" href="a00362.html#adee462d390e637a8393ba373c8d2a1bb">pos</a>.<a class="code" href="a00629.html#a6d62f015b74612e43975e439a096039c">y</a> != NextPoint-&gt;<a class="code" href="a00362.html#adee462d390e637a8393ba373c8d2a1bb">pos</a>.<a class="code" href="a00629.html#a6d62f015b74612e43975e439a096039c">y</a>) {
 
798
      NewPoint = <a class="code" href="a00920.html#a917b406f8854b822d8cf2eb2480e6684">NewEdgePoint</a>();
 
799
      <a class="code" href="a00921.html#a1960e4d5f6a5ee3649830432ab38937b">ClearMark</a>(NewPoint);
 
800
      NewPoint-&gt;<a class="code" href="a00466.html#a6c6f4bc040c7147dce9a63516758ad5d">Hidden</a> = EdgePoint-&gt;<a class="code" href="a00362.html#a7e6e4c9b9bcc3b1e66ab62bb7641c39a">IsHidden</a>();
 
801
      NewPoint-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> = EdgePoint-&gt;<a class="code" href="a00362.html#adee462d390e637a8393ba373c8d2a1bb">pos</a>.<a class="code" href="a00629.html#aa9c98655c3a2a0437821e5a3d3418b0f">x</a>;
 
802
      NewPoint-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> = EdgePoint-&gt;<a class="code" href="a00362.html#adee462d390e637a8393ba373c8d2a1bb">pos</a>.<a class="code" href="a00629.html#a6d62f015b74612e43975e439a096039c">y</a>;
 
803
      MFOutline = <a class="code" href="a01042.html#a9c4294375af81ab4c133b6b5a3679a16">push</a>(MFOutline, NewPoint);
 
804
    }
 
805
    EdgePoint = NextPoint;
 
806
  } <span class="keywordflow">while</span> (EdgePoint != StartPoint);
 
807
 
 
808
  <span class="keywordflow">if</span> (MFOutline != NULL)
 
809
    <a class="code" href="a00921.html#a72b744e3e7220468dad3d2c67ef65bbf">MakeOutlineCircular</a>(MFOutline);
 
810
  <span class="keywordflow">return</span> MFOutline;
 
811
}
 
812
</pre></div>
 
813
</div>
 
814
</div>
 
815
<a class="anchor" id="a8e6bfe5c4f9d8f25a36647bc079d7e49"></a><!-- doxytag: member="mfoutline.h::ConvertOutlines" ref="a8e6bfe5c4f9d8f25a36647bc079d7e49" args="(TESSLINE *Outline, LIST ConvertedOutlines, OUTLINETYPE OutlineType)" -->
 
816
<div class="memitem">
 
817
<div class="memproto">
 
818
      <table class="memname">
 
819
        <tr>
 
820
          <td class="memname"><a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a> <a class="el" href="a00921.html#a8e6bfe5c4f9d8f25a36647bc079d7e49">ConvertOutlines</a> </td>
 
821
          <td>(</td>
 
822
          <td class="paramtype"><a class="el" href="a00613.html">TESSLINE</a> *&#160;</td>
 
823
          <td class="paramname"><em>Outline</em>, </td>
 
824
        </tr>
 
825
        <tr>
 
826
          <td class="paramkey"></td>
 
827
          <td></td>
 
828
          <td class="paramtype"><a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a>&#160;</td>
 
829
          <td class="paramname"><em>ConvertedOutlines</em>, </td>
 
830
        </tr>
 
831
        <tr>
 
832
          <td class="paramkey"></td>
 
833
          <td></td>
 
834
          <td class="paramtype"><a class="el" href="a00921.html#abace9421f1a42147c8af40a950bc7203">OUTLINETYPE</a>&#160;</td>
 
835
          <td class="paramname"><em>OutlineType</em>&#160;</td>
 
836
        </tr>
 
837
        <tr>
 
838
          <td></td>
 
839
          <td>)</td>
 
840
          <td></td><td></td>
 
841
        </tr>
 
842
      </table>
 
843
</div>
 
844
<div class="memdoc">
 
845
 
 
846
<p>Definition at line <a class="el" href="a00920_source.html#l00092">92</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
847
<div class="fragment"><pre class="fragment">                                               {
 
848
  <a class="code" href="a00453.html">MFOUTLINE</a> mf_outline;
 
849
 
 
850
  <span class="keywordflow">while</span> (outline != NULL) {
 
851
    mf_outline = <a class="code" href="a00920.html#a8ddc957cfa64a7dc50f9a3836319e766">ConvertOutline</a>(outline);
 
852
    <span class="keywordflow">if</span> (mf_outline != NULL)
 
853
      mf_outlines = <a class="code" href="a01042.html#a9c4294375af81ab4c133b6b5a3679a16">push</a>(mf_outlines, mf_outline);
 
854
    outline = outline-&gt;next;
 
855
  }
 
856
  <span class="keywordflow">return</span> mf_outlines;
 
857
}
 
858
</pre></div>
 
859
</div>
 
860
</div>
 
861
<a class="anchor" id="a6a0f0accb0239e9d76cd8ff4ff147350"></a><!-- doxytag: member="mfoutline.h::FilterEdgeNoise" ref="a6a0f0accb0239e9d76cd8ff4ff147350" args="(MFOUTLINE Outline, FLOAT32 NoiseSegmentLength)" -->
 
862
<div class="memitem">
 
863
<div class="memproto">
 
864
      <table class="memname">
 
865
        <tr>
 
866
          <td class="memname">void <a class="el" href="a00921.html#a6a0f0accb0239e9d76cd8ff4ff147350">FilterEdgeNoise</a> </td>
 
867
          <td>(</td>
 
868
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
869
          <td class="paramname"><em>Outline</em>, </td>
 
870
        </tr>
 
871
        <tr>
 
872
          <td class="paramkey"></td>
 
873
          <td></td>
 
874
          <td class="paramtype"><a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
875
          <td class="paramname"><em>NoiseSegmentLength</em>&#160;</td>
 
876
        </tr>
 
877
        <tr>
 
878
          <td></td>
 
879
          <td>)</td>
 
880
          <td></td><td></td>
 
881
        </tr>
 
882
      </table>
 
883
</div>
 
884
<div class="memdoc">
 
885
 
 
886
</div>
 
887
</div>
 
888
<a class="anchor" id="ac2b870343576dd24d1c4871f5988d556"></a><!-- doxytag: member="mfoutline.h::FindDirectionChanges" ref="ac2b870343576dd24d1c4871f5988d556" args="(MFOUTLINE Outline, FLOAT32 MinSlope, FLOAT32 MaxSlope)" -->
 
889
<div class="memitem">
 
890
<div class="memproto">
 
891
      <table class="memname">
 
892
        <tr>
 
893
          <td class="memname">void <a class="el" href="a00921.html#ac2b870343576dd24d1c4871f5988d556">FindDirectionChanges</a> </td>
 
894
          <td>(</td>
 
895
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
896
          <td class="paramname"><em>Outline</em>, </td>
 
897
        </tr>
 
898
        <tr>
 
899
          <td class="paramkey"></td>
 
900
          <td></td>
 
901
          <td class="paramtype"><a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
902
          <td class="paramname"><em>MinSlope</em>, </td>
 
903
        </tr>
 
904
        <tr>
 
905
          <td class="paramkey"></td>
 
906
          <td></td>
 
907
          <td class="paramtype"><a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
908
          <td class="paramname"><em>MaxSlope</em>&#160;</td>
 
909
        </tr>
 
910
        <tr>
 
911
          <td></td>
 
912
          <td>)</td>
 
913
          <td></td><td></td>
 
914
        </tr>
 
915
      </table>
 
916
</div>
 
917
<div class="memdoc">
 
918
 
 
919
<p>Definition at line <a class="el" href="a00920_source.html#l00107">107</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
920
<div class="fragment"><pre class="fragment">                                            {
 
921
<span class="comment">/*</span>
 
922
<span class="comment"> ** Parameters:</span>
 
923
<span class="comment"> **   Outline   micro-feature outline to analyze</span>
 
924
<span class="comment"> **   MinSlope  controls &quot;snapping&quot; of segments to horizontal</span>
 
925
<span class="comment"> **   MaxSlope  controls &quot;snapping&quot; of segments to vertical</span>
 
926
<span class="comment"> ** Globals: none</span>
 
927
<span class="comment"> ** Operation:</span>
 
928
<span class="comment"> **   This routine searches thru the specified outline, computes</span>
 
929
<span class="comment"> **   a slope for each vector in the outline, and marks each</span>
 
930
<span class="comment"> **   vector as having one of the following directions:</span>
 
931
<span class="comment"> **     N, S, E, W, NE, NW, SE, SW</span>
 
932
<span class="comment"> **   This information is then stored in the outline and the</span>
 
933
<span class="comment"> **   outline is returned.</span>
 
934
<span class="comment"> ** Return: none</span>
 
935
<span class="comment"> ** Exceptions: none</span>
 
936
<span class="comment"> ** History: 7/21/89, DSJ, Created.</span>
 
937
<span class="comment"> */</span>
 
938
  <a class="code" href="a00466.html">MFEDGEPT</a> *Current;
 
939
  <a class="code" href="a00466.html">MFEDGEPT</a> *Last;
 
940
  <a class="code" href="a00453.html">MFOUTLINE</a> EdgePoint;
 
941
 
 
942
  <span class="keywordflow">if</span> (<a class="code" href="a00921.html#ac8e258367e719e5a22e83af1c2b33e53">DegenerateOutline</a> (Outline))
 
943
    <span class="keywordflow">return</span>;
 
944
 
 
945
  Last = <a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a> (Outline);
 
946
  Outline = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a> (Outline);
 
947
  EdgePoint = Outline;
 
948
  <span class="keywordflow">do</span> {
 
949
    Current = <a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a> (EdgePoint);
 
950
    <a class="code" href="a00920.html#a97334eef13fe16a7e0ce178f905d2c39">ComputeDirection</a>(Last, Current, MinSlope, MaxSlope);
 
951
 
 
952
    Last = Current;
 
953
    EdgePoint = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a> (EdgePoint);
 
954
  }
 
955
  <span class="keywordflow">while</span> (EdgePoint != Outline);
 
956
 
 
957
}                                <span class="comment">/* FindDirectionChanges */</span>
 
958
</pre></div>
 
959
</div>
 
960
</div>
 
961
<a class="anchor" id="a8983618bd7c7c05ff69355b0aa4185fe"></a><!-- doxytag: member="mfoutline.h::FinishOutlineStats" ref="a8983618bd7c7c05ff69355b0aa4185fe" args="(register OUTLINE_STATS *OutlineStats)" -->
 
962
<div class="memitem">
 
963
<div class="memproto">
 
964
      <table class="memname">
 
965
        <tr>
 
966
          <td class="memname">void <a class="el" href="a00921.html#a8983618bd7c7c05ff69355b0aa4185fe">FinishOutlineStats</a> </td>
 
967
          <td>(</td>
 
968
          <td class="paramtype">register <a class="el" href="a00479.html">OUTLINE_STATS</a> *&#160;</td>
 
969
          <td class="paramname"><em>OutlineStats</em></td><td>)</td>
 
970
          <td></td>
 
971
        </tr>
 
972
      </table>
 
973
</div>
 
974
<div class="memdoc">
 
975
 
 
976
<p>Definition at line <a class="el" href="a00920_source.html#l00480">480</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
977
<div class="fragment"><pre class="fragment">                                                              {
 
978
<span class="comment">/*</span>
 
979
<span class="comment"> ** Parameters:</span>
 
980
<span class="comment"> **   OutlineStats  statistics about a set of outlines</span>
 
981
<span class="comment"> ** Globals: none</span>
 
982
<span class="comment"> ** Operation: Use the preliminary statistics accumulated in OutlineStats</span>
 
983
<span class="comment"> **   to compute the final statistics.</span>
 
984
<span class="comment"> **   (see Dan Johnson&#39;s Tesseract lab</span>
 
985
<span class="comment"> **   notebook #2, pgs. 74-78).</span>
 
986
<span class="comment"> ** Return: none</span>
 
987
<span class="comment"> ** Exceptions: none</span>
 
988
<span class="comment"> ** History: Fri Dec 14 10:13:36 1990, DSJ, Created.</span>
 
989
<span class="comment"> */</span>
 
990
  OutlineStats-&gt;x = 0.5 * OutlineStats-&gt;My / OutlineStats-&gt;L;
 
991
  OutlineStats-&gt;y = 0.5 * OutlineStats-&gt;Mx / OutlineStats-&gt;L;
 
992
 
 
993
  OutlineStats-&gt;Ix = (OutlineStats-&gt;Ix / 3.0 -
 
994
    OutlineStats-&gt;y * OutlineStats-&gt;Mx +
 
995
    OutlineStats-&gt;y * OutlineStats-&gt;y * OutlineStats-&gt;L);
 
996
 
 
997
  OutlineStats-&gt;Iy = (OutlineStats-&gt;Iy / 3.0 -
 
998
    OutlineStats-&gt;x * OutlineStats-&gt;My +
 
999
    OutlineStats-&gt;x * OutlineStats-&gt;x * OutlineStats-&gt;L);
 
1000
 
 
1001
  <span class="comment">/* Ix and/or Iy could possibly be negative due to roundoff error */</span>
 
1002
  <span class="keywordflow">if</span> (OutlineStats-&gt;Ix &lt; 0.0)
 
1003
    OutlineStats-&gt;Ix = <a class="code" href="a00920.html#aeb013f47829ae8698a722f8fd1ddb989">MIN_INERTIA</a>;
 
1004
  <span class="keywordflow">if</span> (OutlineStats-&gt;Iy &lt; 0.0)
 
1005
    OutlineStats-&gt;Iy = <a class="code" href="a00920.html#aeb013f47829ae8698a722f8fd1ddb989">MIN_INERTIA</a>;
 
1006
 
 
1007
  OutlineStats-&gt;Rx = sqrt (OutlineStats-&gt;Ix / OutlineStats-&gt;L);
 
1008
  OutlineStats-&gt;Ry = sqrt (OutlineStats-&gt;Iy / OutlineStats-&gt;L);
 
1009
 
 
1010
  OutlineStats-&gt;Mx *= 0.5;
 
1011
  OutlineStats-&gt;My *= 0.5;
 
1012
 
 
1013
}                                <span class="comment">/* FinishOutlineStats */</span>
 
1014
</pre></div>
 
1015
</div>
 
1016
</div>
 
1017
<a class="anchor" id="a717586ca196e0c54bd0c99792acde58d"></a><!-- doxytag: member="mfoutline.h::FreeMFOutline" ref="a717586ca196e0c54bd0c99792acde58d" args="(void *agr)" -->
 
1018
<div class="memitem">
 
1019
<div class="memproto">
 
1020
      <table class="memname">
 
1021
        <tr>
 
1022
          <td class="memname">void <a class="el" href="a00921.html#a717586ca196e0c54bd0c99792acde58d">FreeMFOutline</a> </td>
 
1023
          <td>(</td>
 
1024
          <td class="paramtype">void *&#160;</td>
 
1025
          <td class="paramname"><em>agr</em></td><td>)</td>
 
1026
          <td></td>
 
1027
        </tr>
 
1028
      </table>
 
1029
</div>
 
1030
<div class="memdoc">
 
1031
 
 
1032
<p>Definition at line <a class="el" href="a00920_source.html#l00150">150</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1033
<div class="fragment"><pre class="fragment">                              {  <span class="comment">//MFOUTLINE                             Outline)</span>
 
1034
<span class="comment">/*</span>
 
1035
<span class="comment"> ** Parameters:</span>
 
1036
<span class="comment"> **   Outline   micro-feature outline to be freed</span>
 
1037
<span class="comment"> ** Globals: none</span>
 
1038
<span class="comment"> ** Operation:</span>
 
1039
<span class="comment"> **   This routine deallocates all of the memory consumed by</span>
 
1040
<span class="comment"> **   a micro-feature outline.</span>
 
1041
<span class="comment"> ** Return: none</span>
 
1042
<span class="comment"> ** Exceptions: none</span>
 
1043
<span class="comment"> ** History: 7/27/89, DSJ, Created.</span>
 
1044
<span class="comment"> */</span>
 
1045
  <a class="code" href="a00453.html">MFOUTLINE</a> Start;
 
1046
  <a class="code" href="a00453.html">MFOUTLINE</a> Outline = (<a class="code" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>) arg;
 
1047
 
 
1048
  <span class="comment">/* break the circular outline so we can use std. techniques to deallocate */</span>
 
1049
  Start = <a class="code" href="a01043.html#adb120d4c08ce52b5dfe524f0419a9154">list_rest</a> (Outline);
 
1050
  <a class="code" href="a01043.html#a42cc2d9c5eabb2193e2e64df41adedf4">set_rest</a>(Outline, <a class="code" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>);
 
1051
  <span class="keywordflow">while</span> (Start != NULL) {
 
1052
    <a class="code" href="a00837.html#a204a6cd6de69d4bd7a73ca30e0a0f947">free_struct</a> (<a class="code" href="a01043.html#a69547be764424f18b0be535400747978">first_node</a> (Start), <span class="keyword">sizeof</span> (<a class="code" href="a00466.html">MFEDGEPT</a>), <span class="stringliteral">&quot;MFEDGEPT&quot;</span>);
 
1053
    Start = <a class="code" href="a01042.html#a4a16ea0d766f4b3bc697142d5303a62c">pop</a> (Start);
 
1054
  }
 
1055
 
 
1056
}                                <span class="comment">/* FreeMFOutline */</span>
 
1057
</pre></div>
 
1058
</div>
 
1059
</div>
 
1060
<a class="anchor" id="a553352ad44661adad2a80a24ac78aeaf"></a><!-- doxytag: member="mfoutline.h::FreeOutlines" ref="a553352ad44661adad2a80a24ac78aeaf" args="(LIST Outlines)" -->
 
1061
<div class="memitem">
 
1062
<div class="memproto">
 
1063
      <table class="memname">
 
1064
        <tr>
 
1065
          <td class="memname">void <a class="el" href="a00921.html#a553352ad44661adad2a80a24ac78aeaf">FreeOutlines</a> </td>
 
1066
          <td>(</td>
 
1067
          <td class="paramtype"><a class="el" href="a01043.html#aa200acf94add0e61783bfcd5965bb645">LIST</a>&#160;</td>
 
1068
          <td class="paramname"><em>Outlines</em></td><td>)</td>
 
1069
          <td></td>
 
1070
        </tr>
 
1071
      </table>
 
1072
</div>
 
1073
<div class="memdoc">
 
1074
 
 
1075
<p>Definition at line <a class="el" href="a00920_source.html#l00177">177</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1076
<div class="fragment"><pre class="fragment">                                 {
 
1077
<span class="comment">/*</span>
 
1078
<span class="comment"> ** Parameters:</span>
 
1079
<span class="comment"> **   Outlines  list of mf-outlines to be freed</span>
 
1080
<span class="comment"> ** Globals: none</span>
 
1081
<span class="comment"> ** Operation: Release all memory consumed by the specified list</span>
 
1082
<span class="comment"> **   of outlines.</span>
 
1083
<span class="comment"> ** Return: none</span>
 
1084
<span class="comment"> ** Exceptions: none</span>
 
1085
<span class="comment"> ** History: Thu Dec 13 16:14:50 1990, DSJ, Created.</span>
 
1086
<span class="comment"> */</span>
 
1087
  <a class="code" href="a01042.html#a1a1efc1a269e5bb5bf16c1a174363ba4">destroy_nodes</a>(Outlines, <a class="code" href="a00920.html#a4633687049466a4f28d70775b0481431">FreeMFOutline</a>);
 
1088
}                                <span class="comment">/* FreeOutlines */</span>
 
1089
</pre></div>
 
1090
</div>
 
1091
</div>
 
1092
<a class="anchor" id="ab1a3167a695b3448b64ee38f6da9a264"></a><!-- doxytag: member="mfoutline.h::InitOutlineStats" ref="ab1a3167a695b3448b64ee38f6da9a264" args="(OUTLINE_STATS *OutlineStats)" -->
 
1093
<div class="memitem">
 
1094
<div class="memproto">
 
1095
      <table class="memname">
 
1096
        <tr>
 
1097
          <td class="memname">void <a class="el" href="a00921.html#ab1a3167a695b3448b64ee38f6da9a264">InitOutlineStats</a> </td>
 
1098
          <td>(</td>
 
1099
          <td class="paramtype"><a class="el" href="a00479.html">OUTLINE_STATS</a> *&#160;</td>
 
1100
          <td class="paramname"><em>OutlineStats</em></td><td>)</td>
 
1101
          <td></td>
 
1102
        </tr>
 
1103
      </table>
 
1104
</div>
 
1105
<div class="memdoc">
 
1106
 
 
1107
<p>Definition at line <a class="el" href="a00920_source.html#l00520">520</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1108
<div class="fragment"><pre class="fragment">                                                   {
 
1109
<span class="comment">/*</span>
 
1110
<span class="comment"> ** Parameters:</span>
 
1111
<span class="comment"> **   OutlineStats  stats data structure to be initialized</span>
 
1112
<span class="comment"> ** Globals: none</span>
 
1113
<span class="comment"> ** Operation: Initialize the outline statistics data structure so</span>
 
1114
<span class="comment"> **   that it is ready to start accumulating statistics.</span>
 
1115
<span class="comment"> ** Return: none</span>
 
1116
<span class="comment"> ** Exceptions: none</span>
 
1117
<span class="comment"> ** History: Fri Dec 14 08:55:22 1990, DSJ, Created.</span>
 
1118
<span class="comment"> */</span>
 
1119
  OutlineStats-&gt;<a class="code" href="a00479.html#a48dcb42e547f23fbf75a53f396c2d020">Mx</a> = 0.0;
 
1120
  OutlineStats-&gt;<a class="code" href="a00479.html#a19fd6ebb6e878a2f2df7c168edd7ed81">My</a> = 0.0;
 
1121
  OutlineStats-&gt;<a class="code" href="a00479.html#a91a6aea2761ea0e675b1e47c87da2509">L</a> = 0.0;
 
1122
  OutlineStats-&gt;<a class="code" href="a00479.html#a2e72d57afc14290aef97b17bba52cd98">x</a> = 0.0;
 
1123
  OutlineStats-&gt;<a class="code" href="a00479.html#a27f428c88f5d21ad9125a93c30d73699">y</a> = 0.0;
 
1124
  OutlineStats-&gt;<a class="code" href="a00479.html#a6af6966cfc75974663f3746d8a490a34">Ix</a> = 0.0;
 
1125
  OutlineStats-&gt;<a class="code" href="a00479.html#af32048351768bcc8ad6566dcb452090d">Iy</a> = 0.0;
 
1126
  OutlineStats-&gt;<a class="code" href="a00479.html#a44df0e96a471cc5e0380b52d04eec549">Rx</a> = 0.0;
 
1127
  OutlineStats-&gt;<a class="code" href="a00479.html#afb6d2229fa00b3a255aa11efa7894527">Ry</a> = 0.0;
 
1128
}                                <span class="comment">/* InitOutlineStats */</span>
 
1129
</pre></div>
 
1130
</div>
 
1131
</div>
 
1132
<a class="anchor" id="afa2531f8656ba496465bc23ff1a2f99c"></a><!-- doxytag: member="mfoutline.h::MarkDirectionChanges" ref="afa2531f8656ba496465bc23ff1a2f99c" args="(MFOUTLINE Outline)" -->
 
1133
<div class="memitem">
 
1134
<div class="memproto">
 
1135
      <table class="memname">
 
1136
        <tr>
 
1137
          <td class="memname">void <a class="el" href="a00921.html#afa2531f8656ba496465bc23ff1a2f99c">MarkDirectionChanges</a> </td>
 
1138
          <td>(</td>
 
1139
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
1140
          <td class="paramname"><em>Outline</em></td><td>)</td>
 
1141
          <td></td>
 
1142
        </tr>
 
1143
      </table>
 
1144
</div>
 
1145
<div class="memdoc">
 
1146
 
 
1147
<p>Definition at line <a class="el" href="a00920_source.html#l00193">193</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1148
<div class="fragment"><pre class="fragment">                                             {
 
1149
<span class="comment">/*</span>
 
1150
<span class="comment"> ** Parameters:</span>
 
1151
<span class="comment"> **   Outline   micro-feature outline to analyze</span>
 
1152
<span class="comment"> ** Globals: none</span>
 
1153
<span class="comment"> ** Operation:</span>
 
1154
<span class="comment"> **   This routine searches thru the specified outline and finds</span>
 
1155
<span class="comment"> **   the points at which the outline changes direction.  These</span>
 
1156
<span class="comment"> **   points are then marked as &quot;extremities&quot;.  This routine is</span>
 
1157
<span class="comment"> **   used as an alternative to FindExtremities().  It forces the</span>
 
1158
<span class="comment"> **   endpoints of the microfeatures to be at the direction</span>
 
1159
<span class="comment"> **   changes rather than at the midpoint between direction</span>
 
1160
<span class="comment"> **   changes.</span>
 
1161
<span class="comment"> ** Return: none</span>
 
1162
<span class="comment"> ** Exceptions: none</span>
 
1163
<span class="comment"> ** History: 6/29/90, DSJ, Created.</span>
 
1164
<span class="comment"> */</span>
 
1165
  <a class="code" href="a00453.html">MFOUTLINE</a> Current;
 
1166
  <a class="code" href="a00453.html">MFOUTLINE</a> Last;
 
1167
  <a class="code" href="a00453.html">MFOUTLINE</a> First;
 
1168
 
 
1169
  <span class="keywordflow">if</span> (<a class="code" href="a00921.html#ac8e258367e719e5a22e83af1c2b33e53">DegenerateOutline</a> (Outline))
 
1170
    <span class="keywordflow">return</span>;
 
1171
 
 
1172
  First = <a class="code" href="a00920.html#a224d838335416038dcb0348f665f5a05">NextDirectionChange</a> (Outline);
 
1173
  Last = First;
 
1174
  <span class="keywordflow">do</span> {
 
1175
    Current = <a class="code" href="a00920.html#a224d838335416038dcb0348f665f5a05">NextDirectionChange</a> (Last);
 
1176
    <a class="code" href="a00921.html#ae5174bb3e6e300b198551b13834c1a62">MarkPoint</a> (<a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a> (Current));
 
1177
    Last = Current;
 
1178
  }
 
1179
  <span class="keywordflow">while</span> (Last != First);
 
1180
 
 
1181
}                                <span class="comment">/* MarkDirectionChanges */</span>
 
1182
</pre></div>
 
1183
</div>
 
1184
</div>
 
1185
<a class="anchor" id="a917b406f8854b822d8cf2eb2480e6684"></a><!-- doxytag: member="mfoutline.h::NewEdgePoint" ref="a917b406f8854b822d8cf2eb2480e6684" args="()" -->
 
1186
<div class="memitem">
 
1187
<div class="memproto">
 
1188
      <table class="memname">
 
1189
        <tr>
 
1190
          <td class="memname"><a class="el" href="a00466.html">MFEDGEPT</a>* <a class="el" href="a00921.html#a917b406f8854b822d8cf2eb2480e6684">NewEdgePoint</a> </td>
 
1191
          <td>(</td>
 
1192
          <td class="paramname"></td><td>)</td>
 
1193
          <td></td>
 
1194
        </tr>
 
1195
      </table>
 
1196
</div>
 
1197
<div class="memdoc">
 
1198
 
 
1199
<p>Definition at line <a class="el" href="a00920_source.html#l00231">231</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1200
<div class="fragment"><pre class="fragment">                         {
 
1201
  <span class="keywordflow">return</span> ((<a class="code" href="a00466.html">MFEDGEPT</a> *) <a class="code" href="a00837.html#a4f4e6728de23eb0530f9bdc8b3a114d3">alloc_struct</a>(<span class="keyword">sizeof</span>(<a class="code" href="a00466.html">MFEDGEPT</a>), <span class="stringliteral">&quot;MFEDGEPT&quot;</span>));
 
1202
}
 
1203
</pre></div>
 
1204
</div>
 
1205
</div>
 
1206
<a class="anchor" id="a224d838335416038dcb0348f665f5a05"></a><!-- doxytag: member="mfoutline.h::NextDirectionChange" ref="a224d838335416038dcb0348f665f5a05" args="(MFOUTLINE EdgePoint)" -->
 
1207
<div class="memitem">
 
1208
<div class="memproto">
 
1209
      <table class="memname">
 
1210
        <tr>
 
1211
          <td class="memname"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> <a class="el" href="a00921.html#a224d838335416038dcb0348f665f5a05">NextDirectionChange</a> </td>
 
1212
          <td>(</td>
 
1213
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
1214
          <td class="paramname"><em>EdgePoint</em></td><td>)</td>
 
1215
          <td></td>
 
1216
        </tr>
 
1217
      </table>
 
1218
</div>
 
1219
<div class="memdoc">
 
1220
 
 
1221
<p>Definition at line <a class="el" href="a00920_source.html#l00544">544</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1222
<div class="fragment"><pre class="fragment">                                                   {
 
1223
<span class="comment">/*</span>
 
1224
<span class="comment"> ** Parameters:</span>
 
1225
<span class="comment"> **   EdgePoint start search from this point</span>
 
1226
<span class="comment"> ** Globals: none</span>
 
1227
<span class="comment"> ** Operation:</span>
 
1228
<span class="comment"> **   This routine returns the next point in the micro-feature</span>
 
1229
<span class="comment"> **   outline that has a direction different than EdgePoint.  The</span>
 
1230
<span class="comment"> **   routine assumes that the outline being searched is not a</span>
 
1231
<span class="comment"> **   degenerate outline (i.e. it must have 2 or more edge points).</span>
 
1232
<span class="comment"> ** Return: Point of next direction change in micro-feature outline.</span>
 
1233
<span class="comment"> ** Exceptions: none</span>
 
1234
<span class="comment"> ** History: 7/25/89, DSJ, Created.</span>
 
1235
<span class="comment"> */</span>
 
1236
  <a class="code" href="a00921.html#aa268a41a13430b18e933ed40207178d0">DIRECTION</a> InitialDirection;
 
1237
 
 
1238
  InitialDirection = <a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a> (EdgePoint)-&gt;Direction;
 
1239
 
 
1240
  <a class="code" href="a00453.html">MFOUTLINE</a> next_pt = NULL;
 
1241
  <span class="keywordflow">do</span> {
 
1242
    EdgePoint = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a>(EdgePoint);
 
1243
    next_pt = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a>(EdgePoint);
 
1244
  } <span class="keywordflow">while</span> (<a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a>(EdgePoint)-&gt;Direction == InitialDirection &amp;&amp;
 
1245
           !<a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a>(EdgePoint)-&gt;Hidden &amp;&amp;
 
1246
           next_pt != NULL &amp;&amp; !<a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a>(next_pt)-&gt;Hidden);
 
1247
 
 
1248
  <span class="keywordflow">return</span> (EdgePoint);
 
1249
}                                <span class="comment">/* NextDirectionChange */</span>
 
1250
</pre></div>
 
1251
</div>
 
1252
</div>
 
1253
<a class="anchor" id="af520bd5bba313216d0b6fb9e58041266"></a><!-- doxytag: member="mfoutline.h::NextExtremity" ref="af520bd5bba313216d0b6fb9e58041266" args="(MFOUTLINE EdgePoint)" -->
 
1254
<div class="memitem">
 
1255
<div class="memproto">
 
1256
      <table class="memname">
 
1257
        <tr>
 
1258
          <td class="memname"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a> <a class="el" href="a00921.html#af520bd5bba313216d0b6fb9e58041266">NextExtremity</a> </td>
 
1259
          <td>(</td>
 
1260
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
1261
          <td class="paramname"><em>EdgePoint</em></td><td>)</td>
 
1262
          <td></td>
 
1263
        </tr>
 
1264
      </table>
 
1265
</div>
 
1266
<div class="memdoc">
 
1267
 
 
1268
<p>Definition at line <a class="el" href="a00920_source.html#l00237">237</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1269
<div class="fragment"><pre class="fragment">                                             {
 
1270
<span class="comment">/*</span>
 
1271
<span class="comment"> ** Parameters:</span>
 
1272
<span class="comment"> **   EdgePoint start search from this point</span>
 
1273
<span class="comment"> ** Globals: none</span>
 
1274
<span class="comment"> ** Operation:</span>
 
1275
<span class="comment"> **   This routine returns the next point in the micro-feature</span>
 
1276
<span class="comment"> **   outline that is an extremity.  The search starts after</span>
 
1277
<span class="comment"> **   EdgePoint.  The routine assumes that the outline being</span>
 
1278
<span class="comment"> **   searched is not a degenerate outline (i.e. it must have</span>
 
1279
<span class="comment"> **   2 or more edge points).</span>
 
1280
<span class="comment"> ** Return: Next extremity in the outline after EdgePoint.</span>
 
1281
<span class="comment"> ** Exceptions: none</span>
 
1282
<span class="comment"> ** History: 7/26/89, DSJ, Created.</span>
 
1283
<span class="comment"> */</span>
 
1284
  EdgePoint = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a>(EdgePoint);
 
1285
  <span class="keywordflow">while</span> (!<a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a>(EdgePoint)-&gt;ExtremityMark)
 
1286
    EdgePoint = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a>(EdgePoint);
 
1287
 
 
1288
  <span class="keywordflow">return</span> (EdgePoint);
 
1289
 
 
1290
}                                <span class="comment">/* NextExtremity */</span>
 
1291
</pre></div>
 
1292
</div>
 
1293
</div>
 
1294
<a class="anchor" id="a30b1492f0756c31499da0157ecba50ff"></a><!-- doxytag: member="mfoutline.h::NormalizeOutline" ref="a30b1492f0756c31499da0157ecba50ff" args="(MFOUTLINE Outline, FLOAT32 XOrigin)" -->
 
1295
<div class="memitem">
 
1296
<div class="memproto">
 
1297
      <table class="memname">
 
1298
        <tr>
 
1299
          <td class="memname">void <a class="el" href="a00921.html#a30b1492f0756c31499da0157ecba50ff">NormalizeOutline</a> </td>
 
1300
          <td>(</td>
 
1301
          <td class="paramtype"><a class="el" href="a00921.html#a7ccab0cdf14413921e017ad0af14e1de">MFOUTLINE</a>&#160;</td>
 
1302
          <td class="paramname"><em>Outline</em>, </td>
 
1303
        </tr>
 
1304
        <tr>
 
1305
          <td class="paramkey"></td>
 
1306
          <td></td>
 
1307
          <td class="paramtype"><a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
1308
          <td class="paramname"><em>XOrigin</em>&#160;</td>
 
1309
        </tr>
 
1310
        <tr>
 
1311
          <td></td>
 
1312
          <td>)</td>
 
1313
          <td></td><td></td>
 
1314
        </tr>
 
1315
      </table>
 
1316
</div>
 
1317
<div class="memdoc">
 
1318
 
 
1319
<p>Definition at line <a class="el" href="a00920_source.html#l00262">262</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1320
<div class="fragment"><pre class="fragment">                                       {
 
1321
<span class="comment">/*</span>
 
1322
<span class="comment"> ** Parameters:</span>
 
1323
<span class="comment"> **   Outline   outline to be normalized</span>
 
1324
<span class="comment"> **   XOrigin   x-origin of text</span>
 
1325
<span class="comment"> ** Globals: none</span>
 
1326
<span class="comment"> ** Operation:</span>
 
1327
<span class="comment"> **   This routine normalizes the coordinates of the specified</span>
 
1328
<span class="comment"> **   outline so that the outline is deskewed down to the</span>
 
1329
<span class="comment"> **   baseline, translated so that x=0 is at XOrigin, and scaled</span>
 
1330
<span class="comment"> **   so that the height of a character cell from descender to</span>
 
1331
<span class="comment"> **   ascender is 1.  Of this height, 0.25 is for the descender,</span>
 
1332
<span class="comment"> **   0.25 for the ascender, and 0.5 for the x-height.  The</span>
 
1333
<span class="comment"> **   y coordinate of the baseline is 0.</span>
 
1334
<span class="comment"> ** Return: none</span>
 
1335
<span class="comment"> ** Exceptions: none</span>
 
1336
<span class="comment"> ** History: 8/2/89, DSJ, Created.</span>
 
1337
<span class="comment"> */</span>
 
1338
  <span class="keywordflow">if</span> (Outline == <a class="code" href="a01043.html#ae212530ca629c67513698e988c705a5a">NIL_LIST</a>)
 
1339
    <span class="keywordflow">return</span>;
 
1340
 
 
1341
  <a class="code" href="a00453.html">MFOUTLINE</a> EdgePoint = Outline;
 
1342
  <span class="keywordflow">do</span> {
 
1343
    <a class="code" href="a00466.html">MFEDGEPT</a> *Current = <a class="code" href="a00921.html#aabb22902a8c1b9a830cb6347a474feea">PointAt</a>(EdgePoint);
 
1344
    Current-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> = <a class="code" href="a00921.html#a91645597f620e8307a65e8ab35d963b8">MF_SCALE_FACTOR</a> *
 
1345
        (Current-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a119bd5a9f0b29cabb3987fd94c5d4ca8">y</a> - <a class="code" href="a00759.html#abe10ce41bf7240ae8a053dea471d6ed5">kBlnBaselineOffset</a>);
 
1346
    Current-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> = <a class="code" href="a00921.html#a91645597f620e8307a65e8ab35d963b8">MF_SCALE_FACTOR</a> * (Current-&gt;<a class="code" href="a00466.html#a2b633b56b9a1a71a23551e387b7c8af4">Point</a>.<a class="code" href="a00396.html#a96c1f94ff16244b06cb59b79152dc8ae">x</a> - XOrigin);
 
1347
    EdgePoint = <a class="code" href="a00921.html#ad2dfef920e57366bab3231610ab39f4d">NextPointAfter</a>(EdgePoint);
 
1348
  } <span class="keywordflow">while</span> (EdgePoint != Outline);
 
1349
}                                <span class="comment">/* NormalizeOutline */</span>
 
1350
</pre></div>
 
1351
</div>
 
1352
</div>
 
1353
<a class="anchor" id="a943167d00e171b3cbc68252f32a45196"></a><!-- doxytag: member="mfoutline.h::UpdateOutlineStats" ref="a943167d00e171b3cbc68252f32a45196" args="(register OUTLINE_STATS *OutlineStats, register FLOAT32 x1, register FLOAT32 x2, register FLOAT32 y1, register FLOAT32 y2)" -->
 
1354
<div class="memitem">
 
1355
<div class="memproto">
 
1356
      <table class="memname">
 
1357
        <tr>
 
1358
          <td class="memname">void <a class="el" href="a00921.html#a943167d00e171b3cbc68252f32a45196">UpdateOutlineStats</a> </td>
 
1359
          <td>(</td>
 
1360
          <td class="paramtype">register <a class="el" href="a00479.html">OUTLINE_STATS</a> *&#160;</td>
 
1361
          <td class="paramname"><em>OutlineStats</em>, </td>
 
1362
        </tr>
 
1363
        <tr>
 
1364
          <td class="paramkey"></td>
 
1365
          <td></td>
 
1366
          <td class="paramtype">register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
1367
          <td class="paramname"><em>x1</em>, </td>
 
1368
        </tr>
 
1369
        <tr>
 
1370
          <td class="paramkey"></td>
 
1371
          <td></td>
 
1372
          <td class="paramtype">register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
1373
          <td class="paramname"><em>x2</em>, </td>
 
1374
        </tr>
 
1375
        <tr>
 
1376
          <td class="paramkey"></td>
 
1377
          <td></td>
 
1378
          <td class="paramtype">register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
1379
          <td class="paramname"><em>y1</em>, </td>
 
1380
        </tr>
 
1381
        <tr>
 
1382
          <td class="paramkey"></td>
 
1383
          <td></td>
 
1384
          <td class="paramtype">register <a class="el" href="a00831.html#a6a3da5f1db8d485c0d2f5a7ba526c4a0">FLOAT32</a>&#160;</td>
 
1385
          <td class="paramname"><em>y2</em>&#160;</td>
 
1386
        </tr>
 
1387
        <tr>
 
1388
          <td></td>
 
1389
          <td>)</td>
 
1390
          <td></td><td></td>
 
1391
        </tr>
 
1392
      </table>
 
1393
</div>
 
1394
<div class="memdoc">
 
1395
 
 
1396
<p>Definition at line <a class="el" href="a00920_source.html#l00575">575</a> of file <a class="el" href="a00920_source.html">mfoutline.cpp</a>.</p>
 
1397
<div class="fragment"><pre class="fragment">                                             {
 
1398
<span class="comment">/*</span>
 
1399
<span class="comment"> ** Parameters:</span>
 
1400
<span class="comment"> **   OutlineStats  statistics to add this segment to</span>
 
1401
<span class="comment"> **   x1, y1, x2, y2  segment to be added to statistics</span>
 
1402
<span class="comment"> ** Globals: none</span>
 
1403
<span class="comment"> ** Operation: This routine adds the statistics for the specified</span>
 
1404
<span class="comment"> **   line segment to OutlineStats.  The statistics that are</span>
 
1405
<span class="comment"> **   kept are:</span>
 
1406
<span class="comment"> **     sum of length of all segments</span>
 
1407
<span class="comment"> **     sum of 2*Mx for all segments</span>
 
1408
<span class="comment"> **     sum of 2*My for all segments</span>
 
1409
<span class="comment"> **     sum of 2*Mx*(y1+y2) - L*y1*y2 for all segments</span>
 
1410
<span class="comment"> **     sum of 2*My*(x1+x2) - L*x1*x2 for all segments</span>
 
1411
<span class="comment"> **   These numbers, once collected can later be used to easily</span>
 
1412
<span class="comment"> **   compute the center of mass, first and second moments,</span>
 
1413
<span class="comment"> **   and radii of gyration.  (see Dan Johnson&#39;s Tesseract lab</span>
 
1414
<span class="comment"> **   notebook #2, pgs. 74-78).</span>
 
1415
<span class="comment"> ** Return: none</span>
 
1416
<span class="comment"> ** Exceptions: none</span>
 
1417
<span class="comment"> ** History: Fri Dec 14 08:59:17 1990, DSJ, Created.</span>
 
1418
<span class="comment"> */</span>
 
1419
  <span class="keyword">register</span> <a class="code" href="a00831.html#aa8336782d864ba03efadb73a51260961">FLOAT64</a> L;
 
1420
  <span class="keyword">register</span> <a class="code" href="a00831.html#aa8336782d864ba03efadb73a51260961">FLOAT64</a> Mx2;
 
1421
  <span class="keyword">register</span> <a class="code" href="a00831.html#aa8336782d864ba03efadb73a51260961">FLOAT64</a> My2;
 
1422
 
 
1423
  <span class="comment">/* compute length of segment */</span>
 
1424
  L = sqrt ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
 
1425
  OutlineStats-&gt;L += L;
 
1426
 
 
1427
  <span class="comment">/* compute 2Mx and 2My components */</span>
 
1428
  Mx2 = L * (y1 + y2);
 
1429
  My2 = L * (x1 + x2);
 
1430
  OutlineStats-&gt;Mx += Mx2;
 
1431
  OutlineStats-&gt;My += My2;
 
1432
 
 
1433
  <span class="comment">/* compute second moment component */</span>
 
1434
  OutlineStats-&gt;Ix += Mx2 * (y1 + y2) - L * y1 * y2;
 
1435
  OutlineStats-&gt;Iy += My2 * (x1 + x2) - L * x1 * x2;
 
1436
 
 
1437
}                                <span class="comment">/* UpdateOutlineStats */</span>
 
1438
</pre></div>
 
1439
</div>
 
1440
</div>
 
1441
</div><!-- contents -->
 
1442
</div>
 
1443
<!-- window showing the filter options -->
 
1444
<div id="MSearchSelectWindow"
 
1445
     onmouseover="return searchBox.OnSearchSelectShow()"
 
1446
     onmouseout="return searchBox.OnSearchSelectHide()"
 
1447
     onkeydown="return searchBox.OnSearchSelectKey(event)">
 
1448
<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>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Defines</a></div>
 
1449
 
 
1450
<!-- iframe showing the search results (closed by default) -->
 
1451
<div id="MSearchResultsWindow">
 
1452
<iframe src="javascript:void(0)" frameborder="0" 
 
1453
        name="MSearchResults" id="MSearchResults">
 
1454
</iframe>
 
1455
</div>
 
1456
 
 
1457
  <div id="nav-path" class="navpath">
 
1458
    <ul>
 
1459
      <li class="navelem"><a class="el" href="a00921.html">mfoutline.h</a>      </li>
 
1460
 
 
1461
    <li class="footer">Generated on Mon Feb 3 2014 10:59:12 for tesseract by
 
1462
    <a href="http://www.doxygen.org/index.html">
 
1463
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>
 
1464
   </ul>
 
1465
 </div>
 
1466
 
 
1467
 
 
1468
</body>
 
1469
</html>