blob: 45473cef1f2a154c7a2278b56302a98a321db744 [file] [log] [blame]
<!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>FTGL: FTPolyGlyph.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.6 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</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="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
<h1>FTPolyGlyph.cpp</h1><a href="FTPolyGlyph_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="preprocessor">#include "<a class="code" href="FTPolyGlyph_8h.html">FTPolyGlyph.h</a>"</span>
00002 <span class="preprocessor">#include "<a class="code" href="FTVectoriser_8h.html">FTVectoriser.h</a>"</span>
00003
00004
<a name="l00005"></a><a class="code" href="classFTPolyGlyph.html#a0">00005</a> <a class="code" href="classFTPolyGlyph.html#a0">FTPolyGlyph::FTPolyGlyph</a>( FT_GlyphSlot glyph, <span class="keywordtype">bool</span> useDisplayList)
00006 : <a class="code" href="classFTGlyph.html">FTGlyph</a>( glyph),
00007 glList(0)
00008 {
00009 <span class="keywordflow">if</span>( ft_glyph_format_outline != glyph-&gt;format)
00010 {
00011 err = 0x14; <span class="comment">// Invalid_Outline</span>
00012 <span class="keywordflow">return</span>;
00013 }
00014
00015 <a class="code" href="classFTVectoriser.html">FTVectoriser</a> vectoriser( glyph);
00016
00017 <span class="keywordflow">if</span>(( vectoriser.<a class="code" href="classFTVectoriser.html#a5">ContourCount</a>() &lt; 1) || ( vectoriser.<a class="code" href="classFTVectoriser.html#a4">PointCount</a>() &lt; 3))
00018 {
00019 <span class="keywordflow">return</span>;
00020 }
00021
00022 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> horizontalTextureScale = glyph-&gt;face-&gt;size-&gt;metrics.x_ppem * 64;
00023 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> verticalTextureScale = glyph-&gt;face-&gt;size-&gt;metrics.y_ppem * 64;
00024
00025 vectoriser.<a class="code" href="classFTVectoriser.html#a2">MakeMesh</a>( 1.0);
00026
00027 <span class="keywordflow">if</span>( useDisplayList)
00028 {
00029 glList = glGenLists( 1);
00030 glNewList( glList, GL_COMPILE);
00031 }
00032
00033 <span class="keyword">const</span> <a class="code" href="classFTMesh.html">FTMesh</a>* mesh = vectoriser.<a class="code" href="classFTVectoriser.html#a3">GetMesh</a>();
00034 <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; mesh-&gt;<a class="code" href="classFTMesh.html#a7">TesselationCount</a>(); ++index)
00035 {
00036 <span class="keyword">const</span> <a class="code" href="classFTTesselation.html">FTTesselation</a>* subMesh = mesh-&gt;<a class="code" href="classFTMesh.html#a8">Tesselation</a>( index);
00037 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> polyonType = subMesh-&gt;<a class="code" href="classFTTesselation.html#a5">PolygonType</a>();
00038
00039 glBegin( polyonType);
00040 <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pointIndex = 0; pointIndex &lt; subMesh-&gt;<a class="code" href="classFTTesselation.html#a3">PointCount</a>(); ++pointIndex)
00041 {
00042 <a class="code" href="classFTPoint.html">FTPoint</a> point = subMesh-&gt;<a class="code" href="classFTTesselation.html#a4">Point</a>(pointIndex);
00043
00044 glTexCoord2f( point.<a class="code" href="classFTPoint.html#a7">X</a>() / horizontalTextureScale,
00045 point.<a class="code" href="classFTPoint.html#a8">Y</a>() / verticalTextureScale);
00046
00047 glVertex3f( point.<a class="code" href="classFTPoint.html#a7">X</a>() / 64.0f,
00048 point.<a class="code" href="classFTPoint.html#a8">Y</a>() / 64.0f,
00049 0.0f);
00050 }
00051 glEnd();
00052 }
00053
00054 <span class="keywordflow">if</span>(useDisplayList)
00055 {
00056 glEndList();
00057 }
00058 }
00059
00060
<a name="l00061"></a><a class="code" href="classFTPolyGlyph.html#a1">00061</a> <a class="code" href="classFTPolyGlyph.html#a1">FTPolyGlyph::~FTPolyGlyph</a>()
00062 {
00063 glDeleteLists( glList, 1);
00064 }
00065
00066
<a name="l00067"></a><a class="code" href="classFTPolyGlyph.html#a2">00067</a> <span class="keyword">const</span> <a class="code" href="classFTPoint.html">FTPoint</a>&amp; <a class="code" href="classFTPolyGlyph.html#a2">FTPolyGlyph::Render</a>( <span class="keyword">const</span> <a class="code" href="classFTPoint.html">FTPoint</a>&amp; pen)
00068 {
00069 glTranslatef( pen.<a class="code" href="classFTPoint.html#a7">X</a>(), pen.<a class="code" href="classFTPoint.html#a8">Y</a>(), 0.0f);
00070
00071 <span class="keywordflow">if</span>( glList)
00072 {
00073 glCallList( glList);
00074 }
00075
00076 <span class="keywordflow">return</span> advance;
00077 }
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Dec 5 22:24:06 2004 for FTGL 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>