source: OGRE/trunk/ogrenew/Docs/api/html/OgrePixelConversions_8h-source.html @ 657

Revision 657, 35.7 KB checked in by mattausch, 18 years ago (diff)

added ogre dependencies and patched ogre sources

Line 
1<html>
2<head>
3<title>OgrePixelConversions.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>OgrePixelConversions.h</h1><a href="OgrePixelConversions_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>
3400026 <span class="keyword">using</span> <span class="keyword">namespace </span>Ogre;
3500027
3600028 <span class="comment">// NB VC6 can't handle these templates</span>
3700029 <span class="preprocessor">#if OGRE_COMPILER != OGRE_COMPILER_MSVC || OGRE_COMP_VER &gt;= 1300</span>
3800030 <span class="preprocessor"></span>
3900031 <span class="preprocessor">#define FMTCONVERTERID(from,to) (((from)&lt;&lt;8)|(to))</span>
4000032 <span class="preprocessor"></span>
4100043 <span class="keyword">template</span> &lt;<span class="keyword">class</span> U&gt; <span class="keyword">struct </span>PixelBoxConverter
4200044 {
4300045     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ID = U::ID;
4400046     <span class="keyword">static</span> <span class="keywordtype">void</span> conversion(<span class="keyword">const</span> <a class="code" href="classOgre_1_1PixelBox.html">PixelBox</a> &amp;src, <span class="keyword">const</span> <a class="code" href="classOgre_1_1PixelBox.html">PixelBox</a> &amp;dst)
4500047     {
4600048         <span class="keyword">typename</span> U::SrcType *srcptr = static_cast&lt;typename U::SrcType*&gt;(src.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxo0">data</a>);
4700049         <span class="keyword">typename</span> U::DstType *dstptr = static_cast&lt;typename U::DstType*&gt;(dst.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxo0">data</a>);
4800050         <span class="keyword">const</span> size_t srcSliceSkip = src.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxa5">getSliceSkip</a>();
4900051         <span class="keyword">const</span> size_t dstSliceSkip = dst.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxa5">getSliceSkip</a>();
5000052         <span class="keyword">const</span> size_t k = src.<a class="code" href="structOgre_1_1Box.html#Ogre_1_1PixelBoxo6">right</a> - src.<a class="code" href="structOgre_1_1Box.html#Ogre_1_1PixelBoxo4">left</a>;
5100053         <span class="keywordflow">for</span>(size_t z=src.<a class="code" href="structOgre_1_1Box.html#Ogre_1_1PixelBoxo8">front</a>; z&lt;src.<a class="code" href="structOgre_1_1Box.html#Ogre_1_1PixelBoxo9">back</a>; z++)
5200054         {
5300055             <span class="keywordflow">for</span>(size_t y=src.<a class="code" href="structOgre_1_1Box.html#Ogre_1_1PixelBoxo5">top</a>; y&lt;src.<a class="code" href="structOgre_1_1Box.html#Ogre_1_1PixelBoxo7">bottom</a>; y++)
5400056             {
5500057                 <span class="keywordflow">for</span>(size_t x=0; x&lt;k; x++)
5600058                 {
5700059                     dstptr[x] = U::pixelConvert(srcptr[x]);
5800060                 }
5900061                 srcptr += src.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxo2">rowPitch</a>;
6000062                 dstptr += dst.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxo2">rowPitch</a>;
6100063             }
6200064             srcptr += srcSliceSkip;
6300065             dstptr += dstSliceSkip;
6400066         }   
6500067     }
6600068 };
6700069
6800070 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, <span class="keywordtype">int</span> <span class="keywordtype">id</span>&gt; <span class="keyword">struct </span>PixelConverter {
6900071     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ID = <span class="keywordtype">id</span>;
7000072     <span class="keyword">typedef</span> T SrcType;
7100073     <span class="keyword">typedef</span> U DstType;   
7200074     
7300075     <span class="comment">//inline static DstType pixelConvert(const SrcType &amp;inp);</span>
7400076 };
7500077
7600078
7700080 <span class="keyword">struct </span>Col3b {
7800081     <a class="code" href="classCol3b.html">Col3b</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> a, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c):
7900082         x((<a class="code" href="namespaceOgre.html#a414">uint8</a>)a), y((<a class="code" href="namespaceOgre.html#a414">uint8</a>)b), z((<a class="code" href="namespaceOgre.html#a414">uint8</a>)c) { }
8000083     <a class="code" href="namespaceOgre.html#a414">uint8</a> x,y,z;
8100084 };
8200086 <span class="keyword">struct </span>Col3f {
8300087     <a class="code" href="classCol3f.html">Col3f</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b):
8400088         r(r), g(g), b(b) { }
8500089     <span class="keywordtype">float</span> r,g,b;
8600090 };
8700092 <span class="keyword">struct </span>Col4f {
8800093     <a class="code" href="classCol4f.html">Col4f</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a):
8900094         r(r), g(g), b(b), a(a) { }
9000095     <span class="keywordtype">float</span> r,g,b,a;
9100096 };
9200097
9300098 <span class="keyword">struct </span>A8R8G8B8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_A8R8G8B8, PF_A8B8G8R8)&gt;
9400099 {
9500100     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
9600101     {
9700102         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;16)|(inp&amp;0xFF00FF00)|((inp&amp;0x00FF0000)&gt;&gt;16);
9800103     }
9900104 };
10000105
10100106 <span class="keyword">struct </span>A8R8G8B8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_A8R8G8B8, PF_B8G8R8A8)&gt;
10200107 {
10300108     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
10400109     {
10500110         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;24)|((inp&amp;0x0000FF00)&lt;&lt;8)|((inp&amp;0x00FF0000)&gt;&gt;8)|((inp&amp;0xFF000000)&gt;&gt;24);
10600111     }
10700112 };
10800113
10900114 <span class="keyword">struct </span>A8R8G8B8toR8G8B8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_A8R8G8B8, PF_R8G8B8A8)&gt;
11000115 {
11100116     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
11200117     {
11300118         <span class="keywordflow">return</span> ((inp&amp;0x00FFFFFF)&lt;&lt;8)|((inp&amp;0xFF000000)&gt;&gt;24);
11400119     }
11500120 };
11600121
11700122 <span class="keyword">struct </span>A8B8G8R8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_A8B8G8R8, PF_A8R8G8B8)&gt;
11800123 {
11900124     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
12000125     {
12100126         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;16)|(inp&amp;0xFF00FF00)|((inp&amp;0x00FF0000)&gt;&gt;16);
12200127     }
12300128 };
12400129
12500130 <span class="keyword">struct </span>A8B8G8R8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_A8B8G8R8, PF_B8G8R8A8)&gt;
12600131 {
12700132     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
12800133     {
12900134         <span class="keywordflow">return</span> ((inp&amp;0x00FFFFFF)&lt;&lt;8)|((inp&amp;0xFF000000)&gt;&gt;24);
13000135     }
13100136 };
13200137
13300138 <span class="keyword">struct </span>A8B8G8R8toR8G8B8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_A8B8G8R8, PF_R8G8B8A8)&gt;
13400139 {
13500140     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
13600141     {
13700142         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;24)|((inp&amp;0x0000FF00)&lt;&lt;8)|((inp&amp;0x00FF0000)&gt;&gt;8)|((inp&amp;0xFF000000)&gt;&gt;24);
13800143     }
13900144 };
14000145
14100146 <span class="keyword">struct </span>B8G8R8A8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_B8G8R8A8, PF_A8R8G8B8)&gt;
14200147 {
14300148     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
14400149     {
14500150         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;24)|((inp&amp;0x0000FF00)&lt;&lt;8)|((inp&amp;0x00FF0000)&gt;&gt;8)|((inp&amp;0xFF000000)&gt;&gt;24);
14600151     }
14700152 };
14800153
14900154 <span class="keyword">struct </span>B8G8R8A8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_B8G8R8A8, PF_A8B8G8R8)&gt;
15000155 {
15100156     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
15200157     {
15300158         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;24)|((inp&amp;0xFFFFFF00)&gt;&gt;8);
15400159     }
15500160 };
15600161
15700162 <span class="keyword">struct </span>B8G8R8A8toR8G8B8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_B8G8R8A8, PF_R8G8B8A8)&gt;
15800163 {
15900164     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
16000165     {
16100166         <span class="keywordflow">return</span> ((inp&amp;0x0000FF00)&lt;&lt;16)|(inp&amp;0x00FF00FF)|((inp&amp;0xFF000000)&gt;&gt;16);
16200167     }
16300168 };
16400169
16500170 <span class="keyword">struct </span>R8G8B8A8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_R8G8B8A8, PF_A8R8G8B8)&gt;
16600171 {
16700172     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
16800173     {
16900174         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;24)|((inp&amp;0xFFFFFF00)&gt;&gt;8);
17000175     }
17100176 };
17200177
17300178 <span class="keyword">struct </span>R8G8B8A8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_R8G8B8A8, PF_A8B8G8R8)&gt;
17400179 {
17500180     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
17600181     {
17700182         <span class="keywordflow">return</span> ((inp&amp;0x000000FF)&lt;&lt;24)|((inp&amp;0x0000FF00)&lt;&lt;8)|((inp&amp;0x00FF0000)&gt;&gt;8)|((inp&amp;0xFF000000)&gt;&gt;24);
17800183     }
17900184 };
18000185
18100186 <span class="keyword">struct </span>R8G8B8A8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_R8G8B8A8, PF_B8G8R8A8)&gt;
18200187 {
18300188     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
18400189     {
18500190         <span class="keywordflow">return</span> ((inp&amp;0x0000FF00)&lt;&lt;16)|(inp&amp;0x00FF00FF)|((inp&amp;0xFF000000)&gt;&gt;16);
18600191     }
18700192 };
18800193
18900194 <span class="keyword">struct </span>A8B8G8R8toL8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint8, FMTCONVERTERID(PF_A8B8G8R8, PF_L8)&gt;
19000195 {
19100196     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
19200197     {
19300198         <span class="keywordflow">return</span> (<a class="code" href="namespaceOgre.html#a414">uint8</a>)(inp&amp;0x000000FF);
19400199     }
19500200 };
19600201
19700202 <span class="keyword">struct </span>L8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint8, uint32, FMTCONVERTERID(PF_L8, PF_A8B8G8R8)&gt;
19800203 {
19900204     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
20000205     {
20100206         <span class="keywordflow">return</span> 0xFF000000|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;0)|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;8)|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;16);
20200207     }
20300208 };
20400209
20500210 <span class="keyword">struct </span>A8R8G8B8toL8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint8, FMTCONVERTERID(PF_A8R8G8B8, PF_L8)&gt;
20600211 {
20700212     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
20800213     {
20900214         <span class="keywordflow">return</span> (<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&amp;0x00FF0000)&gt;&gt;16);
21000215     }
21100216 };
21200217
21300218 <span class="keyword">struct </span>L8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint8, uint32, FMTCONVERTERID(PF_L8, PF_A8R8G8B8)&gt;
21400219 {
21500220     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
21600221     {
21700222         <span class="keywordflow">return</span> 0xFF000000|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;0)|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;8)|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;16);
21800223     }
21900224 };
22000225
22100226 <span class="keyword">struct </span>B8G8R8A8toL8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint8, FMTCONVERTERID(PF_B8G8R8A8, PF_L8)&gt;
22200227 {
22300228     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
22400229     {
22500230         <span class="keywordflow">return</span> (<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&amp;0x0000FF00)&gt;&gt;8);
22600231     }
22700232 };
22800233
22900234 <span class="keyword">struct </span>L8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint8, uint32, FMTCONVERTERID(PF_L8, PF_B8G8R8A8)&gt;
23000235 {
23100236     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
23200237     {
23300238         <span class="keywordflow">return</span> 0x000000FF|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;8)|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;16)|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;24);
23400239     }
23500240 };
23600241
23700242 <span class="keyword">struct </span>L8toL16: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint8, uint16, FMTCONVERTERID(PF_L8, PF_L16)&gt;
23800243 {
23900244     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
24000245     {
24100246         <span class="keywordflow">return</span> (<a class="code" href="namespaceOgre.html#a413">uint16</a>)((((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)&lt;&lt;8)|(((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp)));
24200247     }
24300248 };
24400249
24500250 <span class="keyword">struct </span>L16toL8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint16, uint8, FMTCONVERTERID(PF_L16, PF_L8)&gt;
24600251 {
24700252     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
24800253     {
24900254         <span class="keywordflow">return</span> (<a class="code" href="namespaceOgre.html#a414">uint8</a>)(inp&gt;&gt;8);
25000255     }
25100256 };
25200257
25300258 <span class="keyword">struct </span>R8G8B8toB8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;Col3b, Col3b, FMTCONVERTERID(PF_R8G8B8, PF_B8G8R8)&gt;
25400259 {
25500260     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(<span class="keyword">const</span> SrcType &amp;inp)
25600261     {
25700262         <span class="keywordflow">return</span> <a class="code" href="classCol3b.html">Col3b</a>(inp.z, inp.y, inp.x);
25800263     } 
25900264 };
26000265
26100266 <span class="keyword">struct </span>B8G8R8toR8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;Col3b, Col3b, FMTCONVERTERID(PF_B8G8R8, PF_R8G8B8)&gt;
26200267 {
26300268     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(<span class="keyword">const</span> SrcType &amp;inp)
26400269     {
26500270         <span class="keywordflow">return</span> <a class="code" href="classCol3b.html">Col3b</a>(inp.z, inp.y, inp.x);
26600271     } 
26700272 };
26800273
26900274 <span class="comment">// X8Y8Z8 -&gt;  X8&lt;&lt;xshift Y8&lt;&lt;yshift Z8&lt;&lt;zshift A8&lt;&lt;ashift</span>
27000275 <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> <span class="keywordtype">id</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xshift, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yshift, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> zshift, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ashift&gt; <span class="keyword">struct </span>Col3btoUint32swizzler:
27100276     <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;Col3b, uint32, id&gt;
27200277 {
27300278     <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="namespaceOgre.html#a412">uint32</a> pixelConvert(<span class="keyword">const</span> <a class="code" href="classCol3b.html">Col3b</a> &amp;inp)
27400279     {
27500280 <span class="preprocessor">#if OGRE_ENDIAN == OGRE_ENDIAN_BIG</span>
27600281 <span class="preprocessor"></span>        <span class="keywordflow">return</span> (0xFF&lt;&lt;ashift) | (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp.x)&lt;&lt;xshift) | (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp.y)&lt;&lt;yshift) | (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp.z)&lt;&lt;zshift);
27700282 <span class="preprocessor">#else</span>
27800283 <span class="preprocessor"></span>        <span class="keywordflow">return</span> (0xFF&lt;&lt;ashift) | (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp.x)&lt;&lt;zshift) | (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp.y)&lt;&lt;yshift) | (((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)inp.z)&lt;&lt;xshift);
27900284 <span class="preprocessor">#endif</span>
28000285 <span class="preprocessor"></span>    }
28100286 };
28200287
28300288 <span class="keyword">struct </span>R8G8B8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classCol3btoUint32swizzler.html">Col3btoUint32swizzler</a>&lt;FMTCONVERTERID(PF_R8G8B8, PF_A8R8G8B8), 16, 8, 0, 24&gt; { };
28400289 <span class="keyword">struct </span>B8G8R8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classCol3btoUint32swizzler.html">Col3btoUint32swizzler</a>&lt;FMTCONVERTERID(PF_B8G8R8, PF_A8R8G8B8), 0, 8, 16, 24&gt; { };
28500290 <span class="keyword">struct </span>R8G8B8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classCol3btoUint32swizzler.html">Col3btoUint32swizzler</a>&lt;FMTCONVERTERID(PF_R8G8B8, PF_A8B8G8R8), 0, 8, 16, 24&gt; { };
28600291 <span class="keyword">struct </span>B8G8R8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classCol3btoUint32swizzler.html">Col3btoUint32swizzler</a>&lt;FMTCONVERTERID(PF_B8G8R8, PF_A8B8G8R8), 16, 8, 0, 24&gt; { };
28700292 <span class="keyword">struct </span>R8G8B8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classCol3btoUint32swizzler.html">Col3btoUint32swizzler</a>&lt;FMTCONVERTERID(PF_R8G8B8, PF_B8G8R8A8), 8, 16, 24, 0&gt; { };
28800293 <span class="keyword">struct </span>B8G8R8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classCol3btoUint32swizzler.html">Col3btoUint32swizzler</a>&lt;FMTCONVERTERID(PF_B8G8R8, PF_B8G8R8A8), 24, 16, 8, 0&gt; { };
28900294
29000295 <span class="keyword">struct </span>A8R8G8B8toR8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, Col3b, FMTCONVERTERID(PF_A8R8G8B8, PF_BYTE_RGB)&gt;
29100296 {
29200297     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(<a class="code" href="namespaceOgre.html#a412">uint32</a> inp)
29300298     {
29400299         <span class="keywordflow">return</span> <a class="code" href="classCol3b.html">Col3b</a>((<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&gt;&gt;16)&amp;0xFF), (<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&gt;&gt;8)&amp;0xFF), (<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&gt;&gt;0)&amp;0xFF));
29500300     }
29600301 };
29700302 <span class="keyword">struct </span>A8R8G8B8toB8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, Col3b, FMTCONVERTERID(PF_A8R8G8B8, PF_BYTE_BGR)&gt;
29800303 {
29900304     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(<a class="code" href="namespaceOgre.html#a412">uint32</a> inp)
30000305     {
30100306         <span class="keywordflow">return</span> <a class="code" href="classCol3b.html">Col3b</a>((<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&gt;&gt;0)&amp;0xFF), (<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&gt;&gt;8)&amp;0xFF), (<a class="code" href="namespaceOgre.html#a414">uint8</a>)((inp&gt;&gt;16)&amp;0xFF));
30200307     }
30300308 };
30400309
30500310 <span class="comment">// Only conversions from X8R8G8B8 to formats with alpha need to be defined, the rest is implicitly the same</span>
30600311 <span class="comment">// as A8R8G8B8</span>
30700312 <span class="keyword">struct </span>X8R8G8B8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8R8G8B8, PF_A8R8G8B8)&gt;
30800313 {
30900314     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
31000315     {
31100316         <span class="keywordflow">return</span> inp | 0xFF000000;
31200317     }
31300318 };
31400319 <span class="keyword">struct </span>X8R8G8B8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8R8G8B8, PF_A8B8G8R8)&gt;
31500320 {
31600321     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
31700322     {
31800323         <span class="keywordflow">return</span> ((inp&amp;0x0000FF)&lt;&lt;16)|((inp&amp;0xFF0000)&gt;&gt;16)|(inp&amp;0x00FF00)|0xFF000000;
31900324     }
32000325 };
32100326 <span class="keyword">struct </span>X8R8G8B8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8R8G8B8, PF_B8G8R8A8)&gt;
32200327 {
32300328     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
32400329     {
32500330         <span class="keywordflow">return</span> ((inp&amp;0x0000FF)&lt;&lt;24)|((inp&amp;0xFF0000)&gt;&gt;8)|((inp&amp;0x00FF00)&lt;&lt;8)|0x000000FF;
32600331     }
32700332 };
32800333 <span class="keyword">struct </span>X8R8G8B8toR8G8B8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8R8G8B8, PF_R8G8B8A8)&gt;
32900334 {
33000335     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
33100336     {
33200337         <span class="keywordflow">return</span> ((inp&amp;0xFFFFFF)&lt;&lt;8)|0x000000FF;
33300338     }
33400339 };
33500340
33600341 <span class="comment">// X8B8G8R8</span>
33700342 <span class="keyword">struct </span>X8B8G8R8toA8R8G8B8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8B8G8R8, PF_A8R8G8B8)&gt;
33800343 {
33900344     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
34000345     {
34100346         <span class="keywordflow">return</span> ((inp&amp;0x0000FF)&lt;&lt;16)|((inp&amp;0xFF0000)&gt;&gt;16)|(inp&amp;0x00FF00)|0xFF000000;
34200347     }
34300348 };
34400349 <span class="keyword">struct </span>X8B8G8R8toA8B8G8R8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8B8G8R8, PF_A8B8G8R8)&gt;
34500350 {
34600351     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
34700352     {
34800353         <span class="keywordflow">return</span> inp | 0xFF000000;
34900354     }
35000355 };
35100356 <span class="keyword">struct </span>X8B8G8R8toB8G8R8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8B8G8R8, PF_B8G8R8A8)&gt;
35200357 {
35300358     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
35400359     {
35500360         <span class="keywordflow">return</span> ((inp&amp;0xFFFFFF)&lt;&lt;8)|0x000000FF;
35600361     }
35700362 };
35800363 <span class="keyword">struct </span>X8B8G8R8toR8G8B8A8: <span class="keyword">public</span> <a class="code" href="classPixelConverter.html">PixelConverter</a> &lt;uint32, uint32, FMTCONVERTERID(PF_X8B8G8R8, PF_R8G8B8A8)&gt;
35900364 {
36000365     <span class="keyword">inline</span> <span class="keyword">static</span> DstType pixelConvert(SrcType inp)
36100366     {
36200367         <span class="keywordflow">return</span> ((inp&amp;0x0000FF)&lt;&lt;24)|((inp&amp;0xFF0000)&gt;&gt;8)|((inp&amp;0x00FF00)&lt;&lt;8)|0x000000FF;
36300368     }
36400369 };
36500370
36600371
36700372 <span class="preprocessor">#define CASECONVERTER(type) case type::ID : PixelBoxConverter&lt;type&gt;::conversion(src, dst); return 1;</span>
36800373 <span class="preprocessor"></span>
36900374 <span class="keyword">inline</span> <span class="keywordtype">int</span> doOptimizedConversion(<span class="keyword">const</span> <a class="code" href="classOgre_1_1PixelBox.html">PixelBox</a> &amp;src, <span class="keyword">const</span> <a class="code" href="classOgre_1_1PixelBox.html">PixelBox</a> &amp;dst)
37000375 {;
37100376     <span class="keywordflow">switch</span>(FMTCONVERTERID(src.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxo1">format</a>, dst.<a class="code" href="classOgre_1_1PixelBox.html#Ogre_1_1PixelBoxo1">format</a>))
37200377     {
37300378         <span class="comment">// Register converters here</span>
37400379         CASECONVERTER(<a class="code" href="classA8R8G8B8toA8B8G8R8.html">A8R8G8B8toA8B8G8R8</a>);
37500380         CASECONVERTER(<a class="code" href="classA8R8G8B8toB8G8R8A8.html">A8R8G8B8toB8G8R8A8</a>);
37600381         CASECONVERTER(<a class="code" href="classA8R8G8B8toR8G8B8A8.html">A8R8G8B8toR8G8B8A8</a>);
37700382         CASECONVERTER(<a class="code" href="classA8B8G8R8toA8R8G8B8.html">A8B8G8R8toA8R8G8B8</a>);
37800383         CASECONVERTER(<a class="code" href="classA8B8G8R8toB8G8R8A8.html">A8B8G8R8toB8G8R8A8</a>);
37900384         CASECONVERTER(<a class="code" href="classA8B8G8R8toR8G8B8A8.html">A8B8G8R8toR8G8B8A8</a>);
38000385         CASECONVERTER(<a class="code" href="classB8G8R8A8toA8R8G8B8.html">B8G8R8A8toA8R8G8B8</a>);
38100386         CASECONVERTER(<a class="code" href="classB8G8R8A8toA8B8G8R8.html">B8G8R8A8toA8B8G8R8</a>);
38200387         CASECONVERTER(<a class="code" href="classB8G8R8A8toR8G8B8A8.html">B8G8R8A8toR8G8B8A8</a>);
38300388         CASECONVERTER(<a class="code" href="classR8G8B8A8toA8R8G8B8.html">R8G8B8A8toA8R8G8B8</a>);
38400389         CASECONVERTER(<a class="code" href="classR8G8B8A8toA8B8G8R8.html">R8G8B8A8toA8B8G8R8</a>);
38500390         CASECONVERTER(<a class="code" href="classR8G8B8A8toB8G8R8A8.html">R8G8B8A8toB8G8R8A8</a>);
38600391         CASECONVERTER(<a class="code" href="classA8B8G8R8toL8.html">A8B8G8R8toL8</a>);
38700392         CASECONVERTER(<a class="code" href="classL8toA8B8G8R8.html">L8toA8B8G8R8</a>);
38800393         CASECONVERTER(<a class="code" href="classA8R8G8B8toL8.html">A8R8G8B8toL8</a>);
38900394         CASECONVERTER(<a class="code" href="classL8toA8R8G8B8.html">L8toA8R8G8B8</a>);
39000395         CASECONVERTER(<a class="code" href="classB8G8R8A8toL8.html">B8G8R8A8toL8</a>);
39100396         CASECONVERTER(<a class="code" href="classL8toB8G8R8A8.html">L8toB8G8R8A8</a>);
39200397         CASECONVERTER(<a class="code" href="classL8toL16.html">L8toL16</a>);
39300398         CASECONVERTER(<a class="code" href="classL16toL8.html">L16toL8</a>);
39400399         CASECONVERTER(<a class="code" href="classB8G8R8toR8G8B8.html">B8G8R8toR8G8B8</a>);
39500400         CASECONVERTER(<a class="code" href="classR8G8B8toB8G8R8.html">R8G8B8toB8G8R8</a>);
39600401         CASECONVERTER(<a class="code" href="classR8G8B8toA8R8G8B8.html">R8G8B8toA8R8G8B8</a>);
39700402         CASECONVERTER(<a class="code" href="classB8G8R8toA8R8G8B8.html">B8G8R8toA8R8G8B8</a>);
39800403         CASECONVERTER(<a class="code" href="classR8G8B8toA8B8G8R8.html">R8G8B8toA8B8G8R8</a>);
39900404         CASECONVERTER(<a class="code" href="classB8G8R8toA8B8G8R8.html">B8G8R8toA8B8G8R8</a>);
40000405         CASECONVERTER(<a class="code" href="classR8G8B8toB8G8R8A8.html">R8G8B8toB8G8R8A8</a>);
40100406         CASECONVERTER(<a class="code" href="classB8G8R8toB8G8R8A8.html">B8G8R8toB8G8R8A8</a>);
40200407         CASECONVERTER(<a class="code" href="classA8R8G8B8toR8G8B8.html">A8R8G8B8toR8G8B8</a>);
40300408         CASECONVERTER(<a class="code" href="classA8R8G8B8toB8G8R8.html">A8R8G8B8toB8G8R8</a>);
40400409         CASECONVERTER(<a class="code" href="classX8R8G8B8toA8R8G8B8.html">X8R8G8B8toA8R8G8B8</a>);
40500410         CASECONVERTER(<a class="code" href="classX8R8G8B8toA8B8G8R8.html">X8R8G8B8toA8B8G8R8</a>);
40600411         CASECONVERTER(<a class="code" href="classX8R8G8B8toB8G8R8A8.html">X8R8G8B8toB8G8R8A8</a>);
40700412         CASECONVERTER(<a class="code" href="classX8R8G8B8toR8G8B8A8.html">X8R8G8B8toR8G8B8A8</a>);
40800413         CASECONVERTER(<a class="code" href="classX8B8G8R8toA8R8G8B8.html">X8B8G8R8toA8R8G8B8</a>);
40900414         CASECONVERTER(<a class="code" href="classX8B8G8R8toA8B8G8R8.html">X8B8G8R8toA8B8G8R8</a>);
41000415         CASECONVERTER(<a class="code" href="classX8B8G8R8toB8G8R8A8.html">X8B8G8R8toB8G8R8A8</a>);
41100416         CASECONVERTER(<a class="code" href="classX8B8G8R8toR8G8B8A8.html">X8B8G8R8toR8G8B8A8</a>);
41200417
41300418         <span class="keywordflow">default</span>:
41400419             <span class="keywordflow">return</span> 0;
41500420     }
41600421 }
41700422 <span class="preprocessor">#undef CASECONVERTER</span>
41800423 <span class="preprocessor"></span>
41900424 <span class="preprocessor">#endif // VC6 protection</span>
420</pre></div><hr>
421<p>
422Copyright &copy; 2000-2005 by The OGRE Team<br />
423<!--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/>
424This 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/>
425                <!--/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#">
426                <Work rdf:about="">
427                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
428        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
429                </Work>
430                <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> -->
431
432Last modified Sun Feb 12 12:59:49 2006
433</p>
434</body>
435</html>
Note: See TracBrowser for help on using the repository browser.