<!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 Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class 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>*& pBuffer, <span class="keywordtype">int</span>& 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><<span class="keyword">class</span> T> <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& 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 << 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><<span class="keyword">class</span> T> <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& strNumber, T& tResult)
00056 {
00057 tResult = (T)0 ;
00058 std::stringstream sTranslation ;
00059 sTranslation << strNumber ;
00060 sTranslation >> 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">"\"<>%\\^[]`+$,@:;/!#?=&"</span> ;
00068 std::string s ;
00069 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0 ; i < nLen ; i++)
00070 <span class="keywordflow">if</span> ((pBuf[i] > 32) && (pBuf[i] < 123) && (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<int>& 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<int>& 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>& 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>& 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 <VirtualAlloc></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>*& pBuffer, <span class="keywordtype">int</span>& 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<char></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 < (<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<IMAGE_TYPE, std::string></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<int>& 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<short></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 & scale & offset</span>
00263 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0 ; i < 25 ; i++)
00264 {
00265 listElem.push_back (__PS_WORD2INT((BYTE*)&pStart[i])) ;
00266 }
00267 listElem.push_back (__PS_WORD2INT((BYTE*)&pStart[25])) ;
00268 listElem.push_back (__PS_WORD2INT((BYTE*)&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<int> & 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 < (<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>& 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>*)&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>& 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>*)&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 > 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 < i ; j++)
00335 <span class="keywordflow">if</span> (pArray[j] > 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
<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>