Sophie

Sophie

distrib > Mageia > 3 > x86_64 > by-pkgid > d2855e9970bf9a8259f08fe181d69f9d > files > 655

gnome-chemistry-utils-devel-0.14.2-1.mga3.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>The Gnome Chemistry Utils: atom.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">The Gnome Chemistry Utils
   &#160;<span id="projectnumber">0.14.2</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_69c622b84a81aca1ad0f892f4a5e46bf.html">gcp</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">gcp/atom.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="gcp_2atom_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// -*- C++ -*-</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * GChemPaint library</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * atom.h</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * Copyright (C) 2001-2012 Jean Bréfort &lt;jean.brefort@normalesup.org&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * modify it under the terms of the GNU General Public License as</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * published by the Free Software Foundation; either version 3 of the</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * License, or (at your option) any later version.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> * USA</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#ifndef GCHEMPAINT_ATOM_H</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define GCHEMPAINT_ATOM_H</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="item-client_8h.html">gccv/item-client.h</a>&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="gccv_2structs_8h.html">gccv/structs.h</a>&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="gcu_2atom_8h.html">gcu/atom.h</a>&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="dialog-owner_8h.html">gcu/dialog-owner.h</a>&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="element_8h.html">gcu/element.h</a>&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="macros_8h.html">gcu/macros.h</a>&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">namespace </span>gcu {</div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">class </span>UIManager;</div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;}</div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">namespace </span>gcp {</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">class </span>Bond;</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">class </span>Molecule;</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#a2fe190c330e5d91e4429843c15f49881">   51</a></span>&#160;<span class="preprocessor">#define POSITION_NE 1</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#ac90e594b40e8035f77cf94e3c83c1217">   55</a></span>&#160;<span class="preprocessor">#define POSITION_NW 2</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#a8872dd603f5fc2be6fccd561fd98ee06">   59</a></span>&#160;<span class="preprocessor">#define POSITION_N 4</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#a2ee47c800dc7838770b705fc9adeb5e5">   63</a></span>&#160;<span class="preprocessor">#define POSITION_SE 8</span></div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#a8faffbafa446ea342b5e9215c42c4cc0">   67</a></span>&#160;<span class="preprocessor">#define POSITION_SW 16</span></div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#af9acaf37134f304e9c3464ebc642cf38">   71</a></span>&#160;<span class="preprocessor">#define POSITION_S 32</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#a40e41338ee48271836885c80d795f319">   75</a></span>&#160;<span class="preprocessor">#define POSITION_E 64</span></div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="gcp_2atom_8h.html#a792dda850488757ab7e20a5b9c84b2aa">   79</a></span>&#160;<span class="preprocessor">#define POSITION_W 128</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2">   85</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ab9a55ae2c26fe587e2cb5efc6345938a">   89</a></span>&#160;        <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ab9a55ae2c26fe587e2cb5efc6345938a">LEFT_HPOS</a>,</div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ad7f2f4b5e1ae3a73111658e3a30c35a6">   93</a></span>&#160;        <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ad7f2f4b5e1ae3a73111658e3a30c35a6">RIGHT_HPOS</a>,</div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ac1f203ffbdb529893227df4d5e481882">   97</a></span>&#160;        <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ac1f203ffbdb529893227df4d5e481882">TOP_HPOS</a>,</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ab411521f150258ea96c6f9414c87a19b">  101</a></span>&#160;        <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2ab411521f150258ea96c6f9414c87a19b">BOTTOM_HPOS</a>,</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2a3232354276e9c6be7a9010eb46b4816c">  105</a></span>&#160;        <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2a3232354276e9c6be7a9010eb46b4816c">AUTO_HPOS</a>,</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;} <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2">HPos</a>;</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keyword">class </span>Electron;</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html">  113</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgcp_1_1Atom.html">Atom</a>: <span class="keyword">public</span> <a class="code" href="classgcu_1_1Atom.html">gcu::Atom</a>, <span class="keyword">public</span> <a class="code" href="classgcu_1_1DialogOwner.html">gcu::DialogOwner</a>, <span class="keyword">public</span> <a class="code" href="classgccv_1_1ItemClient.html" title="the base class for objects associated with a canvas item.">gccv::ItemClient</a></div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;{</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <a class="code" href="classgcp_1_1Atom.html#a585be3b15c7324e813a09222f325bd05">Atom</a> ();</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <a class="code" href="classgcp_1_1Atom.html#a585be3b15c7324e813a09222f325bd05">Atom</a> (<span class="keywordtype">int</span> Z, <span class="keywordtype">double</span> <a class="code" href="classgcu_1_1Atom.html#a845f98c4e1bb2fe68dfa3fc61a83f79d">x</a>, <span class="keywordtype">double</span> <a class="code" href="classgcu_1_1Atom.html#a483d6aec85bb09acf681d0070f46149c">y</a>, <span class="keywordtype">double</span> <a class="code" href="classgcu_1_1Atom.html#aca911471b8848a4c78205c328557a7cc">z</a>);</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keyword">virtual</span> <a class="code" href="classgcp_1_1Atom.html#a4ea961d1567b04333cf5a2d3ea2a3978">~Atom</a> ();</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="keyword">public</span> :</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#ad3919236bd9ce0816e4a07712048e9df">SetZ</a> (<span class="keywordtype">int</span> Z);</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a009e0ce9ae2f156c2d292d1275d5f685">AddBond</a> (<a class="code" href="classgcu_1_1Bond.html">gcu::Bond</a>* pBond);</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a41158b79556591cf4154ab0bed4139e4">RemoveBond</a> (<a class="code" href="classgcu_1_1Bond.html">gcu::Bond</a>* pBond);</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#af207aeb4fe1d8dfa90853c3f041d0d48">Update</a> ();</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keywordtype">int</span> <a class="code" href="classgcp_1_1Atom.html#a52ab2c14845106a07497aea0ac7721f5">GetTotalBondsNumber</a> () <span class="keyword">const</span>; <span class="comment">//take bond order into account</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#a974d2026ac161b2fe3403c1151a64c74">  164</a></span>&#160;<span class="comment"></span>        <span class="keywordtype">int</span> <a class="code" href="classgcp_1_1Atom.html#a974d2026ac161b2fe3403c1151a64c74">GetAttachedHydrogens</a> ()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_nH;}</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2">HPos</a> <a class="code" href="classgcp_1_1Atom.html#a17f84bebbf93dcfd8869b716eb245ed1">GetBestSide</a> ();</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        <span class="keyword">virtual</span> <a class="code" href="namespacegccv.html#a426bffc4b1e2ed677e0d1d111960e4a9">gccv::Anchor</a> <a class="code" href="classgcp_1_1Atom.html#a5c888ebd6f92fbf4fbcace5728c6a82d">GetChargePosition</a> (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>&amp; Pos, <span class="keywordtype">double</span> Angle, <span class="keywordtype">double</span>&amp; x, <span class="keywordtype">double</span>&amp; y);</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classgcp_1_1Atom.html#ab22695d2697b49885b5191680fcf7fe2">GetAvailablePosition</a> (<span class="keywordtype">double</span>&amp; x, <span class="keywordtype">double</span>&amp; y);</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#a47e290a97ca2e7727a3983cc70dc75ba">GetRelativePosition</a> (<span class="keywordtype">double</span> angle, <span class="keywordtype">double</span>&amp; x, <span class="keywordtype">double</span>&amp; y);</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#a58f2ad93c252d3aafda378510bae3fad">GetPosition</a> (<span class="keywordtype">double</span> angle, <span class="keywordtype">double</span>&amp; x, <span class="keywordtype">double</span>&amp; y);</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        <span class="keyword">virtual</span> xmlNodePtr <a class="code" href="classgcp_1_1Atom.html#a67db585c20bdd33ac5ac071794b67dd5">Save</a> (xmlDocPtr xml) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#a8eed490ca4ecc446a4a1cdc8aeb46f98">Load</a> (xmlNodePtr node);</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#a5526b5a9b31aae0fe4d97f35680264d3">LoadNode</a> (xmlNodePtr node);</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#affe3a63809fcb1ca9cc8a02dd45b6902">AddItem</a> ();</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#accb0d96fef92726488bef04bf87b38ce">SetSelected</a> (<span class="keywordtype">int</span> state);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#ad9a779a82911c075694a9f5e1d6a7494">AcceptNewBonds</a> (<span class="keywordtype">int</span> nb = 1);</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#aa575936870844269806d17d31efb2835">AcceptCharge</a> (<span class="keywordtype">int</span> charge);</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classgcp_1_1Atom.html#ac06b20c09e7568191922a2801d307fed">GetYAlign</a> ();</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#ab74a17bd03ec01c84a96d54c48ef48ea">Move</a> (<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> z = 0.);</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a2636a34f79bd72b0abb7c2e42fd016e0">Transform2D</a> (<a class="code" href="classgcu_1_1Matrix2D.html">gcu::Matrix2D</a>&amp; m, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#a792acfe4dcd58a19acf781c71911ce02">BuildContextualMenu</a> (<a class="code" href="classgcu_1_1UIManager.html" title="base class for a user interface manager">gcu::UIManager</a> *UIManager, <a class="code" href="classgcu_1_1Object.html#a6f15e766fdfb066008bd4b0779574549">Object</a> *<span class="keywordtype">object</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a8a7e7ce2a09f1d0de8b90e5e833580b8">AddToMolecule</a> (<a class="code" href="classgcp_1_1Molecule.html" title="GChemPaint molecule class.">Molecule</a>* Mol);</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#a24167266fe3074c314268f3f73399c9c">HasImplicitElectronPairs</a> ();</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#abd47c0fcae9eaaf8622f22a442f347c2">MayHaveImplicitUnpairedElectrons</a> ();</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a534a917f790b72f180216a922b79fd24">AddElectron</a> (<a class="code" href="classgcp_1_1Electron.html">Electron</a>* electron);</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#aab3b25c01105e26c708bf121d2dfdbe6">RemoveElectron</a> (<a class="code" href="classgcp_1_1Electron.html">Electron</a>* electron);</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a330a76649d4ca4b51c230f51c28274fe">NotifyPositionOccupation</a> (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> pos, <span class="keywordtype">bool</span> occupied);</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a6fcc259201bcd5174f6432b89c9e7e0a">SetChargePosition</a> (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Pos, <span class="keywordtype">bool</span> def, <span class="keywordtype">double</span> angle = 0., <span class="keywordtype">double</span> distance = 0.);</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;        <span class="keywordtype">char</span> <a class="code" href="classgcp_1_1Atom.html#a5c888ebd6f92fbf4fbcace5728c6a82d">GetChargePosition</a> (<span class="keywordtype">double</span> *Angle, <span class="keywordtype">double</span> *Dist) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a1d0a59d6ffd19a170164138bbcde223f">SetCharge</a> (<span class="keywordtype">int</span> charge);</div>
