aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02397.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/a02397.html')
-rw-r--r--docs/doxygen/nel/a02397.html1420
1 files changed, 1420 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02397.html b/docs/doxygen/nel/a02397.html
new file mode 100644
index 00000000..cf3c0ddb
--- /dev/null
+++ b/docs/doxygen/nel/a02397.html
@@ -0,0 +1,1420 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>NeL: NL3D::CComputedString struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NL3D::CComputedString Struct Reference</h1><code>#include &lt;<a class="el" href="a05596.html">computed_string.h</a>&gt;</code>
+<p>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<a class="el" href="a02397.html">CComputedString</a> A <a class="el" href="a02397.html">CComputedString</a> is a structure which permits to render a string in a driver. It computes 4 vertices per char the renderer draw quads from them.<p>
+<dl compact><dt><b>Author:</b></dt><dd>Stephane Coutelas <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2000 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00082">82</a> of file <a class="el" href="a05596.html">computed_string.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">THotSpot</a> { <br>
+&nbsp;&nbsp;<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw0">BottomLeft</a> = 0,
+<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw4">MiddleLeft</a>,
+<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw9">TopLeft</a>,
+<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw3">MiddleBottom</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw5">MiddleMiddle</a>,
+<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw7">MiddleTop</a>,
+<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw1">BottomRight</a>,
+<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw6">MiddleRight</a>,
+<br>
+&nbsp;&nbsp;<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw10">TopRight</a>,
+<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw2">HotSpotCount</a>
+<br>
+ }</td></tr>
+
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringa0">CComputedString</a> (bool bSetupVB=true)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringa1">getHotSpotVector</a> (<a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">THotSpot</a> hotspot)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringa2">render2D</a> (<a class="el" href="a02434.html">IDriver</a> &amp;driver, float <a class="el" href="a04223.html#a572">x</a>, float <a class="el" href="a04223.html#a574">z</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">THotSpot</a> hotspot=BottomLeft, float scaleX=1, float scaleZ=1, float rotateY=0, bool useScreenAR43=false, bool roundToNearestPixel=true)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip</a> (<a class="el" href="a02434.html">IDriver</a> &amp;driver, <a class="el" href="a03324.html">CRenderStringBuffer</a> &amp;rdrBuffer, float <a class="el" href="a04223.html#a572">x</a>, float <a class="el" href="a04223.html#a574">z</a>, float xmin=0, float ymin=0, float xmax=1, float ymax=1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringa4">render2DUnProjected</a> (<a class="el" href="a02434.html">IDriver</a> &amp;driver, <a class="el" href="a03324.html">CRenderStringBuffer</a> &amp;rdrBuffer, class <a class="el" href="a02562.html">NL3D::CFrustum</a> &amp;frustum, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;scaleMatrix, float <a class="el" href="a04223.html#a572">x</a>, float <a class="el" href="a04223.html#a574">z</a>, float <a class="el" href="a04223.html#a634">depth</a>, float xmin=0, float ymin=0, float xmax=1, float ymax=1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringa5">render3D</a> (<a class="el" href="a02434.html">IDriver</a> &amp;driver, <a class="el" href="a02851.html">CMatrix</a> <a class="el" href="a04223.html#a578">matrix</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">THotSpot</a> hotspot=MiddleMiddle)</td></tr>
+
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02839.html">CMaterial</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo1">Material</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo2">SelectSize</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo3">SelectStart</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Optionnal: each render*() method can draw a subset of letters. Default is 0/FFFFFFFF. <a href="#NL3D_1_1CComputedStringo3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo4">StringHeight</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The height of the string, in pixels (eg: 10). <a href="#NL3D_1_1CComputedStringo4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo5">StringLine</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo6">StringWidth</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The width of the string, in pixels (eg: 30). <a href="#NL3D_1_1CComputedStringo6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03692.html">CVertexBuffer</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo8">XMax</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>. <a href="#NL3D_1_1CComputedStringo8"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo9">XMin</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>. <a href="#NL3D_1_1CComputedStringo9"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo10">ZMax</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>. <a href="#NL3D_1_1CComputedStringo10"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02397.html#NL3D_1_1CComputedStringo11">ZMin</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>. <a href="#NL3D_1_1CComputedStringo11"></a><br><br></td></tr>
+</table>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="NL3D_1_1CComputedStringw8" doxytag="NL3D::CComputedString::THotSpot" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> enum <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">NL3D::CComputedString::THotSpot</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Hotspot positions (origine for the string placement) You should take care that for vertical hotspot, an imaginary line is defined under letters with no leg (like m,b,c etc..) between the leg of p and the loop of the p.<dl compact><dt><b>Enumeration values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw0" doxytag="BottomLeft" ></a>BottomLeft</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw4" doxytag="MiddleLeft" ></a>MiddleLeft</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw9" doxytag="TopLeft" ></a>TopLeft</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw3" doxytag="MiddleBottom" ></a>MiddleBottom</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw5" doxytag="MiddleMiddle" ></a>MiddleMiddle</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw7" doxytag="MiddleTop" ></a>MiddleTop</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw1" doxytag="BottomRight" ></a>BottomRight</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw6" doxytag="MiddleRight" ></a>MiddleRight</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw10" doxytag="TopRight" ></a>TopRight</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw2" doxytag="HotSpotCount" ></a>HotSpotCount</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00112">112</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+<div class="fragment"><pre>00113 {
+00114 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw0">BottomLeft</a>=0,
+00115 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw4">MiddleLeft</a>,
+00116 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw9">TopLeft</a>,
+00117 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw3">MiddleBottom</a>,
+00118 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw5">MiddleMiddle</a>,
+00119 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw7">MiddleTop</a>,
+00120 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw1">BottomRight</a>,
+00121 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw6">MiddleRight</a>,
+00122 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw10">TopRight</a>,
+00123
+00124 <a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw2">HotSpotCount</a>
+00125 };
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CComputedStringa0" doxytag="NL3D::CComputedString::CComputedString" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NL3D::CComputedString::CComputedString </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>bSetupVB</em> = true </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Default constructor
+<p>
+Definition at line <a class="el" href="a05596.html#l00130">130</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+References <a class="el" href="a05596.html#l00105">SelectSize</a>, <a class="el" href="a05596.html#l00104">SelectStart</a>, <a class="el" href="a06710.html#l00169">NL3D::CVertexBuffer::setVertexFormat()</a>, <a class="el" href="a05596.html#l00092">StringHeight</a>, and <a class="el" href="a05596.html#l00090">StringWidth</a>.
+<p>
+<div class="fragment"><pre>00131 {
+00132 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo6">StringWidth</a> = 0;
+00133 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo4">StringHeight</a> = 0;
+00134 <span class="keywordflow">if</span> (bSetupVB)
+00135 {
+00136 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.setVertexFormat (CVertexBuffer::PositionFlag | CVertexBuffer::TexCoord0Flag);
+00137 }
+00138 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo3">SelectStart</a>= 0;
+00139 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo2">SelectSize</a>= ~0;
+00140 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CComputedStringa1" doxytag="NL3D::CComputedString::getHotSpotVector" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> NL3D::CComputedString::getHotSpotVector </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">THotSpot</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>hotspot</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the string's origin <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>hotspot</em>&nbsp;</td><td>the origin of the string</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05595.html#l00049">49</a> of file <a class="el" href="a05595.html">computed_string.cpp</a>.
+<p>
+References <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw1">BottomRight</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw3">MiddleBottom</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw4">MiddleLeft</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw5">MiddleMiddle</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw6">MiddleRight</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw7">MiddleTop</a>, <a class="el" href="a05596.html#l00092">StringHeight</a>, <a class="el" href="a05596.html#l00090">StringWidth</a>, <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw9">TopLeft</a>, and <a class="el" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw10">TopRight</a>.
+<p>
+Referenced by <a class="el" href="a05595.html#l00084">render2D()</a>, and <a class="el" href="a05595.html#l00151">render3D()</a>.
+<p>
+<div class="fragment"><pre>00050 {
+00051 CVector hotspotVector(0,0,0);
+00052
+00053 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw4">MiddleLeft</a>)
+00054 hotspotVector = CVector(0,0,-StringHeight/2);
+00055
+00056 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw9">TopLeft</a>)
+00057 hotspotVector = CVector(0,0,-StringHeight);
+00058
+00059 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw3">MiddleBottom</a>)
+00060 hotspotVector = CVector(-StringWidth/2,0,0);
+00061
+00062 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw5">MiddleMiddle</a>)
+00063 hotspotVector = CVector(-StringWidth/2,0,-StringHeight/2);
+00064
+00065 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw7">MiddleTop</a>)
+00066 hotspotVector = CVector(-StringWidth/2,0,-StringHeight);
+00067
+00068 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw1">BottomRight</a>)
+00069 hotspotVector = CVector(-StringWidth,0,0);
+00070
+00071 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw6">MiddleRight</a>)
+00072 hotspotVector = CVector(-StringWidth,0,-StringHeight/2);
+00073
+00074 <span class="keywordflow">if</span> (hotspot==<a class="code" href="a02397.html#NL3D_1_1CComputedStringw8NL3D_1_1CComputedStringw10">TopRight</a>)
+00075 hotspotVector = CVector(-StringWidth,0,-StringHeight);
+00076
+00077 <span class="keywordflow">return</span> hotspotVector;
+00078 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringa2" doxytag="NL3D::CComputedString::render2D" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CComputedString::render2D </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">THotSpot</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>hotspot</em> = BottomLeft, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>scaleX</em> = 1, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>scaleZ</em> = 1, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>rotateY</em> = 0, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>useScreenAR43</em> = false, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>roundToNearestPixel</em> = true</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Render the unicode string in a driver. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>driver</em>&nbsp;</td><td>the driver where to render the primitives </td></tr>
+ <tr><td valign=top><em>x</em>&nbsp;</td><td>abscissa </td></tr>
+ <tr><td valign=top><em>y</em>&nbsp;</td><td>ordinate </td></tr>
+ <tr><td valign=top><em>hotspot</em>&nbsp;</td><td>position of string origine </td></tr>
+ <tr><td valign=top><em>scaleX</em>&nbsp;</td><td>abscissa scale </td></tr>
+ <tr><td valign=top><em>scaleY</em>&nbsp;</td><td>ordinate scale </td></tr>
+ <tr><td valign=top><em>rotateY</em>&nbsp;</td><td>rotation angle (axe perpendicular to screen) </td></tr>
+ <tr><td valign=top><em>useScreenAR43</em>&nbsp;</td><td>if false then string is displayed with a pixel Ratio 1:1 (independent of window resolution). if true, the string is scaled according to window width and height, to support 4:3 aspect ratio even on weird screen resolution such as 640*240 (ie the char still look square, but the pixel ratio is 2:1) </td></tr>
+ <tr><td valign=top><em>roundToNearestPixel</em>&nbsp;</td><td>if true, snap the final string position to the nearest pixel. if set to true, and if useScreenAR43= false, you are sure that texels of the fonts fit exactly on centers of pixels (no apparent bi-linear).</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05595.html#l00084">84</a> of file <a class="el" href="a05595.html">computed_string.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera2">NL3D::IDriver::activeVertexBuffer()</a>, <a class="el" href="a05596.html#l00088">Color</a>, <a class="el" href="a05595.html#l00049">getHotSpotVector()</a>, <a class="el" href="a06711.html#l00453">NL3D::CVertexBuffer::getNumVertices()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera38">NL3D::IDriver::getWindowSize()</a>, <a class="el" href="a05596.html#l00087">Material</a>, <a class="el" href="a05646.html#l00243">matrix</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera54">NL3D::IDriver::renderQuads()</a>, <a class="el" href="a05596.html#l00105">SelectSize</a>, <a class="el" href="a05596.html#l00104">SelectStart</a>, <a class="el" href="a05641.html#l00118">NL3D::CMaterial::setColor()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera60">NL3D::IDriver::setFrustum()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera68">NL3D::IDriver::setupModelMatrix()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera72">NL3D::IDriver::setupViewMatrix()</a>, <a class="el" href="a05641.html#l00099">NL3D::CMaterial::setZFunc()</a>, <a class="el" href="a05641.html#l00105">NL3D::CMaterial::setZWrite()</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>, and <a class="el" href="a05646.html#l00236">z</a>.
+<p>
+Referenced by <a class="el" href="a06502.html#l00144">NL3D::CTextContext::printAt()</a>, and <a class="el" href="a06502.html#l00218">NL3D::CTextContext::printfAt()</a>.
+<p>
+<div class="fragment"><pre>00091 {
+00092 <span class="keywordflow">if</span> (<a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices() == 0)
+00093 <span class="keywordflow">return</span>;
+00094
+00095 <span class="comment">// get window size</span>
+00096 <a class="code" href="a04558.html#a11">uint32</a> wndWidth, wndHeight;
+00097 driver.getWindowSize(wndWidth, wndHeight);
+00098 <span class="comment">// scale to window size.</span>
+00099 <a class="code" href="a04223.html#a572">x</a>*= wndWidth;
+00100 <a class="code" href="a04223.html#a574">z</a>*= wndHeight;
+00101
+00102 driver.setFrustum(0, (<span class="keywordtype">float</span>)wndWidth, 0, (<span class="keywordtype">float</span>)wndHeight, -1, 1, <span class="keyword">false</span>); <span class="comment">// resX/resY</span>
+00103
+00104 <span class="comment">// Computing hotspot translation vector</span>
+00105 CVector hotspotVector = <a class="code" href="a02397.html#NL3D_1_1CComputedStringa1">getHotSpotVector</a>(hotspot);
+00106
+00107 <span class="comment">// tansformation matrix initialized to identity</span>
+00108 CMatrix <a class="code" href="a04223.html#a578">matrix</a>;
+00109 <a class="code" href="a04223.html#a578">matrix</a>.identity();
+00110
+00111 <span class="comment">// view matrix &lt;-&gt; identity</span>
+00112 driver.setupViewMatrix(matrix);
+00113
+00114 <span class="comment">// model matrix :</span>
+00115 <span class="comment">// centering to hotspot, then scaling, rotating, and translating.</span>
+00116 <a class="code" href="a04223.html#a578">matrix</a>.translate(CVector(x,0,z));
+00117 <a class="code" href="a04223.html#a578">matrix</a>.rotateY(rotateY);
+00118 <a class="code" href="a04223.html#a578">matrix</a>.scale(CVector(scaleX,1,scaleZ));
+00119 <span class="comment">// scale the string to follow window aspect Ratio</span>
+00120 <span class="keywordflow">if</span>(useScreenAR43)
+00121 {
+00122 <a class="code" href="a04223.html#a578">matrix</a>.scale(CVector((3.0f*wndWidth)/(4.0f*wndHeight),1,1));
+00123 }
+00124 <a class="code" href="a04223.html#a578">matrix</a>.translate(hotspotVector);
+00125 <span class="comment">// if roundToNearestPixel, then snap the position to the nearest pixel</span>
+00126 <span class="keywordflow">if</span>( roundToNearestPixel)
+00127 {
+00128 CVector pos= <a class="code" href="a04223.html#a578">matrix</a>.getPos();
+00129 pos.x= (<span class="keywordtype">float</span>)floor(pos.x+0.5f);
+00130 pos.z= (<span class="keywordtype">float</span>)floor(pos.z+0.5f);
+00131 <a class="code" href="a04223.html#a578">matrix</a>.setPos(pos);
+00132 }
+00133 <span class="comment">// setup the matrix</span>
+00134 driver.setupModelMatrix(matrix);
+00135
+00136 driver.activeVertexBuffer(Vertices);
+00137
+00138 <span class="comment">// rendering each primitives </span>
+00139 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo1">Material</a>-&gt;setZFunc (CMaterial::always);
+00140 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo1">Material</a>-&gt;setZWrite (<span class="keyword">false</span>);
+00141 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo1">Material</a>-&gt;setColor (Color);
+00142 <span class="comment">// Clamp for selection</span>
+00143 <a class="code" href="a04558.html#a11">uint32</a> nNumQuad= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices()/4;
+00144 driver.renderQuads (*Material, SelectStart, <a class="code" href="a04061.html#a0">min</a>(nNumQuad, SelectSize) );
+00145 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringa3" doxytag="NL3D::CComputedString::render2DClip" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CComputedString::render2DClip </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03324.html">CRenderStringBuffer</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrBuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>xmin</em> = 0, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>ymin</em> = 0, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>xmax</em> = 1, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>ymax</em> = 1</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Special for interface. same as render2D but clip the quads to xmin,ymin/xmax,ymax. NB: behavior is same as render2D with: Hotspot = bottomLeft, scaleX=1, scaleZ=1, rotateY=0, useScreenAR43= false, roundToNearestPixel= false Additionnaly, this method don't render directly to the driver but add primitives to a <a class="el" href="a03324.html">CRenderStringBuffer</a> Use the method <a class="el" href="a03324.html#NL3D_1_1CRenderStringBuffera1">CRenderStringBuffer::flush()</a> to flush it all.
+<p>
+Definition at line <a class="el" href="a05595.html#l00183">183</a> of file <a class="el" href="a05595.html">computed_string.cpp</a>.
+<p>
+References <a class="el" href="a05596.html#l00088">Color</a>, <a class="el" href="a06711.html#l00340">NL3D::CVertexBuffer::getColorOff()</a>, <a class="el" href="a06711.html#l00453">NL3D::CVertexBuffer::getNumVertices()</a>, <a class="el" href="a06711.html#l00339">NL3D::CVertexBuffer::getTexCoordOff()</a>, <a class="el" href="a06710.html#l00438">NL3D::CVertexBuffer::getVertexCoordPointer()</a>, <a class="el" href="a06711.html#l00473">NL3D::CVertexBuffer::getVertexSize()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera38">NL3D::IDriver::getWindowSize()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05596.html#l00055">NL3D::CRenderStringBuffer::NumQuads</a>, <a class="el" href="a05596.html#l00105">SelectSize</a>, <a class="el" href="a05596.html#l00104">SelectStart</a>, <a class="el" href="a06710.html#l00409">NL3D::CVertexBuffer::setNumVertices()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06655.html#l00049">NLMISC::CUV::U</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a06655.html#l00049">NLMISC::CUV::V</a>, <a class="el" href="a05596.html#l00054">NL3D::CRenderStringBuffer::Vertices</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a05596.html#l00094">XMax</a>, <a class="el" href="a05596.html#l00094">XMin</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>, <a class="el" href="a05646.html#l00236">z</a>, <a class="el" href="a05596.html#l00094">ZMax</a>, and <a class="el" href="a05596.html#l00094">ZMin</a>.
+<p>
+Referenced by <a class="el" href="a06502.html#l00162">NL3D::CTextContext::printClipAt()</a>.
+<p>
+<div class="fragment"><pre>00186 {
+00187 <span class="keywordflow">if</span> (<a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices() == 0)
+00188 <span class="keywordflow">return</span>;
+00189 <span class="keywordflow">if</span>(<a class="code" href="a02397.html#NL3D_1_1CComputedStringo2">SelectSize</a>==0)
+00190 <span class="keywordflow">return</span>;
+00191
+00192 <span class="comment">// get window size</span>
+00193 <a class="code" href="a04558.html#a11">uint32</a> wndWidth, wndHeight;
+00194 driver.getWindowSize(wndWidth, wndHeight);
+00195 <span class="comment">// scale to window size.</span>
+00196 <a class="code" href="a04223.html#a572">x</a>*= wndWidth;
+00197 <a class="code" href="a04223.html#a574">z</a>*= wndHeight;
+00198 xmin*= wndWidth;
+00199 xmax*= wndWidth;
+00200 zmin*= wndHeight;
+00201 zmax*= wndHeight;
+00202
+00203 <span class="comment">// Test String Bound against clip window</span>
+00204 <span class="comment">// If entirely out skip</span>
+00205 <span class="keywordflow">if</span> (((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo9">XMin</a>) &gt; xmax) || ((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo8">XMax</a>) &lt; xmin) ||
+00206 ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo11">ZMin</a>) &gt; zmax) || ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo10">ZMax</a>) &lt; zmin))
+00207 <span class="keywordflow">return</span>;
+00208
+00209 <span class="comment">// test if entirely in.</span>
+00210 <span class="keywordtype">bool</span> allIn;
+00211 allIn= ((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo9">XMin</a>) &gt;= xmin) &amp;&amp; ((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo8">XMax</a>) &lt;= xmax) &amp;&amp;
+00212 ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo11">ZMin</a>) &gt;= zmin) &amp;&amp; ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo10">ZMax</a>) &lt;= zmax);
+00213
+00214
+00215 <span class="comment">// How many quad to render?</span>
+00216 <a class="code" href="a04558.html#a15">uint</a> nNumQuadSrc= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices()/4;
+00217 nNumQuadSrc= <a class="code" href="a04061.html#a0">min</a>(nNumQuadSrc, (<a class="code" href="a04558.html#a15">uint</a>)SelectSize);
+00218
+00219 <span class="comment">// Enlarge dest Buffer if needed</span>
+00220 <span class="keywordflow">if</span>( (rdrBuffer.NumQuads+nNumQuadSrc)*4 &gt; rdrBuffer.Vertices.getNumVertices() )
+00221 {
+00222 rdrBuffer.Vertices.setNumVertices( (rdrBuffer.NumQuads+nNumQuadSrc)*4 );
+00223 }
+00224
+00225 <span class="comment">// prepare copy.</span>
+00226 <a class="code" href="a04558.html#a14">sint</a> ofsSrcUV= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getTexCoordOff();
+00227 <a class="code" href="a04558.html#a14">sint</a> ofsDstUV= rdrBuffer.Vertices.getTexCoordOff();
+00228 <a class="code" href="a04558.html#a14">sint</a> ofsDstColor= rdrBuffer.Vertices.getColorOff();
+00229 <a class="code" href="a04558.html#a7">uint8</a> *srcPtr= (<a class="code" href="a04558.html#a7">uint8</a>*)<a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getVertexCoordPointer();
+00230 <a class="code" href="a04558.html#a7">uint8</a> *dstPtr= (<a class="code" href="a04558.html#a7">uint8</a>*)rdrBuffer.Vertices.getVertexCoordPointer(rdrBuffer.NumQuads*4);
+00231 <a class="code" href="a04558.html#a14">sint</a> srcSize= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getVertexSize();
+00232 <a class="code" href="a04558.html#a14">sint</a> dstSize= rdrBuffer.Vertices.getVertexSize();
+00233
+00234 <span class="comment">// decal src for selection</span>
+00235 srcPtr+= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo3">SelectStart</a>*4 * srcSize;
+00236
+00237 <span class="comment">// **** clipping?</span>
+00238 <span class="keywordflow">if</span>(allIn)
+00239 {
+00240 <span class="comment">// copy All vertices </span>
+00241 <a class="code" href="a04558.html#a15">uint</a> numVerts= nNumQuadSrc*4;
+00242 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;numVerts;i++)
+00243 {
+00244 <span class="comment">// copy and translate pos</span>
+00245 ((CVector*)dstPtr)-&gt;x= <a class="code" href="a04223.html#a572">x</a> + ((CVector*)srcPtr)-&gt;x;
+00246 ((CVector*)dstPtr)-&gt;y= ((CVector*)srcPtr)-&gt;y;
+00247 ((CVector*)dstPtr)-&gt;z= <a class="code" href="a04223.html#a574">z</a> + ((CVector*)srcPtr)-&gt;z;
+00248 <span class="comment">// uv</span>
+00249 *((CUV*)(dstPtr+ofsDstUV))= *((CUV*)(srcPtr+ofsSrcUV));
+00250 <span class="comment">// color</span>
+00251 *((<a class="code" href="a03337.html">CRGBA</a>*)(dstPtr+ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00252
+00253 <span class="comment">// next</span>
+00254 srcPtr+= srcSize;
+00255 dstPtr+= dstSize;
+00256 }
+00257
+00258 <span class="comment">// update the rdrBuffer</span>
+00259 rdrBuffer.NumQuads+= nNumQuadSrc;
+00260 }
+00261 <span class="keywordflow">else</span>
+00262 {
+00263 <a class="code" href="a04558.html#a15">uint</a> nNumQuadClipped= 0;
+00264
+00265 <span class="comment">// the real number of vertices to comute (with selection)</span>
+00266 <a class="code" href="a04558.html#a15">uint</a> numVerts= nNumQuadSrc*4;
+00267
+00268 <span class="comment">// clip into VerticesClipped</span>
+00269 CVector *pIniPos0 = (CVector*)srcPtr;
+00270 CVector *pIniPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pIniPos0) + srcSize*2);
+00271 CVector *pClipPos0 = (CVector*)dstPtr;
+00272 CVector *pClipPos1 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos0) + dstSize);
+00273 CVector *pClipPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos1) + dstSize);
+00274 CVector *pClipPos3 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos2) + dstSize);
+00275 CUV *pClipUV0 = (CUV*)(dstPtr + ofsDstUV );
+00276 CUV *pClipUV1 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV0) + dstSize);
+00277 CUV *pClipUV2 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV1) + dstSize);
+00278 CUV *pClipUV3 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV2) + dstSize);
+00279 <span class="keywordtype">float</span> ratio;
+00280 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a11">uint32</a> i = 0; i &lt; numVerts; i+=4)
+00281 {
+00282 <span class="keywordflow">if</span> (((<a class="code" href="a04223.html#a572">x</a>+pIniPos0-&gt;x) &gt; xmax) || ((<a class="code" href="a04223.html#a572">x</a>+pIniPos2-&gt;x) &lt; xmin) ||
+00283 ((<a class="code" href="a04223.html#a574">z</a>+pIniPos0-&gt;z) &gt; zmax) || ((<a class="code" href="a04223.html#a574">z</a>+pIniPos2-&gt;z) &lt; zmin))
+00284 {
+00285 <span class="comment">// Totally clipped do nothing</span>
+00286 }
+00287 <span class="keywordflow">else</span>
+00288 {
+00289 <span class="comment">// copy with no clip</span>
+00290 <span class="comment">// v0</span>
+00291 *((CVector*) (dstPtr + dstSize*0))= *((CVector*) (srcPtr + srcSize*0));
+00292 *((CUV*) (dstPtr + dstSize*0 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*0 + ofsSrcUV));
+00293 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*0 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00294 <span class="comment">// v1</span>
+00295 *((CVector*) (dstPtr + dstSize*1))= *((CVector*) (srcPtr + srcSize*1));
+00296 *((CUV*) (dstPtr + dstSize*1 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*1 + ofsSrcUV));
+00297 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*1 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00298 <span class="comment">// v2</span>
+00299 *((CVector*) (dstPtr + dstSize*2))= *((CVector*) (srcPtr + srcSize*2));
+00300 *((CUV*) (dstPtr + dstSize*2 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*2 + ofsSrcUV));
+00301 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*2 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00302 <span class="comment">// v3</span>
+00303 *((CVector*) (dstPtr + dstSize*3))= *((CVector*) (srcPtr + srcSize*3));
+00304 *((CUV*) (dstPtr + dstSize*3 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*3 + ofsSrcUV));
+00305 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*3 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00306
+00307
+00308 <span class="comment">// translate dest</span>
+00309 pClipPos0-&gt;x += <a class="code" href="a04223.html#a572">x</a>; pClipPos1-&gt;x += <a class="code" href="a04223.html#a572">x</a>; pClipPos2-&gt;x += <a class="code" href="a04223.html#a572">x</a>; pClipPos3-&gt;x += <a class="code" href="a04223.html#a572">x</a>;
+00310 pClipPos0-&gt;z += <a class="code" href="a04223.html#a574">z</a>; pClipPos1-&gt;z += <a class="code" href="a04223.html#a574">z</a>; pClipPos2-&gt;z += <a class="code" href="a04223.html#a574">z</a>; pClipPos3-&gt;z += <a class="code" href="a04223.html#a574">z</a>;
+00311 <span class="keywordflow">if</span> ((pClipPos0-&gt;x &gt;= xmin) &amp;&amp; (pClipPos0-&gt;z &gt;= zmin) &amp;&amp; (pClipPos2-&gt;x &lt;= xmax) &amp;&amp; (pClipPos2-&gt;z &lt;= zmax))
+00312 {
+00313 <span class="comment">// Not clipped</span>
+00314 }
+00315 <span class="keywordflow">else</span>
+00316 {
+00317 <span class="comment">// Partially clipped</span>
+00318
+00319 <span class="keywordflow">if</span> (pClipPos0-&gt;x &lt; xmin)
+00320 {
+00321 ratio = ((<span class="keywordtype">float</span>)(xmin - pClipPos0-&gt;x))/((<span class="keywordtype">float</span>)(pClipPos1-&gt;x - pClipPos0-&gt;x));
+00322 pClipPos3-&gt;x = pClipPos0-&gt;x = xmin;
+00323 pClipUV0-&gt;U += ratio*(pClipUV1-&gt;U - pClipUV0-&gt;U);
+00324 pClipUV3-&gt;U += ratio*(pClipUV2-&gt;U - pClipUV3-&gt;U);
+00325 }
+00326
+00327 <span class="keywordflow">if</span> (pClipPos0-&gt;z &lt; zmin)
+00328 {
+00329 ratio = ((<span class="keywordtype">float</span>)(zmin - pClipPos0-&gt;z))/((<span class="keywordtype">float</span>)(pClipPos3-&gt;z - pClipPos0-&gt;z));
+00330 pClipPos1-&gt;z = pClipPos0-&gt;z = zmin;
+00331 pClipUV0-&gt;V += ratio*(pClipUV3-&gt;V - pClipUV0-&gt;V);
+00332 pClipUV1-&gt;V += ratio*(pClipUV2-&gt;V - pClipUV1-&gt;V);
+00333 }
+00334
+00335 <span class="keywordflow">if</span> (pClipPos2-&gt;x &gt; xmax)
+00336 {
+00337 ratio = ((<span class="keywordtype">float</span>)(xmax - pClipPos2-&gt;x))/((<span class="keywordtype">float</span>)(pClipPos3-&gt;x - pClipPos2-&gt;x));
+00338 pClipPos2-&gt;x = pClipPos1-&gt;x = xmax;
+00339 pClipUV2-&gt;U += ratio*(pClipUV3-&gt;U - pClipUV2-&gt;U);
+00340 pClipUV1-&gt;U += ratio*(pClipUV0-&gt;U - pClipUV1-&gt;U);
+00341 }
+00342
+00343 <span class="keywordflow">if</span> (pClipPos2-&gt;z &gt; zmax)
+00344 {
+00345 ratio = ((<span class="keywordtype">float</span>)(zmax - pClipPos2-&gt;z))/((<span class="keywordtype">float</span>)(pClipPos1-&gt;z - pClipPos2-&gt;z));
+00346 pClipPos2-&gt;z = pClipPos3-&gt;z = zmax;
+00347 pClipUV2-&gt;V += ratio*(pClipUV1-&gt;V - pClipUV2-&gt;V);
+00348 pClipUV3-&gt;V += ratio*(pClipUV0-&gt;V - pClipUV3-&gt;V);
+00349 }
+00350 }
+00351
+00352 <span class="comment">// next quad out</span>
+00353 ++nNumQuadClipped;
+00354 pClipPos0 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos0) + dstSize*4);
+00355 pClipPos1 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos0) + dstSize);
+00356 pClipPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos1) + dstSize);
+00357 pClipPos3 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos2) + dstSize);
+00358 pClipUV0 = (CUV*)( ((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV0) + dstSize*4 );
+00359 pClipUV1 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV0) + dstSize);
+00360 pClipUV2 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV1) + dstSize);
+00361 pClipUV3 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV2) + dstSize);
+00362 dstPtr+= 4*dstSize;
+00363 }
+00364 <span class="comment">// next quad in</span>
+00365 pIniPos0 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pIniPos0) + srcSize*4);
+00366 pIniPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pIniPos0) + srcSize*2);
+00367 srcPtr+= 4*srcSize;
+00368 }
+00369
+00370 <span class="comment">// update the rdrBuffer</span>
+00371 rdrBuffer.NumQuads+= nNumQuadClipped;
+00372 }
+00373 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringa4" doxytag="NL3D::CComputedString::render2DUnProjected" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CComputedString::render2DUnProjected </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03324.html">CRenderStringBuffer</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrBuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>class <a class="el" href="a02562.html">NL3D::CFrustum</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>frustum</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>scaleMatrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>depth</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>xmin</em> = 0, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>ymin</em> = 0, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>xmax</em> = 1, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>ymax</em> = 1</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Special for interface. same as render2DClip but unproject the vertices using a frustum and a scale matrix Use the method <a class="el" href="a03324.html#NL3D_1_1CRenderStringBuffera1">CRenderStringBuffer::flush()</a> to flush it all.
+<p>
+Definition at line <a class="el" href="a05595.html#l00378">378</a> of file <a class="el" href="a05595.html">computed_string.cpp</a>.
+<p>
+References <a class="el" href="a05596.html#l00088">Color</a>, <a class="el" href="a05646.html#l01013">depth</a>, <a class="el" href="a06711.html#l00340">NL3D::CVertexBuffer::getColorOff()</a>, <a class="el" href="a06711.html#l00453">NL3D::CVertexBuffer::getNumVertices()</a>, <a class="el" href="a06711.html#l00339">NL3D::CVertexBuffer::getTexCoordOff()</a>, <a class="el" href="a06710.html#l00438">NL3D::CVertexBuffer::getVertexCoordPointer()</a>, <a class="el" href="a06711.html#l00473">NL3D::CVertexBuffer::getVertexSize()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera38">NL3D::IDriver::getWindowSize()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05596.html#l00055">NL3D::CRenderStringBuffer::NumQuads</a>, <a class="el" href="a05596.html#l00105">SelectSize</a>, <a class="el" href="a05596.html#l00104">SelectStart</a>, <a class="el" href="a06710.html#l00409">NL3D::CVertexBuffer::setNumVertices()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06655.html#l00049">NLMISC::CUV::U</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a06655.html#l00049">NLMISC::CUV::V</a>, <a class="el" href="a05596.html#l00054">NL3D::CRenderStringBuffer::Vertices</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a05596.html#l00094">XMax</a>, <a class="el" href="a05596.html#l00094">XMin</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>, <a class="el" href="a05646.html#l00236">z</a>, <a class="el" href="a05596.html#l00094">ZMax</a>, and <a class="el" href="a05596.html#l00094">ZMin</a>.
+<p>
+Referenced by <a class="el" href="a06502.html#l00180">NL3D::CTextContext::printClipAtUnProjected()</a>.
+<p>
+<div class="fragment"><pre>00380 {
+00381 <span class="keywordflow">if</span> (<a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices() == 0)
+00382 <span class="keywordflow">return</span>;
+00383 <span class="keywordflow">if</span>(<a class="code" href="a02397.html#NL3D_1_1CComputedStringo2">SelectSize</a>==0)
+00384 <span class="keywordflow">return</span>;
+00385
+00386 <span class="comment">// get window size</span>
+00387 <a class="code" href="a04558.html#a11">uint32</a> wndWidth, wndHeight;
+00388 driver.getWindowSize(wndWidth, wndHeight);
+00389 <span class="comment">// scale to window size.</span>
+00390 <a class="code" href="a04223.html#a572">x</a>*= wndWidth;
+00391 <a class="code" href="a04223.html#a574">z</a>*= wndHeight;
+00392 xmin*= wndWidth;
+00393 xmax*= wndWidth;
+00394 zmin*= wndHeight;
+00395 zmax*= wndHeight;
+00396
+00397 <span class="comment">// Test String Bound against clip window</span>
+00398 <span class="comment">// If entirely out skip</span>
+00399 <span class="keywordflow">if</span> (((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo9">XMin</a>) &gt; xmax) || ((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo8">XMax</a>) &lt; xmin) ||
+00400 ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo11">ZMin</a>) &gt; zmax) || ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo10">ZMax</a>) &lt; zmin))
+00401 <span class="keywordflow">return</span>;
+00402
+00403 <span class="comment">// test if entirely in.</span>
+00404 <span class="keywordtype">bool</span> allIn;
+00405 allIn= ((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo9">XMin</a>) &gt;= (xmin-0.001f)) &amp;&amp; ((<a class="code" href="a04223.html#a572">x</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo8">XMax</a>) &lt;= (xmax+0.001f)) &amp;&amp;
+00406 ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo11">ZMin</a>) &gt;= (zmin-0.001f)) &amp;&amp; ((<a class="code" href="a04223.html#a574">z</a>+<a class="code" href="a02397.html#NL3D_1_1CComputedStringo10">ZMax</a>) &lt;= (zmax+0.001f));
+00407
+00408
+00409 <span class="comment">// How many quad to render?</span>
+00410 <a class="code" href="a04558.html#a15">uint</a> nNumQuadSrc= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices()/4;
+00411 nNumQuadSrc= <a class="code" href="a04061.html#a0">min</a>(nNumQuadSrc, (<a class="code" href="a04558.html#a15">uint</a>)SelectSize);
+00412
+00413 <span class="comment">// Enlarge dest Buffer if needed</span>
+00414 <span class="keywordflow">if</span>( (rdrBuffer.NumQuads+nNumQuadSrc)*4 &gt; rdrBuffer.Vertices.getNumVertices() )
+00415 {
+00416 rdrBuffer.Vertices.setNumVertices( (rdrBuffer.NumQuads+nNumQuadSrc)*4 );
+00417 }
+00418
+00419 <span class="comment">// prepare copy.</span>
+00420 <a class="code" href="a04558.html#a14">sint</a> ofsSrcUV= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getTexCoordOff();
+00421 <a class="code" href="a04558.html#a14">sint</a> ofsDstUV= rdrBuffer.Vertices.getTexCoordOff();
+00422 <a class="code" href="a04558.html#a14">sint</a> ofsDstColor= rdrBuffer.Vertices.getColorOff();
+00423 <a class="code" href="a04558.html#a7">uint8</a> *srcPtr= (<a class="code" href="a04558.html#a7">uint8</a>*)<a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getVertexCoordPointer();
+00424 <a class="code" href="a04558.html#a7">uint8</a> *dstPtr= (<a class="code" href="a04558.html#a7">uint8</a>*)rdrBuffer.Vertices.getVertexCoordPointer(rdrBuffer.NumQuads*4);
+00425 <a class="code" href="a04558.html#a14">sint</a> srcSize= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getVertexSize();
+00426 <a class="code" href="a04558.html#a14">sint</a> dstSize= rdrBuffer.Vertices.getVertexSize();
+00427
+00428 <span class="comment">// decal src for selection</span>
+00429 srcPtr+= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo3">SelectStart</a>*4 * srcSize;
+00430
+00431 <a class="code" href="a04558.html#a7">uint8</a> *dstPtrBackup = dstPtr;
+00432
+00433 <span class="comment">// **** clipping?</span>
+00434 <span class="keywordflow">if</span>(allIn)
+00435 {
+00436 <span class="comment">// copy All vertices </span>
+00437 <a class="code" href="a04558.html#a15">uint</a> numVerts= nNumQuadSrc*4;
+00438 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;numVerts;i++)
+00439 {
+00440 <span class="comment">// copy and translate pos</span>
+00441 ((CVector*)dstPtr)-&gt;x= <a class="code" href="a04223.html#a572">x</a> + ((CVector*)srcPtr)-&gt;x;
+00442 ((CVector*)dstPtr)-&gt;z= <a class="code" href="a04223.html#a574">z</a> + ((CVector*)srcPtr)-&gt;z;
+00443
+00444 <span class="comment">// uv</span>
+00445 *((CUV*)(dstPtr+ofsDstUV))= *((CUV*)(srcPtr+ofsSrcUV));
+00446 <span class="comment">// color</span>
+00447 *((<a class="code" href="a03337.html">CRGBA</a>*)(dstPtr+ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00448
+00449 <span class="comment">// next</span>
+00450 srcPtr+= srcSize;
+00451 dstPtr+= dstSize;
+00452 }
+00453
+00454 <span class="comment">// update the rdrBuffer</span>
+00455 rdrBuffer.NumQuads+= nNumQuadSrc;
+00456 }
+00457 <span class="keywordflow">else</span>
+00458 {
+00459 <a class="code" href="a04558.html#a15">uint</a> nNumQuadClipped= 0;
+00460
+00461 <span class="comment">// the real number of vertices to comute (with selection)</span>
+00462 <a class="code" href="a04558.html#a15">uint</a> numVerts= nNumQuadSrc*4;
+00463
+00464 <span class="comment">// clip into VerticesClipped</span>
+00465 CVector *pIniPos0 = (CVector*)srcPtr;
+00466 CVector *pIniPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pIniPos0) + srcSize*2);
+00467 CVector *pClipPos0 = (CVector*)dstPtr;
+00468 CVector *pClipPos1 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos0) + dstSize);
+00469 CVector *pClipPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos1) + dstSize);
+00470 CVector *pClipPos3 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos2) + dstSize);
+00471 CUV *pClipUV0 = (CUV*)(dstPtr + ofsDstUV );
+00472 CUV *pClipUV1 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV0) + dstSize);
+00473 CUV *pClipUV2 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV1) + dstSize);
+00474 CUV *pClipUV3 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV2) + dstSize);
+00475 <span class="keywordtype">float</span> ratio;
+00476 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a11">uint32</a> i = 0; i &lt; numVerts; i+=4)
+00477 {
+00478 <span class="keywordflow">if</span> (((<a class="code" href="a04223.html#a572">x</a>+pIniPos0-&gt;x) &gt; xmax) || ((<a class="code" href="a04223.html#a572">x</a>+pIniPos2-&gt;x) &lt; xmin) ||
+00479 ((<a class="code" href="a04223.html#a574">z</a>+pIniPos0-&gt;z) &gt; zmax) || ((<a class="code" href="a04223.html#a574">z</a>+pIniPos2-&gt;z) &lt; zmin))
+00480 {
+00481 <span class="comment">// Totally clipped do nothing</span>
+00482 }
+00483 <span class="keywordflow">else</span>
+00484 {
+00485 <span class="comment">// copy with no clip</span>
+00486 <span class="comment">// v0</span>
+00487 *((CVector*) (dstPtr + dstSize*0))= *((CVector*) (srcPtr + srcSize*0));
+00488 *((CUV*) (dstPtr + dstSize*0 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*0 + ofsSrcUV));
+00489 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*0 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00490 <span class="comment">// v1</span>
+00491 *((CVector*) (dstPtr + dstSize*1))= *((CVector*) (srcPtr + srcSize*1));
+00492 *((CUV*) (dstPtr + dstSize*1 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*1 + ofsSrcUV));
+00493 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*1 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00494 <span class="comment">// v2</span>
+00495 *((CVector*) (dstPtr + dstSize*2))= *((CVector*) (srcPtr + srcSize*2));
+00496 *((CUV*) (dstPtr + dstSize*2 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*2 + ofsSrcUV));
+00497 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*2 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00498 <span class="comment">// v3</span>
+00499 *((CVector*) (dstPtr + dstSize*3))= *((CVector*) (srcPtr + srcSize*3));
+00500 *((CUV*) (dstPtr + dstSize*3 + ofsDstUV))= *((CUV*)(srcPtr + srcSize*3 + ofsSrcUV));
+00501 *((<a class="code" href="a03337.html">CRGBA</a>*) (dstPtr + dstSize*3 + ofsDstColor))= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo0">Color</a>;
+00502
+00503
+00504 <span class="comment">// translate dest</span>
+00505 pClipPos0-&gt;x += <a class="code" href="a04223.html#a572">x</a>; pClipPos1-&gt;x += <a class="code" href="a04223.html#a572">x</a>; pClipPos2-&gt;x += <a class="code" href="a04223.html#a572">x</a>; pClipPos3-&gt;x += <a class="code" href="a04223.html#a572">x</a>;
+00506 pClipPos0-&gt;z += <a class="code" href="a04223.html#a574">z</a>; pClipPos1-&gt;z += <a class="code" href="a04223.html#a574">z</a>; pClipPos2-&gt;z += <a class="code" href="a04223.html#a574">z</a>; pClipPos3-&gt;z += <a class="code" href="a04223.html#a574">z</a>;
+00507 <span class="keywordflow">if</span> ((pClipPos0-&gt;x &gt;= xmin) &amp;&amp; (pClipPos0-&gt;z &gt;= zmin) &amp;&amp; (pClipPos2-&gt;x &lt;= xmax) &amp;&amp; (pClipPos2-&gt;z &lt;= zmax))
+00508 {
+00509 <span class="comment">// Not clipped</span>
+00510 }
+00511 <span class="keywordflow">else</span>
+00512 {
+00513 <span class="comment">// Partially clipped</span>
+00514
+00515 <span class="keywordflow">if</span> (pClipPos0-&gt;x &lt; xmin)
+00516 {
+00517 ratio = ((<span class="keywordtype">float</span>)(xmin - pClipPos0-&gt;x))/((<span class="keywordtype">float</span>)(pClipPos1-&gt;x - pClipPos0-&gt;x));
+00518 pClipPos3-&gt;x = pClipPos0-&gt;x = xmin;
+00519 pClipUV0-&gt;U += ratio*(pClipUV1-&gt;U - pClipUV0-&gt;U);
+00520 pClipUV3-&gt;U += ratio*(pClipUV2-&gt;U - pClipUV3-&gt;U);
+00521 }
+00522
+00523 <span class="keywordflow">if</span> (pClipPos0-&gt;z &lt; zmin)
+00524 {
+00525 ratio = ((<span class="keywordtype">float</span>)(zmin - pClipPos0-&gt;z))/((<span class="keywordtype">float</span>)(pClipPos3-&gt;z - pClipPos0-&gt;z));
+00526 pClipPos1-&gt;z = pClipPos0-&gt;z = zmin;
+00527 pClipUV0-&gt;V += ratio*(pClipUV3-&gt;V - pClipUV0-&gt;V);
+00528 pClipUV1-&gt;V += ratio*(pClipUV2-&gt;V - pClipUV1-&gt;V);
+00529 }
+00530
+00531 <span class="keywordflow">if</span> (pClipPos2-&gt;x &gt; xmax)
+00532 {
+00533 ratio = ((<span class="keywordtype">float</span>)(xmax - pClipPos2-&gt;x))/((<span class="keywordtype">float</span>)(pClipPos3-&gt;x - pClipPos2-&gt;x));
+00534 pClipPos2-&gt;x = pClipPos1-&gt;x = xmax;
+00535 pClipUV2-&gt;U += ratio*(pClipUV3-&gt;U - pClipUV2-&gt;U);
+00536 pClipUV1-&gt;U += ratio*(pClipUV0-&gt;U - pClipUV1-&gt;U);
+00537 }
+00538
+00539 <span class="keywordflow">if</span> (pClipPos2-&gt;z &gt; zmax)
+00540 {
+00541 ratio = ((<span class="keywordtype">float</span>)(zmax - pClipPos2-&gt;z))/((<span class="keywordtype">float</span>)(pClipPos1-&gt;z - pClipPos2-&gt;z));
+00542 pClipPos2-&gt;z = pClipPos3-&gt;z = zmax;
+00543 pClipUV2-&gt;V += ratio*(pClipUV1-&gt;V - pClipUV2-&gt;V);
+00544 pClipUV3-&gt;V += ratio*(pClipUV0-&gt;V - pClipUV3-&gt;V);
+00545 }
+00546 }
+00547
+00548 <span class="comment">// next quad out</span>
+00549 ++nNumQuadClipped;
+00550 pClipPos0 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos0) + dstSize*4);
+00551 pClipPos1 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos0) + dstSize);
+00552 pClipPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos1) + dstSize);
+00553 pClipPos3 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipPos2) + dstSize);
+00554 pClipUV0 = (CUV*)( ((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV0) + dstSize*4 );
+00555 pClipUV1 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV0) + dstSize);
+00556 pClipUV2 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV1) + dstSize);
+00557 pClipUV3 = (CUV*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pClipUV2) + dstSize);
+00558 dstPtr+= 4*dstSize;
+00559 }
+00560 <span class="comment">// next quad in</span>
+00561 pIniPos0 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pIniPos0) + srcSize*4);
+00562 pIniPos2 = (CVector*)(((<a class="code" href="a04558.html#a7">uint8</a>*)pIniPos0) + srcSize*2);
+00563 srcPtr+= 4*srcSize;
+00564 }
+00565
+00566 <span class="comment">// update the rdrBuffer</span>
+00567 rdrBuffer.NumQuads+= nNumQuadClipped;
+00568 }
+00569
+00570 <span class="keyword">const</span> <span class="keywordtype">float</span> OOW = 1.f / (<span class="keywordtype">float</span>)wndWidth;
+00571 <span class="keyword">const</span> <span class="keywordtype">float</span> OOH = 1.f / (<span class="keywordtype">float</span>)wndHeight;
+00572
+00573 <span class="keywordflow">while</span> (dstPtrBackup != dstPtr)
+00574 {
+00575 <span class="comment">// preset unprojection</span>
+00576 CVector tmp;
+00577 tmp.x = ((CVector*)dstPtrBackup)-&gt;x * OOW;
+00578 tmp.y = ((CVector*)dstPtrBackup)-&gt;z * OOH;
+00579 tmp.z = <a class="code" href="a04223.html#a634">depth</a>;
+00580 <span class="comment">// mul by user scale matrix</span>
+00581 tmp= scaleMatrix * tmp;
+00582 <span class="comment">// Unproject it</span>
+00583 *((CVector*)dstPtrBackup) = frustum.unProjectZ(tmp);
+00584 dstPtrBackup += dstSize;
+00585 }
+00586
+00587 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringa5" doxytag="NL3D::CComputedString::render3D" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CComputedString::render3D </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02851.html">CMatrix</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>matrix</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02397.html#NL3D_1_1CComputedStringw8">THotSpot</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>hotspot</em> = MiddleMiddle</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Render the unicode string in a driver, in 3D with a user matrix. NB: size of the string is first scaled by 1/windowHeight. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>driver</em>&nbsp;</td><td>the driver where to render the primitives </td></tr>
+ <tr><td valign=top><em>matrix</em>&nbsp;</td><td>transformation matrix </td></tr>
+ <tr><td valign=top><em>hotspot</em>&nbsp;</td><td>position of string origine</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05595.html#l00151">151</a> of file <a class="el" href="a05595.html">computed_string.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera2">NL3D::IDriver::activeVertexBuffer()</a>, <a class="el" href="a05596.html#l00088">Color</a>, <a class="el" href="a05595.html#l00049">getHotSpotVector()</a>, <a class="el" href="a06711.html#l00453">NL3D::CVertexBuffer::getNumVertices()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera38">NL3D::IDriver::getWindowSize()</a>, <a class="el" href="a05596.html#l00087">Material</a>, <a class="el" href="a05646.html#l00243">matrix</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera54">NL3D::IDriver::renderQuads()</a>, <a class="el" href="a05596.html#l00105">SelectSize</a>, <a class="el" href="a05596.html#l00104">SelectStart</a>, <a class="el" href="a05641.html#l00118">NL3D::CMaterial::setColor()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera68">NL3D::IDriver::setupModelMatrix()</a>, <a class="el" href="a05641.html#l00099">NL3D::CMaterial::setZFunc()</a>, <a class="el" href="a05641.html#l00105">NL3D::CMaterial::setZWrite()</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06350.html#l01224">NL3D::CInstanceGroup::displayDebugClusters()</a>, <a class="el" href="a06285.html#l00235">NL3D::CPSUtil::print()</a>, and <a class="el" href="a06503.html#l00345">NL3D::CTextContextUser::render3D()</a>.
+<p>
+<div class="fragment"><pre>00152 {
+00153 <span class="keywordflow">if</span> (<a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices() == 0)
+00154 <span class="keywordflow">return</span>;
+00155
+00156 <span class="comment">// get window size</span>
+00157 <a class="code" href="a04558.html#a11">uint32</a> wndWidth, wndHeight;
+00158 driver.getWindowSize(wndWidth, wndHeight);
+00159 <span class="comment">// scale according to window height (backward compatibility)</span>
+00160 <a class="code" href="a04223.html#a578">matrix</a>.scale(1.0f/wndHeight);
+00161
+00162 <span class="comment">// Computing hotspot translation vector</span>
+00163 CVector hotspotVector = <a class="code" href="a02397.html#NL3D_1_1CComputedStringa1">getHotSpotVector</a>(hotspot);
+00164 <a class="code" href="a04223.html#a578">matrix</a>.translate(hotspotVector);
+00165
+00166 <span class="comment">// render</span>
+00167 driver.setupModelMatrix(matrix);
+00168 driver.activeVertexBuffer(Vertices);
+00169
+00170 <span class="comment">// Rendering each primitive blocks</span>
+00171 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo1">Material</a>-&gt;setZFunc (CMaterial::lessequal);
+00172 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo1">Material</a>-&gt;setZWrite (<span class="keyword">true</span>);
+00173 <a class="code" href="a02397.html#NL3D_1_1CComputedStringo1">Material</a>-&gt;setColor (Color);
+00174 <span class="comment">// Clamp for selection</span>
+00175 <a class="code" href="a04558.html#a11">uint32</a> nNumQuad= <a class="code" href="a02397.html#NL3D_1_1CComputedStringo7">Vertices</a>.getNumVertices()/4;
+00176 driver.renderQuads (*Material, SelectStart, <a class="code" href="a04061.html#a0">min</a>(nNumQuad, SelectSize) );
+00177 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CComputedStringo0" doxytag="NL3D::CComputedString::Color" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03337.html">CRGBA</a> <a class="el" href="a02397.html#NL3D_1_1CComputedStringo0">NL3D::CComputedString::Color</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00088">88</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05722.html#l00229">NL3D::CFontManager::computeStringInfo()</a>, <a class="el" href="a06502.html#l00144">NL3D::CTextContext::printAt()</a>, <a class="el" href="a06502.html#l00162">NL3D::CTextContext::printClipAt()</a>, <a class="el" href="a06502.html#l00180">NL3D::CTextContext::printClipAtUnProjected()</a>, <a class="el" href="a06502.html#l00218">NL3D::CTextContext::printfAt()</a>, <a class="el" href="a05595.html#l00084">render2D()</a>, <a class="el" href="a05595.html#l00183">render2DClip()</a>, <a class="el" href="a05595.html#l00378">render2DUnProjected()</a>, <a class="el" href="a05595.html#l00151">render3D()</a>, and <a class="el" href="a06503.html#l00233">NL3D::CTextContextUser::setStringColor()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo1" doxytag="NL3D::CComputedString::Material" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a02839.html">CMaterial</a>* <a class="el" href="a02397.html#NL3D_1_1CComputedStringo1">NL3D::CComputedString::Material</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00087">87</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05595.html#l00084">render2D()</a>, and <a class="el" href="a05595.html#l00151">render3D()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo2" doxytag="NL3D::CComputedString::SelectSize" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a02397.html#NL3D_1_1CComputedStringo2">NL3D::CComputedString::SelectSize</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00105">105</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05596.html#l00130">CComputedString()</a>, <a class="el" href="a05595.html#l00084">render2D()</a>, <a class="el" href="a05595.html#l00183">render2DClip()</a>, <a class="el" href="a05595.html#l00378">render2DUnProjected()</a>, and <a class="el" href="a05595.html#l00151">render3D()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo3" doxytag="NL3D::CComputedString::SelectStart" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a02397.html#NL3D_1_1CComputedStringo3">NL3D::CComputedString::SelectStart</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Optionnal: each render*() method can draw a subset of letters. Default is 0/FFFFFFFF.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00104">104</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05596.html#l00130">CComputedString()</a>, <a class="el" href="a05595.html#l00084">render2D()</a>, <a class="el" href="a05595.html#l00183">render2DClip()</a>, <a class="el" href="a05595.html#l00378">render2DUnProjected()</a>, and <a class="el" href="a05595.html#l00151">render3D()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo4" doxytag="NL3D::CComputedString::StringHeight" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a02397.html#NL3D_1_1CComputedStringo4">NL3D::CComputedString::StringHeight</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The height of the string, in pixels (eg: 10).
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00092">92</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05596.html#l00130">CComputedString()</a>, <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05722.html#l00229">NL3D::CFontManager::computeStringInfo()</a>, <a class="el" href="a05595.html#l00049">getHotSpotVector()</a>, and <a class="el" href="a06503.html#l00268">NL3D::CTextContextUser::getStringInfo()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo5" doxytag="NL3D::CComputedString::StringLine" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a02397.html#NL3D_1_1CComputedStringo5">NL3D::CComputedString::StringLine</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+StringLine is the size from bottom of the whole string image to the hotspot in pixels. for instance if the hotspot is bottomLeft the imaginary line of the string "bpc" is under the b, under the loop of the p but over the leg of the p. So StringLine is a positive value in this case. It may be a negative value for the string "^" for example.
+<p>
+Definition at line <a class="el" href="a05596.html#l00101">101</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05722.html#l00229">NL3D::CFontManager::computeStringInfo()</a>, and <a class="el" href="a06503.html#l00268">NL3D::CTextContextUser::getStringInfo()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo6" doxytag="NL3D::CComputedString::StringWidth" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a02397.html#NL3D_1_1CComputedStringo6">NL3D::CComputedString::StringWidth</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The width of the string, in pixels (eg: 30).
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00090">90</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05596.html#l00130">CComputedString()</a>, <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05722.html#l00229">NL3D::CFontManager::computeStringInfo()</a>, <a class="el" href="a05595.html#l00049">getHotSpotVector()</a>, and <a class="el" href="a06503.html#l00268">NL3D::CTextContextUser::getStringInfo()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo7" doxytag="NL3D::CComputedString::Vertices" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03692.html">CVertexBuffer</a> <a class="el" href="a02397.html#NL3D_1_1CComputedStringo7">NL3D::CComputedString::Vertices</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00086">86</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo8" doxytag="NL3D::CComputedString::XMax" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a02397.html#NL3D_1_1CComputedStringo8">NL3D::CComputedString::XMax</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00094">94</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05595.html#l00183">render2DClip()</a>, and <a class="el" href="a05595.html#l00378">render2DUnProjected()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo9" doxytag="NL3D::CComputedString::XMin" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a02397.html#NL3D_1_1CComputedStringo9">NL3D::CComputedString::XMin</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00094">94</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05595.html#l00183">render2DClip()</a>, and <a class="el" href="a05595.html#l00378">render2DUnProjected()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo10" doxytag="NL3D::CComputedString::ZMax" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a02397.html#NL3D_1_1CComputedStringo10">NL3D::CComputedString::ZMax</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00094">94</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05595.html#l00183">render2DClip()</a>, and <a class="el" href="a05595.html#l00378">render2DUnProjected()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CComputedStringo11" doxytag="NL3D::CComputedString::ZMin" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a02397.html#NL3D_1_1CComputedStringo11">NL3D::CComputedString::ZMin</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The BBox of all vertices. used for <a class="el" href="a02397.html#NL3D_1_1CComputedStringa3">render2DClip()</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05596.html#l00094">94</a> of file <a class="el" href="a05596.html">computed_string.h</a>.
+<p>
+Referenced by <a class="el" href="a05722.html#l00088">NL3D::CFontManager::computeString()</a>, <a class="el" href="a05595.html#l00183">render2DClip()</a>, and <a class="el" href="a05595.html#l00378">render2DUnProjected()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="a05596.html">computed_string.h</a><li><a class="el" href="a05595.html">computed_string.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:45:26 2004 for NeL by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.6 </small></address>
+</body>
+</html>