Click here to Skip to main content
15,886,060 members
Articles / Desktop Programming / MFC

ImageStone - A Powerful C++ Class Library for Image Manipulation

Rate me:
Please Sign up or sign in to vote.
4.81/5 (250 votes)
6 Dec 2011Zlib3 min read 117.8K   51.5K   405  
An article on a library for image manipulation
<!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>ImageStone: oxo_helper.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.1 -->
<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">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div>
<h1>oxo_helper.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
00002 <span class="comment"> *   Copyright (C) =USTC= Fu Li</span>
00003 <span class="comment"> *</span>
00004 <span class="comment"> *   Author   :  Fu Li</span>
00005 <span class="comment"> *   Create   :  2004-6-26</span>
00006 <span class="comment"> *   Home     :  http://www.crazy-bit.com/</span>
00007 <span class="comment"> *   Mail     :  crazybit@263.net</span>
00008 <span class="comment"> *   History  :  </span>
00009 <span class="comment"> */</span>
00010 <span class="preprocessor">#ifndef __PCL_PHOXO_HELPER__2004_06_26__H__</span>
00011 <span class="preprocessor"></span><span class="preprocessor">#define __PCL_PHOXO_HELPER__2004_06_26__H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#include "StdDefine.h"</span>
00013 
00014 <span class="comment">//=============================================================================</span>
<a name="l00018"></a><a class="code" href="class_f_c_o_x_o_helper.html">00018</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_f_c_o_x_o_helper.html">FCOXOHelper</a>
00019 {
00020 <span class="keyword">public</span>:
00025 
00026     <span class="keyword">static</span> BYTE* <a class="code" href="class_f_c_o_x_o_helper.html#z45_0">ZeroMalloc</a> (<span class="keywordtype">int</span> nBytes) ;
00028     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z45_1">ZeroFree</a> (<span class="keywordtype">void</span>* pPixel) ;
00030 
00035 
00036     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z47_0">SaveBufferToFile</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFilename, <span class="keyword">const</span> <span class="keywordtype">char</span>* pBuffer, <span class="keywordtype">int</span> nLength) ;
00038     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z47_1">LoadFileToBuffer</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFilename, <span class="keywordtype">char</span>*&amp; pBuffer, <span class="keywordtype">int</span>&amp; nLength) ;
00040 
00045 
<a name="l00046"></a><a class="code" href="class_f_c_o_x_o_helper.html#z49_0">00046</a>     <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">static</span> std::string <a class="code" href="class_f_c_o_x_o_helper.html#z49_0">X2A</a> (<span class="keyword">const</span> T&amp; tNumber, <span class="keywordtype">int</span> nWidth=0)
00047     {
00048         std::ostringstream     sOutStream ;
00049         sOutStream.width (nWidth) ;
00050         sOutStream.fill (<span class="charliteral">'0'</span>) ;
00051         sOutStream &lt;&lt; tNumber ;
00052         <span class="keywordflow">return</span> sOutStream.str() ;
00053     }
<a name="l00055"></a><a class="code" href="class_f_c_o_x_o_helper.html#z49_1">00055</a>     <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z49_1">A2X</a> (<span class="keyword">const</span> std::string&amp; strNumber, T&amp; tResult)
00056     {
00057         tResult = (T)0 ;
00058         std::stringstream     sTranslation ;
00059         sTranslation &lt;&lt; strNumber ;
00060         sTranslation &gt;&gt; tResult ;
00061     }
<a name="l00063"></a><a class="code" href="class_f_c_o_x_o_helper.html#z49_2">00063</a>     <span class="keyword">static</span> std::string <a class="code" href="class_f_c_o_x_o_helper.html#z49_2">EncodeURL</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* pBufDummy, <span class="keywordtype">int</span> nLen)
00064     {
00065         <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>  * pBuf = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)pBufDummy ;
00066         <span class="keyword">static</span> std::string   s_HexTable = <span class="stringliteral">"0123456789ABCDEF"</span>,
00067                              s_UnsafeTable = <span class="stringliteral">"\"&lt;&gt;%\\^[]`+$,@:;/!#?=&amp;"</span> ;
00068         std::string   s ;
00069         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0 ; i &lt; nLen ; i++)
00070             <span class="keywordflow">if</span> ((pBuf[i] &gt; 32) &amp;&amp; (pBuf[i] &lt; 123) &amp;&amp; (s_UnsafeTable.find(pBuf[i]) == std::string::npos))
00071             {
00072                 s += pBuf[i] ;
00073             }
00074             <span class="keywordflow">else</span>
00075             {
00076                 s += <span class="stringliteral">"%"</span> ;
00077                 s += s_HexTable[pBuf[i] / 16] ;
00078                 s += s_HexTable[pBuf[i] % 16] ;
00079             }
00080         <span class="keywordflow">return</span> s ;
00081     }
00083 
00085     <span class="keyword">static</span> std::string <a class="code" href="class_f_c_o_x_o_helper.html#e0">GetFileExt</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* pFile) ;
00086 
00088     <span class="keyword">static</span> IMAGE_TYPE <a class="code" href="class_f_c_o_x_o_helper.html#e1">GetImageTypeFromName</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName) ;
00089 
00094 
00095     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_0">LoadPhotoshopACF</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, std::deque&lt;int&gt;&amp; listElem) ;
00097     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_1">SavePhotoshopACF</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <span class="keyword">const</span> std::deque&lt;int&gt;&amp; listElem) ;
00098 
<a name="l00100"></a><a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">00100</a>     <span class="keyword">struct </span><a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">PHOXOSETTING</a>
00101     {
00102         INT32       nUndoLevel ; <span class="comment">// Undo����, default(20)</span>
00103         INT32       nBkType ; <span class="comment">// �����������ͣ�0(��ɫ)��1(����)��2(�ۺ�����)</span>
00104         RGBQUAD     crCanvasBk ; <span class="comment">// canvas����ɫ</span>
00105         INT32       nNewWidth ; <span class="comment">// �½�ͼ���</span>
00106         INT32       nNewHeight ; <span class="comment">// �½�ͼ���</span>
00107         INT32       nResolution ; <span class="comment">// �½�ͼ�������</span>
00108         RGBQUAD     crFore ; <span class="comment">// ǰ��ɫ</span>
00109         RGBQUAD     crBack ; <span class="comment">// ����ɫ</span>
00110         INT32       nIsShowLogo ; <span class="comment">// ���ʱ�Ƿ���ʾlogo</span>
00111         INT32       nAntStepTime ; <span class="comment">// �����߼��ʱ�������</span>
00112         INT32       nIdLanguage ; <span class="comment">// ��ǰOS����</span>
00113     };
00115     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_2">LoadPhoXoSettingFile</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">PHOXOSETTING</a>&amp; oXoSetting) ;
00117     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_3">SavePhoXoSettingFile</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <span class="keyword">const</span> <a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">PHOXOSETTING</a>&amp; oXoSetting) ;
00119 
00121     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#e2">BubbleSort</a> (<span class="keywordtype">int</span> pArray[], <span class="keywordtype">int</span> iNumElement) ;
00122 
00123 <span class="keyword">private</span>:
00124     <span class="keyword">static</span> <span class="keywordtype">int</span> __PS_WORD2INT (<span class="keyword">const</span> BYTE* pWord) ;
00125 };
00126 
00127 <span class="comment">//=============================================================================</span>
00128 <span class="comment">// inline Implement</span>
00129 <span class="comment">//=============================================================================</span>
<a name="l00130"></a><a class="code" href="class_f_c_o_x_o_helper.html#z45_0">00130</a> <span class="keyword">inline</span> BYTE* <a class="code" href="class_f_c_o_x_o_helper.html#z45_0">FCOXOHelper::ZeroMalloc</a> (<span class="keywordtype">int</span> nBytes)
00131 {
00132 <span class="preprocessor">#ifdef WIN32</span>
00133 <span class="preprocessor"></span>
00134     <span class="comment">// BoundChecker can's check the memory alloc by &lt;VirtualAlloc&gt;</span>
00135 <span class="preprocessor">    #ifdef _DEBUG</span>
00136 <span class="preprocessor"></span>        BYTE   * pByte = (BYTE*)malloc (nBytes) ;
00137         memset (pByte, 0, nBytes) ;
00138         <span class="keywordflow">return</span> pByte ;
00139 <span class="preprocessor">    #else</span>
00140 <span class="preprocessor"></span>        <span class="keywordflow">return</span> (BYTE*)VirtualAlloc (NULL, nBytes, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE) ;
00141 <span class="preprocessor">    #endif</span>
00142 <span class="preprocessor"></span>
00143 <span class="preprocessor">#else</span>
00144 <span class="preprocessor"></span>
00145         BYTE   * pByte = (BYTE*)malloc (nBytes) ;
00146         memset (pByte, 0, nBytes) ;
00147         <span class="keywordflow">return</span> pByte ;
00148 
00149 <span class="preprocessor">#endif</span>
00150 <span class="preprocessor"></span>}
00151 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00152"></a><a class="code" href="class_f_c_o_x_o_helper.html#z45_1">00152</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z45_1">FCOXOHelper::ZeroFree</a> (<span class="keywordtype">void</span>* pPixel)
00153 {
00154     <span class="keywordflow">if</span> (!pPixel)
00155         return ;
00156 
00157 <span class="preprocessor">#ifdef WIN32</span>
00158 <span class="preprocessor"></span>
00159 <span class="preprocessor">    #ifdef _DEBUG</span>
00160 <span class="preprocessor"></span>        free (pPixel) ;
00161 <span class="preprocessor">    #else</span>
00162 <span class="preprocessor"></span>        ::VirtualFree (pPixel, 0, MEM_RELEASE) ;
00163 <span class="preprocessor">    #endif</span>
00164 <span class="preprocessor"></span>
00165 <span class="preprocessor">#else</span>
00166 <span class="preprocessor"></span>
00167         free (pPixel) ;
00168 
00169 <span class="preprocessor">#endif</span>
00170 <span class="preprocessor"></span>}
00171 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00172"></a><a class="code" href="class_f_c_o_x_o_helper.html#z47_0">00172</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z47_0">FCOXOHelper::SaveBufferToFile</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFilename, <span class="keyword">const</span> <span class="keywordtype">char</span>* pBuffer, <span class="keywordtype">int</span> nLength)
00173 {
00174     std::ofstream   outFile (szFilename, std::ios::out|std::ios::binary|std::ios::trunc) ; assert(outFile.is_open());
00175     <span class="keywordflow">if</span> (outFile.is_open())
00176         outFile.write (pBuffer, nLength) ;
00177 }
00178 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00179"></a><a class="code" href="class_f_c_o_x_o_helper.html#z47_1">00179</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z47_1">FCOXOHelper::LoadFileToBuffer</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFilename, <span class="keywordtype">char</span>*&amp; pBuffer, <span class="keywordtype">int</span>&amp; nLength)
00180 {
00181     pBuffer=NULL; nLength=0;
00182     std::ifstream     inFile (szFilename, std::ios::in|std::ios::binary) ;
00183     <span class="keywordflow">if</span> (!inFile.is_open())
00184         {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span>;}
00185 
00186     <span class="comment">// get file length</span>
00187     inFile.seekg (0, std::ios::end) ;
00188     nLength = inFile.tellg() ;
00189 
00190     <span class="comment">// read file into memory</span>
00191     pBuffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[nLength + 8] ;
00192     memset (pBuffer, 0, nLength + 8) ;
00193     inFile.seekg (0, std::ios::beg) ;
00194     inFile.read (pBuffer, nLength) ;
00195 }
00196 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00197"></a><a class="code" href="class_f_c_o_x_o_helper.html#e0">00197</a> <span class="keyword">inline</span> std::string <a class="code" href="class_f_c_o_x_o_helper.html#e0">FCOXOHelper::GetFileExt</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* pFile)
00198 {
00199     <span class="keywordflow">if</span> (!pFile) {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="stringliteral">""</span>;}
00200 
00201     std::string     strFile(pFile), strOut ;
00202     <span class="keyword">const</span> <span class="keywordtype">int</span>       nPos = (int)strFile.find_last_of (<span class="stringliteral">"."</span>) ;
00203     <span class="keywordflow">if</span> (nPos != std::string::npos)
00204         strOut = strFile.substr (nPos + 1) ;
00205     <span class="keywordflow">return</span> strOut ;
00206 }
00207 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00208"></a><a class="code" href="class_f_c_o_x_o_helper.html#e1">00208</a> <span class="keyword">inline</span> IMAGE_TYPE <a class="code" href="class_f_c_o_x_o_helper.html#e1">FCOXOHelper::GetImageTypeFromName</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName)
00209 {
00210     <span class="keywordflow">if</span> (!szFileName)  {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> IMG_UNKNOW;}
00211 
00212     std::string       strExt (<a class="code" href="class_f_c_o_x_o_helper.html#e0">GetFileExt</a>(szFileName)) ;
00213     <a class="code" href="class_p_c_l__array.html">PCL_array&lt;char&gt;</a>   szConvert (<span class="keyword">new</span> <span class="keywordtype">char</span>[strExt.size() + 8]) ;
00214     memset (szConvert.get(), 0, strExt.size() + 8) ;
00215     strcpy (szConvert.get(), strExt.c_str()) ;
00216 
00217     <span class="comment">// convert to lowercase</span>
00218     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0 ; i &lt; (<span class="keywordtype">int</span>)strExt.size() ; i++)
00219         szConvert[i] = tolower(szConvert[i]) ;
00220 
00221     <a class="code" href="class_p_c_l___t_t___convertor.html">PCL_TT_Convertor&lt;IMAGE_TYPE, std::string&gt;</a>   imgTab ;
00222     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_JPG, <span class="stringliteral">"jpg"</span>) ;
00223     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_JPG, <span class="stringliteral">"jpeg"</span>) ;
00224     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_GIF, <span class="stringliteral">"gif"</span>) ;
00225     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_PNG, <span class="stringliteral">"png"</span>) ;
00226     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_BMP, <span class="stringliteral">"bmp"</span>) ;
00227     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_PCX, <span class="stringliteral">"pcx"</span>) ;
00228     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_TIF, <span class="stringliteral">"tif"</span>) ;
00229     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_TIF, <span class="stringliteral">"tiff"</span>) ;
00230     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_TGA, <span class="stringliteral">"tga"</span>) ;
00231     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_ICO, <span class="stringliteral">"ico"</span>) ;
00232     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_PSD, <span class="stringliteral">"psd"</span>) ;
00233     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_XPM, <span class="stringliteral">"xpm"</span>) ;
00234     imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a7">AddElement</a> (IMG_PHOXO, <span class="stringliteral">"oxo"</span>) ;
00235     <span class="keywordflow">return</span> imgTab.<a class="code" href="class_p_c_l___t_t___convertor.html#a1">Second_to_First</a> (szConvert.get(), IMG_UNKNOW) ;
00236 }
00237 <span class="comment">//-----------------------------------------------------------------------------</span>
00238 <span class="keyword">inline</span> <span class="keywordtype">int</span> FCOXOHelper::__PS_WORD2INT (<span class="keyword">const</span> BYTE* pWord)
00239 {
00240     BYTE   bySwap[2] = {pWord[1], pWord[0]} ;
00241     <span class="keywordflow">return</span> *(<span class="keywordtype">short</span>*)bySwap ;
00242 }
00243 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00244"></a><a class="code" href="class_f_c_o_x_o_helper.html#z51_0">00244</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_0">FCOXOHelper::LoadPhotoshopACF</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, std::deque&lt;int&gt;&amp; listElem)
00245 {
00246     listElem.clear() ;
00247     std::ifstream     inFile (szFileName, std::ios::in|std::ios::binary) ;
00248     <span class="keywordflow">if</span> (!inFile.is_open())
00249         <span class="keywordflow">return</span> false ;
00250 
00251     <span class="comment">// get file's size</span>
00252     inFile.seekg (0, std::ios::end) ;
00253     <span class="keyword">const</span> <span class="keywordtype">int</span>     nFileSize = inFile.tellg() ;
00254     <span class="keywordflow">if</span> (nFileSize != 54) <span class="comment">// 27.elem * 2.bytes</span>
00255         <span class="keywordflow">return</span> false ;
00256 
00257     <span class="comment">// read file into memory.</span>
00258     <a class="code" href="class_p_c_l__array.html">PCL_array&lt;short&gt;</a>   pStart (<span class="keyword">new</span> BYTE[nFileSize]) ;
00259     inFile.seekg (0, std::ios::beg) ;
00260     inFile.read ((<span class="keywordtype">char</span>*)pStart.<a class="code" href="class_p_c_l__array.html#a4">get</a>(), nFileSize) ;
00261 
00262     <span class="comment">// 5 x 5 filter &amp; scale &amp; offset</span>
00263     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0 ; i &lt; 25 ; i++)
00264     {
00265         listElem.push_back (__PS_WORD2INT((BYTE*)&amp;pStart[i])) ;
00266     }
00267     listElem.push_back (__PS_WORD2INT((BYTE*)&amp;pStart[25])) ;
00268     listElem.push_back (__PS_WORD2INT((BYTE*)&amp;pStart[26])) ;
00269     <span class="keywordflow">return</span> true ;
00270 }
00271 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00272"></a><a class="code" href="class_f_c_o_x_o_helper.html#z51_1">00272</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_1">FCOXOHelper::SavePhotoshopACF</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <span class="keyword">const</span> std::deque&lt;int&gt; &amp; listElem)
00273 {
00274     <span class="keywordflow">if</span> (listElem.size() != 27)  {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="keyword">false</span>;}
00275 
00276     <span class="comment">// create file</span>
00277     std::ofstream     outFile (szFileName, std::ios::out|std::ios::binary|std::ios::trunc) ;
00278     <span class="keywordflow">if</span> (!outFile.is_open())
00279         <span class="keywordflow">return</span> false ;
00280 
00281     BYTE    pElem[2] ;
00282     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0 ; i &lt; (<span class="keywordtype">int</span>)listElem.size() ; i++)
00283     {
00284         *(<span class="keywordtype">short</span>*)pElem = (short)listElem[i] ;
00285         FSwap (pElem[0], pElem[1]) ;
00286         outFile.write ((<span class="keywordtype">char</span>*)pElem, 2) ;
00287     }
00288     <span class="keywordflow">return</span> true ;
00289 }
00290 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00291"></a><a class="code" href="class_f_c_o_x_o_helper.html#z51_2">00291</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_2">FCOXOHelper::LoadPhoXoSettingFile</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">PHOXOSETTING</a>&amp; oXoSetting)
00292 {
00293     std::ifstream     inFile (szFileName, std::ios::in|std::ios::binary) ;
00294     <span class="keywordflow">if</span> (inFile.is_open())
00295     {
00296         <span class="comment">// get file length</span>
00297         inFile.seekg (0, std::ios::end) ;
00298         <span class="keywordflow">if</span> ((<span class="keywordtype">int</span>)inFile.tellg() == <span class="keyword">sizeof</span>(<a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">PHOXOSETTING</a>))
00299         {
00300             inFile.seekg (0, std::ios::beg) ;
00301             inFile.read ((<span class="keywordtype">char</span>*)&amp;oXoSetting, <span class="keyword">sizeof</span>(<a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">PHOXOSETTING</a>)) ;
00302             return ;
00303         }
00304     }
00305     <span class="comment">// �ļ������ڻ򳤶Ȳ�����Ĭ������</span>
00306     oXoSetting.nUndoLevel = 20 ; <span class="comment">// Undo����, default(20)</span>
00307     oXoSetting.nBkType = 2 ; <span class="comment">// �����������ͣ�0(��ɫ)��1(����)��2(�ۺ�����)</span>
00308     oXoSetting.nNewWidth = 640 ; <span class="comment">// �½�ͼ���</span>
00309     oXoSetting.nNewHeight = 480 ; <span class="comment">// �½�ͼ���</span>
00310     oXoSetting.nResolution = 72 ; <span class="comment">// �½�ͼ�������</span>
00311     oXoSetting.crFore = PCL_RGBA(0,0,0,0xFF) ; <span class="comment">// ǰ��ɫ</span>
00312     oXoSetting.crBack = PCL_RGBA(0xFF,0xFF,0xFF,0xFF) ; <span class="comment">// ����ɫ</span>
00313     oXoSetting.nIsShowLogo = 1 ; <span class="comment">// Ĭ����ʾlogo</span>
00314     oXoSetting.nAntStepTime = 300 ; <span class="comment">// �����߼��ʱ�������</span>
00315     oXoSetting.nIdLanguage = 0 ;
00316 }
00317 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00318"></a><a class="code" href="class_f_c_o_x_o_helper.html#z51_3">00318</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#z51_3">FCOXOHelper::SavePhoXoSettingFile</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* szFileName, <span class="keyword">const</span> <a class="code" href="struct_f_c_o_x_o_helper_1_1_p_h_o_x_o_s_e_t_t_i_n_g.html">PHOXOSETTING</a>&amp; oXoSetting)
00319 {
00320     <span class="comment">// create file.</span>
00321     std::ofstream     outFile (szFileName, std::ios::out|std::ios::binary|std::ios::trunc) ;
00322     <span class="keywordflow">if</span> (outFile.is_open())
00323         outFile.write ((<span class="keywordtype">char</span>*)&amp;oXoSetting, <span class="keyword">sizeof</span>(oXoSetting)) ;
00324 }
00325 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00326"></a><a class="code" href="class_f_c_o_x_o_helper.html#e2">00326</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_f_c_o_x_o_helper.html#e2">FCOXOHelper::BubbleSort</a> (<span class="keywordtype">int</span> pArray[], <span class="keywordtype">int</span> iNumElement)
00327 {
00328     <span class="keywordflow">if</span> (!pArray)
00329         {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span>;}
00330 
00331     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = iNumElement-1 ; i &gt; 0 ; i--)
00332     {
00333         <span class="keywordtype">bool</span>     bFlag = true ;
00334         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0 ; j &lt; i ; j++)
00335             <span class="keywordflow">if</span> (pArray[j] &gt; pArray[j + 1])
00336             {
00337                 FSwap (pArray[j], pArray[j+1]) ;
00338                 bFlag = false ;
00339             }
00340         <span class="keywordflow">if</span> (bFlag)
00341             break ;
00342     }
00343 }
00344 
00345 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 8 11:12:46 2006 for ImageStone by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.1 </small></address>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The zlib/libpng License


Written By
Team Leader PhoXo
China China
graduate from University of Science and Technology of China at 2002.

Now I work at www.phoxo.com.

Comments and Discussions