source: OGRE/trunk/ogrenew/Docs/api/html/OgreBitwise_8h-source.html @ 692

Revision 692, 24.4 KB checked in by mattausch, 19 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1<html>
2<head>
3<title>OgreBitwise.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
4<link type="text/css" rel="stylesheet" href="style.css">
5</head>
6
7<body>
8<!-- Generated by Doxygen 1.3.6 -->
9<div class="qindex"><a class="qindex" href="index.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">Class&nbsp;List</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">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
10<h1>OgreBitwise.h</h1><a href="OgreBitwise_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
1100002 <span class="comment">-----------------------------------------------------------------------------</span>
1200003 <span class="comment">This source file is part of OGRE</span>
1300004 <span class="comment">    (Object-oriented Graphics Rendering Engine)</span>
1400005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span>
1500006 <span class="comment"></span>
1600007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span>
1700008 <span class="comment">Also see acknowledgements in Readme.html</span>
1800009 <span class="comment"></span>
1900010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span>
2000011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span>
2100012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span>
2200013 <span class="comment">version.</span>
2300014 <span class="comment"></span>
2400015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span>
2500016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
2600017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span>
2700018 <span class="comment"></span>
2800019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span>
2900020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span>
3000021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span>
3100022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span>
3200023 <span class="comment">-----------------------------------------------------------------------------</span>
3300024 <span class="comment">*/</span>
3400025 <span class="preprocessor">#ifndef _Bitwise_H__</span>
3500026 <span class="preprocessor"></span><span class="preprocessor">#define _Bitwise_H__</span>
3600027 <span class="preprocessor"></span>
3700028 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
3800029
3900030 <span class="keyword">namespace </span>Ogre {
4000031
41<a name="l00034"></a><a class="code" href="classOgre_1_1Bitwise.html">00034</a>     <span class="keyword">class </span><a class="code" href="classOgre_1_1Bitwise.html">Bitwise</a> {
4200035     <span class="keyword">public</span>:
43<a name="l00038"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee0">00038</a>         <span class="keyword">static</span> <a class="code" href="OgrePlatform_8h.html#a10">FORCEINLINE</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee0">mostSignificantBitSet</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value)
4400039         {
4500040             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result = 0;
4600041             <span class="keywordflow">while</span> (value != 0) {
4700042                 ++result;
4800043                 value &gt;&gt;= 1;
4900044             }
5000045             <span class="keywordflow">return</span> result-1;
5100046         }
52<a name="l00051"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee1">00051</a>         <span class="keyword">static</span> <a class="code" href="OgrePlatform_8h.html#a10">FORCEINLINE</a> <a class="code" href="namespaceOgre.html#a455">uint32</a> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee1">firstPO2From</a>(<a class="code" href="namespaceOgre.html#a455">uint32</a> n)
5300052         {
5400053             --n;           
5500054             n |= n &gt;&gt; 16;
5600055             n |= n &gt;&gt; 8;
5700056             n |= n &gt;&gt; 4;
5800057             n |= n &gt;&gt; 2;
5900058             n |= n &gt;&gt; 1;
6000059             ++n;
6100060             <span class="keywordflow">return</span> n;
6200061         }
6300065         <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;
64<a name="l00066"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee2">00066</a>         <span class="keyword">static</span> <a class="code" href="OgrePlatform_8h.html#a10">FORCEINLINE</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee2">getBitShift</a>(T mask)
6500067         {
6600068             <span class="keywordflow">if</span> (mask == 0)
6700069                 <span class="keywordflow">return</span> 0;
6800070
6900071             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result = 0;
7000072             <span class="keywordflow">while</span> ((mask &amp; 1) == 0) {
7100073                 ++result;
7200074                 mask &gt;&gt;= 1;
7300075             }
7400076             <span class="keywordflow">return</span> result;
7500077         }
7600078
7700084         <span class="keyword">template</span>&lt;<span class="keyword">typename</span> SrcT, <span class="keyword">typename</span> DestT&gt;
78<a name="l00085"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee3">00085</a>         <span class="keyword">static</span> <span class="keyword">inline</span> DestT <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee3">convertBitPattern</a>(SrcT srcValue, SrcT srcBitMask, DestT destBitMask)
7900086         {
8000087             <span class="comment">// Mask off irrelevant source value bits (if any)</span>
8100088             srcValue = srcValue &amp; srcBitMask;
8200089
8300090             <span class="comment">// Shift source down to bottom of DWORD</span>
8400091             <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> srcBitShift = <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee2">getBitShift</a>(srcBitMask);
8500092             srcValue &gt;&gt;= srcBitShift;
8600093
8700094             <span class="comment">// Get max value possible in source from srcMask</span>
8800095             <span class="keyword">const</span> SrcT srcMax = srcBitMask &gt;&gt; srcBitShift;
8900096
9000097             <span class="comment">// Get max avaiable in dest</span>
9100098             <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> destBitShift = <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee2">getBitShift</a>(destBitMask);
9200099             <span class="keyword">const</span> DestT destMax = destBitMask &gt;&gt; destBitShift;
9300100
9400101             <span class="comment">// Scale source value into destination, and shift back</span>
9500102             DestT destValue = (srcValue * destMax) / srcMax;
9600103             <span class="keywordflow">return</span> (destValue &lt;&lt; destBitShift);
9700104         }
9800105
99<a name="l00110"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee4">00110</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee4">fixedToFixed</a>(<a class="code" href="namespaceOgre.html#a455">uint32</a> value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> p)
10000111         {
10100112             <span class="keywordflow">if</span>(n &gt; p)
10200113             {
10300114                 <span class="comment">// Less bits required than available; this is easy</span>
10400115                 value &gt;&gt;= n-p;
10500116             }
10600117             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n &lt; p)
10700118             {
10800119                 <span class="comment">// More bits required than are there, do the fill</span>
10900120                 <span class="comment">// Use old fashioned division, probably better than a loop</span>
11000121                 <span class="keywordflow">if</span>(value == 0)
11100122                         value = 0;
11200123                 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(value == (static_cast&lt;unsigned int&gt;(1)&lt;&lt;n)-1)
11300124                         value = (1&lt;&lt;p)-1;
11400125                 <span class="keywordflow">else</span>    value = value*(1&lt;&lt;p)/((1&lt;&lt;n)-1);
11500126             }
11600127             <span class="keywordflow">return</span> value;   
11700128         }
11800129
119<a name="l00134"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee5">00134</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee5">floatToFixed</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> value, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bits)
12000135         {
12100136             <span class="keywordflow">if</span>(value &lt;= 0.0f) <span class="keywordflow">return</span> 0;
12200137             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &gt;= 1.0f) <span class="keywordflow">return</span> (1&lt;&lt;bits)-1;
12300138             <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)(value * (1&lt;&lt;bits));     
12400139         }
12500140
126<a name="l00144"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee6">00144</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee6">fixedToFloat</a>(<span class="keywordtype">unsigned</span> value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bits)
12700145         {
12800146             <span class="keywordflow">return</span> (<span class="keywordtype">float</span>)value/(<span class="keywordtype">float</span>)((1&lt;&lt;bits)-1);
12900147         }
13000148
131<a name="l00152"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee7">00152</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee7">intWrite</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *dest, <span class="keyword">const</span> <span class="keywordtype">int</span> n, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value)
13200153         {
13300154             <span class="keywordflow">switch</span>(n) {
13400155                 <span class="keywordflow">case</span> 1:
13500156                     ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)dest)[0] = (<a class="code" href="namespaceOgre.html#a457">uint8</a>)value;
13600157                     <span class="keywordflow">break</span>;
13700158                 <span class="keywordflow">case</span> 2:
13800159                     ((<a class="code" href="namespaceOgre.html#a456">uint16</a>*)dest)[0] = (<a class="code" href="namespaceOgre.html#a456">uint16</a>)value;
13900160                     <span class="keywordflow">break</span>;
14000161                 <span class="keywordflow">case</span> 3:
14100162 <span class="preprocessor">#if OGRE_ENDIAN == OGRE_ENDIAN_BIG      </span>
14200163 <span class="preprocessor"></span>                    ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)dest)[0] = (<a class="code" href="namespaceOgre.html#a457">uint8</a>)((value &gt;&gt; 16) &amp; 0xFF);
14300164                     ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)dest)[1] = (<a class="code" href="namespaceOgre.html#a457">uint8</a>)((value &gt;&gt; 8) &amp; 0xFF);
14400165                     ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)dest)[2] = (<a class="code" href="namespaceOgre.html#a457">uint8</a>)(value &amp; 0xFF);
14500166 <span class="preprocessor">#else</span>
14600167 <span class="preprocessor"></span>                    ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)dest)[2] = (<a class="code" href="namespaceOgre.html#a457">uint8</a>)((value &gt;&gt; 16) &amp; 0xFF);
14700168                     ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)dest)[1] = (<a class="code" href="namespaceOgre.html#a457">uint8</a>)((value &gt;&gt; 8) &amp; 0xFF);
14800169                     ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)dest)[0] = (<a class="code" href="namespaceOgre.html#a457">uint8</a>)(value &amp; 0xFF);
14900170 <span class="preprocessor">#endif</span>
15000171 <span class="preprocessor"></span>                    <span class="keywordflow">break</span>;
15100172                 <span class="keywordflow">case</span> 4:
15200173                     ((<a class="code" href="namespaceOgre.html#a455">uint32</a>*)dest)[0] = (<a class="code" href="namespaceOgre.html#a455">uint32</a>)value;               
15300174                     <span class="keywordflow">break</span>;               
15400175             }       
15500176         }
156<a name="l00180"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee8">00180</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee8">intRead</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *src, <span class="keywordtype">int</span> n) {
15700181             <span class="keywordflow">switch</span>(n) {
15800182                 <span class="keywordflow">case</span> 1:
15900183                     <span class="keywordflow">return</span> ((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)src)[0];
16000184                 <span class="keywordflow">case</span> 2:
16100185                     <span class="keywordflow">return</span> ((<a class="code" href="namespaceOgre.html#a456">uint16</a>*)src)[0];
16200186                 <span class="keywordflow">case</span> 3:
16300187 <span class="preprocessor">#if OGRE_ENDIAN == OGRE_ENDIAN_BIG      </span>
16400188 <span class="preprocessor"></span>                    <span class="keywordflow">return</span> ((<a class="code" href="namespaceOgre.html#a455">uint32</a>)((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)src)[0]&lt;&lt;16)|
16500189                             ((<a class="code" href="namespaceOgre.html#a455">uint32</a>)((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)src)[1]&lt;&lt;8)|
16600190                             ((<a class="code" href="namespaceOgre.html#a455">uint32</a>)((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)src)[2]);
16700191 <span class="preprocessor">#else</span>
16800192 <span class="preprocessor"></span>                    <span class="keywordflow">return</span> ((<a class="code" href="namespaceOgre.html#a455">uint32</a>)((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)src)[0])|
16900193                             ((<a class="code" href="namespaceOgre.html#a455">uint32</a>)((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)src)[1]&lt;&lt;8)|
17000194                             ((<a class="code" href="namespaceOgre.html#a455">uint32</a>)((<a class="code" href="namespaceOgre.html#a457">uint8</a>*)src)[2]&lt;&lt;16);
17100195 <span class="preprocessor">#endif</span>
17200196 <span class="preprocessor"></span>                <span class="keywordflow">case</span> 4:
17300197                     <span class="keywordflow">return</span> ((<a class="code" href="namespaceOgre.html#a455">uint32</a>*)src)[0];
17400198             }
17500199             <span class="keywordflow">return</span> 0; <span class="comment">// ?</span>
17600200         }
17700201
178<a name="l00205"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee9">00205</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a456">uint16</a> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee9">floatToHalf</a>(<span class="keywordtype">float</span> i)
17900206         {
18000207             <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee10">floatToHalfI</a>(*reinterpret_cast&lt;uint32*&gt;(&amp;i));
18100208         }
182<a name="l00211"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee10">00211</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a456">uint16</a> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee10">floatToHalfI</a>(<a class="code" href="namespaceOgre.html#a455">uint32</a> i)
18300212         {
18400213             <span class="keyword">register</span> <span class="keywordtype">int</span> s =  (i &gt;&gt; 16) &amp; 0x00008000;
18500214             <span class="keyword">register</span> <span class="keywordtype">int</span> e = ((i &gt;&gt; 23) &amp; 0x000000ff) - (127 - 15);
18600215             <span class="keyword">register</span> <span class="keywordtype">int</span> m =   i        &amp; 0x007fffff;
18700216         
18800217             <span class="keywordflow">if</span> (e &lt;= 0)
18900218             {
19000219                 <span class="keywordflow">if</span> (e &lt; -10)
19100220                 {
19200221                     <span class="keywordflow">return</span> 0;
19300222                 }
19400223                 m = (m | 0x00800000) &gt;&gt; (1 - e);
19500224         
19600225                 <span class="keywordflow">return</span> s | (m &gt;&gt; 13);
19700226             }
19800227             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e == 0xff - (127 - 15))
19900228             {
20000229                 <span class="keywordflow">if</span> (m == 0) <span class="comment">// Inf</span>
20100230                 {
20200231                     <span class="keywordflow">return</span> s | 0x7c00;
20300232                 }
20400233                 <span class="keywordflow">else</span>    <span class="comment">// NAN</span>
20500234                 {
20600235                     m &gt;&gt;= 13;
20700236                     <span class="keywordflow">return</span> s | 0x7c00 | m | (m == 0);
20800237                 }
20900238             }
21000239             <span class="keywordflow">else</span>
21100240             {
21200241                 <span class="keywordflow">if</span> (e &gt; 30) <span class="comment">// Overflow</span>
21300242                 {
21400243                     <span class="keywordflow">return</span> s | 0x7c00;
21500244                 }
21600245         
21700246                 <span class="keywordflow">return</span> s | (e &lt;&lt; 10) | (m &gt;&gt; 13);
21800247             }
21900248         }
22000249         
221<a name="l00254"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee11">00254</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee11">halfToFloat</a>(<a class="code" href="namespaceOgre.html#a456">uint16</a> y)
22200255         {
22300256             <a class="code" href="namespaceOgre.html#a455">uint32</a> r = <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee12">halfToFloatI</a>(y);
22400257             <span class="keywordflow">return</span> *reinterpret_cast&lt;float*&gt;(&amp;r);
22500258         }
226<a name="l00262"></a><a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee12">00262</a>         <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a455">uint32</a> <a class="code" href="classOgre_1_1Bitwise.html#Ogre_1_1Bitwisee12">halfToFloatI</a>(<a class="code" href="namespaceOgre.html#a456">uint16</a> y)
22700263         {
22800264             <span class="keyword">register</span> <span class="keywordtype">int</span> s = (y &gt;&gt; 15) &amp; 0x00000001;
22900265             <span class="keyword">register</span> <span class="keywordtype">int</span> e = (y &gt;&gt; 10) &amp; 0x0000001f;
23000266             <span class="keyword">register</span> <span class="keywordtype">int</span> m =  y        &amp; 0x000003ff;
23100267         
23200268             <span class="keywordflow">if</span> (e == 0)
23300269             {
23400270                 <span class="keywordflow">if</span> (m == 0) <span class="comment">// Plus or minus zero</span>
23500271                 {
23600272                     <span class="keywordflow">return</span> s &lt;&lt; 31;
23700273                 }
23800274                 <span class="keywordflow">else</span> <span class="comment">// Denormalized number -- renormalize it</span>
23900275                 {
24000276                     <span class="keywordflow">while</span> (!(m &amp; 0x00000400))
24100277                     {
24200278                         m &lt;&lt;= 1;
24300279                         e -=  1;
24400280                     }
24500281         
24600282                     e += 1;
24700283                     m &amp;= ~0x00000400;
24800284                 }
24900285             }
25000286             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e == 31)
25100287             {
25200288                 <span class="keywordflow">if</span> (m == 0) <span class="comment">// Inf</span>
25300289                 {
25400290                     <span class="keywordflow">return</span> (s &lt;&lt; 31) | 0x7f800000;
25500291                 }
25600292                 <span class="keywordflow">else</span> <span class="comment">// NaN</span>
25700293                 {
25800294                     <span class="keywordflow">return</span> (s &lt;&lt; 31) | 0x7f800000 | (m &lt;&lt; 13);
25900295                 }
26000296             }
26100297         
26200298             e = e + (127 - 15);
26300299             m = m &lt;&lt; 13;
26400300         
26500301             <span class="keywordflow">return</span> (s &lt;&lt; 31) | (e &lt;&lt; 23) | m;
26600302         }
26700303         
26800304
26900305     };
27000306 }
27100307
27200308 <span class="preprocessor">#endif</span>
273</pre></div><hr>
274<p>
275Copyright &copy; 2000-2005 by The OGRE Team<br />
276<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/>
277This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License</a>.<br/>
278                <!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
279                <Work rdf:about="">
280                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
281        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
282                </Work>
283                <License rdf:about="http://creativecommons.org/licenses/by-sa/2.5/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/><requires rdf:resource="http://web.resource.org/cc/ShareAlike"/></License></rdf:RDF> -->
284
285Last modified Sun Mar 12 14:37:37 2006
286</p>
287</body>
288</html>
Note: See TracBrowser for help on using the repository browser.