source: NonGTP/FCollada/Documentation/_f_c_d_geometry_polygons_8h-source.html @ 964

Revision 964, 20.8 KB checked in by igarcia, 18 years ago (diff)
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3<title>FCollada: FCDocument/FCDGeometryPolygons.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.4.6-NO -->
8<div class="tabs">
9  <ul>
10    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11    <li><a href="modules.html"><span>Modules</span></a></li>
12    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
13    <li><a href="classes.html"><span>Classes</span></a></li>
14    <li id="current"><a href="files.html"><span>Files</span></a></li>
15    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
16  </ul></div>
17<div class="tabs">
18  <ul>
19    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
20    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
21  </ul></div>
22<h1>FCDocument/FCDGeometryPolygons.h</h1><a href="_f_c_d_geometry_polygons_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
23<a name="l00002"></a>00002 <span class="comment">    Copyright (C) 2005-2006 Feeling Software Inc.</span>
24<a name="l00003"></a>00003 <span class="comment">    MIT License: http://www.opensource.org/licenses/mit-license.php</span>
25<a name="l00004"></a>00004 <span class="comment">*/</span>
26<a name="l00005"></a>00005 <span class="comment">/*</span>
27<a name="l00006"></a>00006 <span class="comment">    Based on the FS Import classes:</span>
28<a name="l00007"></a>00007 <span class="comment">    Copyright (C) 2005-2006 Feeling Software Inc</span>
29<a name="l00008"></a>00008 <span class="comment">    Copyright (C) 2005-2006 Autodesk Media Entertainment</span>
30<a name="l00009"></a>00009 <span class="comment">    MIT License: http://www.opensource.org/licenses/mit-license.php</span>
31<a name="l00010"></a>00010 <span class="comment">*/</span>
32<a name="l00011"></a>00011
33<a name="l00017"></a>00017 <span class="preprocessor">#ifndef _FCD_GEOMETRY_POLYGONS_H_</span>
34<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define _FCD_GEOMETRY_POLYGONS_H_</span>
35<a name="l00019"></a>00019 <span class="preprocessor"></span>
36<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="_f_c_d_object_8h.html">FCDocument/FCDObject.h</a>"</span>
37<a name="l00021"></a>00021 <span class="preprocessor">#include "FUtils/FUDaeEnum.h"</span>
38<a name="l00022"></a>00022
39<a name="l00023"></a>00023 <span class="keyword">class </span><a class="code" href="class_f_c_document.html">FCDocument</a>;
40<a name="l00024"></a>00024 <span class="keyword">class </span>FRMeshPolygons;
41<a name="l00025"></a>00025 <span class="keyword">class </span><a class="code" href="class_f_c_d_material.html">FCDMaterial</a>;
42<a name="l00026"></a>00026 <span class="keyword">class </span><a class="code" href="class_f_c_d_geometry_mesh.html">FCDGeometryMesh</a>;
43<a name="l00027"></a>00027 <span class="keyword">class </span><a class="code" href="class_f_c_d_geometry_source.html">FCDGeometrySource</a>;
44<a name="l00028"></a>00028
45<a name="l00044"></a><a class="code" href="class_f_c_d_geometry_polygons_input.html">00044</a> <span class="keyword">class </span><a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>
46<a name="l00045"></a>00045 {
47<a name="l00046"></a>00046 <span class="keyword">public</span>:
48<a name="l00048"></a>00048     <a class="code" href="class_f_c_d_geometry_polygons_input.html#ad5758b226c485cdad8484fe03eca826">FCDGeometryPolygonsInput</a>();
49<a name="l00049"></a>00049
50<a name="l00051"></a><a class="code" href="class_f_c_d_geometry_polygons_input.html#e07f60584759031f5ae3963debddbe0c">00051</a>     FUDaeGeometryInput::Semantic <a class="code" href="class_f_c_d_geometry_polygons_input.html#e07f60584759031f5ae3963debddbe0c">semantic</a>;
51<a name="l00052"></a>00052
52<a name="l00055"></a><a class="code" href="class_f_c_d_geometry_polygons_input.html#18b8efc95ad9a58642eb6a5fe2cafb55">00055</a>     uint32 <a class="code" href="class_f_c_d_geometry_polygons_input.html#18b8efc95ad9a58642eb6a5fe2cafb55">idx</a>;
53<a name="l00056"></a>00056
54<a name="l00060"></a><a class="code" href="class_f_c_d_geometry_polygons_input.html#2f6d74900a429c826474fa630a2e5df6">00060</a>     <span class="keywordtype">bool</span> <a class="code" href="class_f_c_d_geometry_polygons_input.html#2f6d74900a429c826474fa630a2e5df6">ownsIdx</a>;
55<a name="l00061"></a>00061
56<a name="l00064"></a><a class="code" href="class_f_c_d_geometry_polygons_input.html#4f81698542644aeec203d42dccda96a5">00064</a>     <a class="code" href="classvector.html">UInt32List</a> <a class="code" href="class_f_c_d_geometry_polygons_input.html#4f81698542644aeec203d42dccda96a5">indices</a>;
57<a name="l00065"></a>00065
58<a name="l00068"></a><a class="code" href="class_f_c_d_geometry_polygons_input.html#0e280ef58b14ed145c881cb7b2952082">00068</a>     <a class="code" href="class_f_c_d_geometry_source.html">FCDGeometrySource</a>* <a class="code" href="class_f_c_d_geometry_polygons_input.html#0e280ef58b14ed145c881cb7b2952082">source</a>;
59<a name="l00069"></a>00069
60<a name="l00073"></a><a class="code" href="class_f_c_d_geometry_polygons_input.html#2d84d8888405c0f8f33aa1ca727c5e89">00073</a>     int32 <a class="code" href="class_f_c_d_geometry_polygons_input.html#2d84d8888405c0f8f33aa1ca727c5e89">set</a>;
61<a name="l00074"></a>00074 };
62<a name="l00075"></a>00075
63<a name="l00077"></a><a class="code" href="_f_c_d_geometry_polygons_8h.html#39b1f3e501ec9c897463459d9e3ebc43">00077</a> <span class="keyword">typedef</span> <a class="code" href="classvector.html">vector&lt;FCDGeometryPolygonsInput*&gt;</a> <a class="code" href="classvector.html">FCDGeometryPolygonsInputList</a>;
64<a name="l00078"></a>00078
65<a name="l00089"></a><a class="code" href="class_f_c_d_geometry_polygons.html">00089</a> <span class="keyword">class </span>FCOLLADA_EXPORT <a class="code" href="class_f_c_d_geometry_polygons.html">FCDGeometryPolygons</a> : <span class="keyword">public</span> <a class="code" href="class_f_c_d_object.html">FCDObject</a>
66<a name="l00090"></a>00090 {
67<a name="l00091"></a>00091 <span class="keyword">private</span>:
68<a name="l00092"></a>00092     <a class="code" href="_f_u_object_type_8h.html#8124b8a8706cd10260f8cd5a7bd8e691">DeclareObjectType</a>;
69<a name="l00093"></a>00093 <a class="code" href="classvector.html">FCDGeometryPolygonsInputList</a> inputs;
70<a name="l00094"></a>00094 <a class="code" href="classvector.html">FCDGeometryPolygonsInputList</a> idxOwners;
71<a name="l00095"></a>00095 <a class="code" href="classvector.html">UInt32List</a> faceVertexCounts;
72<a name="l00096"></a>00096     <a class="code" href="class_f_c_d_geometry_mesh.html">FCDGeometryMesh</a>* parent;
73<a name="l00097"></a>00097     size_t faceVertexCount;
74<a name="l00098"></a>00098 <a class="code" href="classvector.html">UInt32List</a> holeFaces;
75<a name="l00099"></a>00099
76<a name="l00100"></a>00100     <span class="comment">// Buffered statistics</span>
77<a name="l00101"></a>00101     size_t faceOffset;
78<a name="l00102"></a>00102     size_t faceVertexOffset;
79<a name="l00103"></a>00103     size_t holeOffset;
80<a name="l00104"></a>00104
81<a name="l00105"></a>00105     <span class="comment">// Material for this set of polygons</span>
82<a name="l00106"></a>00106     fstring materialSemantic;
83<a name="l00107"></a>00107
84<a name="l00108"></a>00108 <span class="keyword">public</span>:
85<a name="l00113"></a>00113     <a class="code" href="class_f_c_d_geometry_polygons.html">FCDGeometryPolygons</a>(<a class="code" href="class_f_c_document.html">FCDocument</a>* document, <a class="code" href="class_f_c_d_geometry_mesh.html">FCDGeometryMesh</a>* parent);
86<a name="l00114"></a>00114
87<a name="l00117"></a>00117 <span class="keyword">virtual</span> ~<a class="code" href="class_f_c_d_geometry_polygons.html">FCDGeometryPolygons</a>();
88<a name="l00118"></a>00118
89<a name="l00121"></a><a class="code" href="class_f_c_d_geometry_polygons.html#734b90161e968c1e35e1349d60b399be">00121</a>     <span class="keyword">inline</span> <a class="code" href="class_f_c_d_geometry_mesh.html">FCDGeometryMesh</a>* GetParent() { <span class="keywordflow">return</span> parent; }
90<a name="l00122"></a><a class="code" href="class_f_c_d_geometry_polygons.html#bcd0f7f55db3017bb4b5fbc3dff037e4">00122</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="class_f_c_d_geometry_mesh.html">FCDGeometryMesh</a>* GetParent()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parent; }
91<a name="l00133"></a><a class="code" href="class_f_c_d_geometry_polygons.html#a843e54479020d271c15c5b7b6e28ac4">00133</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classvector.html">UInt32List</a>&amp; GetFaceVertexCounts()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> faceVertexCounts; }
92<a name="l00134"></a>00134
93<a name="l00137"></a><a class="code" href="class_f_c_d_geometry_polygons.html#3fae32cddb26fdda38ed0780742994f5">00137</a>     <span class="keyword">inline</span> size_t GetHoleCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> holeFaces.size(); }
94<a name="l00138"></a>00138
95<a name="l00141"></a><a class="code" href="class_f_c_d_geometry_polygons.html#8c3d81ca40de775180955f60136443be">00141</a>     <span class="keyword">inline</span> size_t GetFaceCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> faceVertexCounts.size() - GetHoleCount(); }
96<a name="l00142"></a>00142
97<a name="l00146"></a><a class="code" href="class_f_c_d_geometry_polygons.html#5030ae9c26ce1a0eb657b1e9c407d095">00146</a>     <span class="keyword">inline</span> size_t GetFaceOffset()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> faceOffset; }
98<a name="l00147"></a>00147
99<a name="l00152"></a><a class="code" href="class_f_c_d_geometry_polygons.html#d1d7724ee2ad523c046daf1578a02c41">00152</a>     <span class="keyword">inline</span> size_t GetFaceVertexCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> faceVertexCount; }
100<a name="l00153"></a>00153
101<a name="l00158"></a>00158     size_t GetFaceVertexCount(size_t index) <span class="keyword">const</span>;
102<a name="l00159"></a>00159
103<a name="l00164"></a><a class="code" href="class_f_c_d_geometry_polygons.html#3ca276bbd62799974de70225f8394ec2">00164</a>     <span class="keyword">inline</span> size_t GetFaceVertexOffset()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> faceVertexOffset; }
104<a name="l00165"></a>00165
105<a name="l00168"></a><a class="code" href="class_f_c_d_geometry_polygons.html#0e095e2198011c34314770ecc0cdfe77">00168</a>     <span class="keyword">inline</span> size_t GetHoleOffset()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> holeOffset; }
106<a name="l00169"></a>00169
107<a name="l00175"></a>00175     size_t GetFaceVertexOffset(size_t index) <span class="keyword">const</span>;
108<a name="l00176"></a>00176
109<a name="l00180"></a><a class="code" href="class_f_c_d_geometry_polygons.html#f074c0123e8361063135c9454404d006">00180</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> SetFaceOffset(size_t offset) { faceOffset = offset; }
110<a name="l00181"></a>00181
111<a name="l00185"></a><a class="code" href="class_f_c_d_geometry_polygons.html#591b64e48b4fc166e14eb4489bc1814c">00185</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> SetFaceVertexOffset(size_t offset) { faceVertexOffset = offset; }
112<a name="l00186"></a>00186
113<a name="l00190"></a><a class="code" href="class_f_c_d_geometry_polygons.html#de33e2cbf8a9eddd93803dc142077821">00190</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> SetHoleOffset(size_t offset) { holeOffset = offset; }
114<a name="l00191"></a>00191
115<a name="l00197"></a>00197 <span class="keywordtype">void</span> AddFace(uint32 degree);
116<a name="l00198"></a>00198
117<a name="l00202"></a>00202 <span class="keywordtype">void</span> RemoveFace(size_t index);
118<a name="l00203"></a>00203
119<a name="l00207"></a><a class="code" href="class_f_c_d_geometry_polygons.html#466da9e6c092ff6b04e6418792dc9921">00207</a>     <span class="keyword">inline</span> <a class="code" href="classvector.html">FCDGeometryPolygonsInputList</a>&amp; GetInputs() { <span class="keywordflow">return</span> inputs; }
120<a name="l00208"></a><a class="code" href="class_f_c_d_geometry_polygons.html#8746b57fa7ec9205a9e9399cf3a38643">00208</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classvector.html">FCDGeometryPolygonsInputList</a>&amp; GetInputs()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> inputs; }
121<a name="l00212"></a><a class="code" href="class_f_c_d_geometry_polygons.html#c74a72265b15e81bb947bf41228e722b">00212</a>     <span class="keyword">inline</span> size_t GetInputCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> inputs.size(); }
122<a name="l00213"></a>00213
123<a name="l00218"></a><a class="code" href="class_f_c_d_geometry_polygons.html#e94dd6808541c432efe36603a29829a1">00218</a>     <span class="keyword">inline</span> <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* GetInput(size_t index) { <a class="code" href="_f_u_assert_8h.html#72b8444eb608787f1db6bf1d53e0310f">FUAssert</a>(index &lt; GetInputCount(), <span class="keywordflow">return</span> NULL); <span class="keywordflow">return</span> inputs.at(index); }
124<a name="l00219"></a><a class="code" href="class_f_c_d_geometry_polygons.html#a9454a8d2242abcd8e24006fe9f2a5fe">00219</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* GetInput(size_t index)<span class="keyword"> const </span>{ <a class="code" href="_f_u_assert_8h.html#72b8444eb608787f1db6bf1d53e0310f">FUAssert</a>(index &lt; GetInputCount(), <span class="keywordflow">return</span> NULL); <span class="keywordflow">return</span> inputs.at(index); }
125<a name="l00228"></a>00228     <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* <a class="code" href="namespace_f_u_dae_writer.html#62c95317985e2e1c8c096c469ac28de7">AddInput</a>(<a class="code" href="class_f_c_d_geometry_source.html">FCDGeometrySource</a>* source, uint32 offset);
126<a name="l00229"></a>00229
127<a name="l00234"></a>00234 <span class="keywordtype">void</span> ReleaseInput(<a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* input);
128<a name="l00235"></a>00235
129<a name="l00241"></a><a class="code" href="class_f_c_d_geometry_polygons.html#e15537a5535b82085550ef471d633aec">00241</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classvector.html">UInt32List</a>&amp; GetHoleFaces()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> holeFaces; }
130<a name="l00242"></a>00242
131<a name="l00250"></a>00250     size_t GetHoleCountBefore(size_t index) <span class="keyword">const</span>;
132<a name="l00251"></a>00251
133<a name="l00255"></a>00255     size_t GetHoleCount(size_t index) <span class="keyword">const</span>;
134<a name="l00256"></a>00256
135<a name="l00261"></a>00261     <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* FindInput(FUDaeGeometryInput::Semantic semantic);
136<a name="l00262"></a>00262 <span class="keyword">const</span> <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* FindInput(FUDaeGeometryInput::Semantic semantic) <span class="keyword">const</span>;
137<a name="l00268"></a>00268     <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* FindInput(<a class="code" href="class_f_c_d_geometry_source.html">FCDGeometrySource</a>* source);
138<a name="l00269"></a>00269 <span class="keyword">const</span> <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* FindInput(<span class="keyword">const</span> <a class="code" href="class_f_c_d_geometry_source.html">FCDGeometrySource</a>* source) <span class="keyword">const</span>;
139<a name="l00275"></a>00275 <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* FindInput(<span class="keyword">const</span> string&amp; sourceId);
140<a name="l00276"></a>00276
141<a name="l00281"></a>00281 <span class="keywordtype">void</span> FindInputs(FUDaeGeometryInput::Semantic semantic, <a class="code" href="classvector.html">FCDGeometryPolygonsInputList</a>&amp; inputs);
142<a name="l00282"></a>00282
143<a name="l00288"></a>00288     <a class="code" href="classvector.html">UInt32List</a>* FindIndicesForIdx(uint32 idx);
144<a name="l00289"></a>00289 <span class="keyword">const</span> <a class="code" href="classvector.html">UInt32List</a>* FindIndicesForIdx(uint32 idx) <span class="keyword">const</span>;
145<a name="l00295"></a>00295     <a class="code" href="classvector.html">UInt32List</a>* FindIndices(<a class="code" href="class_f_c_d_geometry_source.html">FCDGeometrySource</a>* source);
146<a name="l00296"></a>00296 <span class="keyword">const</span> <a class="code" href="classvector.html">UInt32List</a>* FindIndices(<span class="keyword">const</span> <a class="code" href="class_f_c_d_geometry_source.html">FCDGeometrySource</a>* source) <span class="keyword">const</span>;
147<a name="l00302"></a>00302     <a class="code" href="classvector.html">UInt32List</a>* FindIndices(<a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* input);
148<a name="l00303"></a>00303 <span class="keyword">const</span> <a class="code" href="classvector.html">UInt32List</a>* FindIndices(<span class="keyword">const</span> <a class="code" href="class_f_c_d_geometry_polygons_input.html">FCDGeometryPolygonsInput</a>* input) <span class="keyword">const</span>;
149<a name="l00309"></a><a class="code" href="class_f_c_d_geometry_polygons.html#12d1469fd0d4cc0a0275c6290ed50afa">00309</a>     <span class="keyword">inline</span> <span class="keyword">const</span> fstring&amp; GetMaterialSemantic()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> materialSemantic; }
150<a name="l00310"></a>00310
151<a name="l00315"></a><a class="code" href="class_f_c_d_geometry_polygons.html#72dfb0d4aa1cbbb5c488483b53eee1d2">00315</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> SetMaterialSemantic(<span class="keyword">const</span> fchar* semantic) { materialSemantic = semantic; }
152<a name="l00316"></a><a class="code" href="class_f_c_d_geometry_polygons.html#a311b07a2317dd9414f06a262cfab631">00316</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> SetMaterialSemantic(<span class="keyword">const</span> fstring&amp; semantic) { materialSemantic = semantic; }
153<a name="l00320"></a>00320 <span class="keywordtype">void</span> Triangulate();
154<a name="l00321"></a>00321
155<a name="l00323"></a>00323 <span class="keywordtype">void</span> Recalculate();
156<a name="l00324"></a>00324
157<a name="l00330"></a>00330 <a class="code" href="class_f_u_status.html">FUStatus</a> LoadFromXML(xmlNode* polygonNode);
158<a name="l00331"></a>00331
159<a name="l00336"></a>00336     xmlNode* WriteToXML(xmlNode* parentNode) <span class="keyword">const</span>;
160<a name="l00337"></a>00337
161<a name="l00343"></a>00343     <a class="code" href="class_f_c_d_geometry_polygons.html">FCDGeometryPolygons</a>* Clone(<a class="code" href="class_f_c_d_geometry_mesh.html">FCDGeometryMesh</a>* cloneParent);
162<a name="l00344"></a>00344
163<a name="l00345"></a>00345 <span class="keyword">private</span>:
164<a name="l00346"></a>00346     <span class="comment">// Performs operations needed before tessellation</span>
165<a name="l00347"></a>00347 <span class="keywordtype">bool</span> InitTessellation(xmlNode* itNode,
166<a name="l00348"></a>00348         uint32* localFaceVertexCount, <a class="code" href="classvector.html">UInt32List</a>&amp; allIndices,
167<a name="l00349"></a>00349 <span class="keyword">const</span> <span class="keywordtype">char</span>* content, xmlNode*&amp; holeNode, uint32 idxCount,
168<a name="l00350"></a>00350         <span class="keywordtype">bool</span>* failed);
169<a name="l00351"></a>00351 };
170<a name="l00352"></a>00352
171<a name="l00353"></a>00353 <span class="preprocessor">#endif // _FCD_GEOMETRY_POLYGONS_H_</span>
172</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri May 12 16:44:38 2006 for FCollada by&nbsp;
173<a href="http://www.doxygen.org/index.html">
174<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6-NO </small></address>
175</body>
176</html>
Note: See TracBrowser for help on using the repository browser.