<div class="line"><a name="l00344"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#a6afc5b1b3a3d09a5c369f3e4d04fca6b">  344</a></span>&#160;        <span class="keywordtype">int</span> <a class="code" href="classgcp_1_1Atom.html#a6afc5b1b3a3d09a5c369f3e4d04fca6b">GetCharge</a> ()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="classgcu_1_1Atom.html#a733db6db77be736879f983fbb11bcdaa">m_Charge</a>;}</div>
<div class="line"><a name="l00348"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#aeb5384777a0771e6e79b6f495602f0a3">  348</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#aeb5384777a0771e6e79b6f495602f0a3">ForceChanged</a> () {m_Changed = <span class="keyword">true</span>;}</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#ab19ede9511483d34fb841c98e13491a0">Match</a> (<a class="code" href="classgcu_1_1Atom.html">gcu::Atom</a> *atom, <a class="code" href="classgcu_1_1AtomMatchState.html">gcu::AtomMatchState</a> &amp;state);</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a2f2f6468dfaa1ad29dcfb650d51f987f">GetSymbolGeometry</a> (<span class="keywordtype">double</span> &amp;width, <span class="keywordtype">double</span> &amp;height, <span class="keywordtype">double</span> &amp;angle, <span class="keywordtype">bool</span> up) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#aa63a73d6e59695656d7e739c7b049fee">HasAvailableElectrons</a> (<span class="keywordtype">bool</span> paired);</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <a class="code" href="classgcp_1_1Bond.html">Bond</a> *<a class="code" href="classgcp_1_1Atom.html#a241726f10b4232eb9a6b0e386de079c6">GetBondAtAngle</a> (<span class="keywordtype">double</span> angle);</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#abc8df08d9c521c35dfd30515c59f90c1">UpdateStereoBonds</a> ();</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#a0934592f937dafb15e38b4dbb4a6ee54">HasStereoBond</a> () <span class="keyword">const</span>;</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;        <a class="code" href="classgcp_1_1Bond.html">Bond</a> *<a class="code" href="classgcp_1_1Atom.html#a595312cb78a09e5741e55a86c2345715">GetNewmanBond</a> () <span class="keyword">const</span>;</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classgcp_1_1Atom.html#a4784ed328b09666189095aabe78413b3">BuildSymbolGeometry</a> (<span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height, <span class="keywordtype">double</span> ascent);</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classgcp_1_1Atom.html#ae39a3fe66e5bf72ecdf54eb2e08bd8dc">SetProperty</a> (<span class="keywordtype">unsigned</span> property, <span class="keywordtype">char</span> <span class="keyword">const</span> *value);</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;        <span class="keywordtype">void</span> UpdateAvailablePositions ();</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;        <a class="code" href="classgcu_1_1Element.html" title="Chemical element.">gcu::Element</a> *m_Element;</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;        <span class="keywordtype">int</span> m_nH;</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;        <span class="keywordtype">int</span> m_Valence; <span class="comment">//valence</span></div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        <span class="keywordtype">int</span> m_ValenceOrbitals;</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        <span class="keywordtype">int</span> m_nlp; <span class="comment">//lone electron pairs number</span></div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        <span class="keywordtype">int</span> m_nlu; <span class="comment">//single electrons number</span></div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        <span class="keywordtype">double</span> m_width, m_height; <span class="comment">//size of the atomic symbol in the canvas</span></div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        <span class="keywordtype">double</span> m_length, m_text_height; <span class="comment">// size of the text buffer</span></div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        <a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2">HPos</a> m_HPos; <span class="comment">//0 = left, 1 = right, 2 = top, 3 = bottom, 4 = auto</span></div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;        <span class="keywordtype">bool</span> m_ChargeAuto;</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        <span class="keywordtype">int</span> m_Changed; <span class="comment">//update needs regenerate the buffer</span></div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        <span class="keywordtype">int</span> m_ascent;</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        <span class="keywordtype">double</span> m_lbearing;</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_AvailPos; <span class="comment">//available standard positions for charge and electrons representations</span></div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_OccupiedPos;</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        <span class="keywordtype">bool</span> m_AvailPosCached;</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_ChargePos;</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        <span class="keywordtype">bool</span> m_ChargeAutoPos;</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;        <span class="keywordtype">double</span> m_ChargeAngle;</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        <span class="keywordtype">double</span> m_ChargeDist;</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        <span class="keywordtype">double</span> m_ChargeWidth, m_ChargeTWidth, m_ChargeXOffset, m_ChargeYOffset;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;        std::list&lt;double&gt; m_AngleList;</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        std::map&lt;double, double&gt; m_InterBonds; <span class="comment">/* positions betwen bonds. First  value is the</span></div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="comment">        angle between the two bonds and second value is the direction */</span></div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        PangoLayout *m_Layout, *m_ChargeLayout, *m_HLayout;</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        <span class="keywordtype">double</span> m_xHOffs, m_yHOffs;</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        <span class="keywordtype">bool</span> m_DrawCircle;</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        std::string m_FontName;</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        <span class="keywordtype">double</span> m_SWidth, m_SHeightH, m_SHeightL, m_SAngleH, m_SAngleL;</div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        <span class="comment">// special offset for underlying rectangle; will be removed in next version</span></div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        <span class="keywordtype">double</span> m_xROffs, m_yROffs;</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        <span class="comment">// atom parity stuff</span></div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        <a class="code" href="classgcp_1_1Atom.html">Atom</a> *m_Bonded[4]; <span class="comment">// always using positive parity</span></div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00465"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#a1f354e6337f550d02fccff5ebef6de5a">  465</a></span>&#160;        <span class="keywordtype">double</span> <a class="code" href="classgcp_1_1Atom.html#a1f354e6337f550d02fccff5ebef6de5a">m_CHeight</a>;</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div>
<div class="line"><a name="l00478"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#a85164bd7e0d5e93934b7f0c9ea59fc52">  478</a></span>&#160;<a class="code" href="macros_8h.html#a2e6e8322502a538f4583d41206cea297">GCU_PROP</a> (<span class="keywordtype">bool</span>, ShowSymbol)</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div>
<div class="line"><a name="l00491"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#a608bcf3065c2936b488c6b8dcfcad057">  491</a></span>&#160;<a class="code" href="macros_8h.html#a2e6e8322502a538f4583d41206cea297">GCU_PROP</a> (<a class="code" href="namespacegcp.html#aa66e4b39c091a3385363101d7a55e7c2">HPos</a>, HPosStyle) <span class="comment">//0=force left, 1=force right, 2=force top, 3=force bottom, 4=auto.</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#a3d806bc31b3f84b2338748eb7900e784">  503</a></span>&#160;<span class="comment"></span><a class="code" href="macros_8h.html#a4afc3ecac8195714ecd17b3fcfae14b5">GCU_POINTER_PROP</a> (gccv::Item, ChargeItem)</div>
<div class="line"><a name="l00515"></a><span class="lineno"><a class="code" href="classgcp_1_1Atom.html#a8a532fd151b82ffc4793453031a2e6eb">  515</a></span>&#160;<a class="code" href="macros_8h.html#a2e6e8322502a538f4583d41206cea297">GCU_PROP</a> (<span class="keywordtype">bool</span>, ShowCharge);</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;};</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;}       <span class="comment">//      namespace gcp</span></div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;<span class="preprocessor">#endif // GCHEMPAINT_ATOM_H</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 14 2013 17:34:28 for The Gnome Chemistry Utils by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body>
</html>