Converter.cpp
上传用户:hell82222
上传日期:2013-12-19
资源大小:1872k
文件大小:5k
源码类别:

CAD

开发平台:

Visual C++

  1. // Converter.cpp: implementation of the CConverter class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "FileSwitch.h"
  6. #include "Converter.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. #include "cmndef.h"
  16. CMapStringToPtr CConverter::m_mapFont;
  17. CConverter::CConverter()
  18. {
  19. if(m_mapFont.IsEmpty())
  20. {
  21. TCHAR szFileName[MAX_PATH];
  22. HMODULE hModule=::GetModuleHandle("fileswitch.dll");
  23. ::GetModuleFileName(hModule,szFileName,MAX_PATH);
  24. (*_tcsrchr(szFileName,'\'))=''; 
  25. _tcscat(szFileName,_T("\support\kmconv.fmp")); 
  26. //short adInitAd2 _((const char * initfilepath, short *initerror));
  27. CFileFind filefind;
  28. CString strTemp2;
  29. if(filefind.FindFile(szFileName))
  30. {
  31. CStdioFile file;
  32. if(file.Open(szFileName,CFile::modeRead))
  33. {
  34. CString strTemp;
  35. while(file.ReadString(strTemp))
  36. {
  37. int iPos=strTemp.Find(';');
  38. if(iPos!=-1)
  39. {
  40. strTemp2=strTemp.Right(strTemp.GetLength()-iPos-1);
  41. int iPos2=strTemp2.Find(';');
  42. if(iPos2!=-1)
  43. {
  44. CString strTemp3=strTemp2.Right(strTemp2.GetLength()-iPos2-1);
  45. int ipos3=strTemp3.Find(';');
  46. if(ipos3!=-1)
  47. {
  48. double dscale=::atof(strTemp3.Left(ipos3));
  49. if(dscale<PRECISION)
  50. dscale=1.0;
  51. double dheightscale=::atof(strTemp3.Right(strTemp3.GetLength()-ipos3-1));
  52. m_mapFont.SetAt(strTemp.Left(iPos),new FONTMAPITEM(strTemp2.Left(iPos2),dscale,dheightscale));
  53. }
  54. else
  55. {
  56. double dscale=::atof(strTemp3);
  57. if(dscale<PRECISION)
  58. dscale=1.0;
  59. m_mapFont.SetAt(strTemp.Left(iPos),new FONTMAPITEM(strTemp2.Left(iPos2),dscale,1.0));
  60. }
  61. }
  62. else
  63. {
  64. m_mapFont.SetAt(strTemp.Left(iPos),new FONTMAPITEM(strTemp2,1.0,1.0));
  65. }
  66. }
  67. }
  68. file.Close();
  69. }
  70. }
  71. }
  72. }
  73. CConverter::~CConverter()
  74. {
  75. CString str;
  76. void* pvoid;
  77. POSITION pos=m_mapFont.GetStartPosition();
  78. while(pos!=NULL)
  79. {
  80. m_mapFont.GetNextAssoc(pos,str,pvoid);
  81. delete pvoid;
  82. }
  83. m_mapFont.RemoveAll();
  84. }
  85. void CConverter::calculate_finddir(double angle,double pt[])
  86. {
  87. angle=angle*PI/180;
  88. pt[0]=cos(angle);
  89. pt[1]=sin(angle);
  90. pt[2]=0.0;
  91. }
  92. void CConverter::calculate_convert_ii(CString& strSource)
  93. {
  94. //专为宝石开发
  95. char tmp_str1[10],tmp_str2[10],tmp_str3[10];
  96. char tmp_str4[10],tmp_str5[10],tmp_str6[10];
  97. char tmp_str7[10];
  98. tmp_str5[0] = 0xD3;
  99. tmp_str5[1] = 0x5D;
  100. tmp_str5[2] = '';
  101. tmp_str6[0] = 0xB4;
  102. tmp_str6[1] = 0x5D;
  103. tmp_str6[2] = '';
  104. tmp_str7[0] = '^';
  105. tmp_str7[1] = 'B';
  106. tmp_str7[2] = '%';
  107. tmp_str7[3] = '';
  108. tmp_str4[0] = 2;
  109. tmp_str4[1] = 'B';
  110. tmp_str4[2] = '';
  111. tmp_str3[0] = 8;
  112. tmp_str3[1] = 2;
  113. tmp_str3[2] = '%';
  114. tmp_str3[3] = 32;
  115. tmp_str3[4] = '';
  116. tmp_str2[0] = 2;
  117. tmp_str2[1] = '%';
  118. tmp_str2[2] = 32;
  119. tmp_str2[3] = '';
  120. tmp_str1[0] = 2;
  121. tmp_str1[1] = '%';
  122. tmp_str1[2] = '';
  123. CString my_string;int len_findstring;
  124. my_string=strSource;
  125. len_findstring=my_string.Find(tmp_str4);
  126. while(len_findstring!=-1)
  127. {
  128. //my_string.Delete(len_findstring,4);
  129. //len_findstring=my_string.Find(tmp_str4);
  130. //
  131. my_string.Delete(len_findstring,2);
  132. my_string.Insert(len_findstring,"Φ");
  133. len_findstring=my_string.Find(tmp_str4);
  134. }
  135. len_findstring=my_string.Find(tmp_str3);
  136. while(len_findstring!=-1)
  137. {
  138. my_string.Delete(len_findstring,3);
  139. len_findstring=my_string.Find(tmp_str3);
  140. }
  141. len_findstring=my_string.Find(tmp_str2);
  142. while(len_findstring!=-1)
  143. {
  144. my_string.Delete(len_findstring,3);
  145. len_findstring=my_string.Find(tmp_str2);
  146. }
  147. len_findstring=my_string.Find(tmp_str1);
  148.     while(len_findstring!=-1)
  149. {
  150. my_string.Delete(len_findstring,2);
  151. len_findstring=my_string.Find(tmp_str1);
  152. }
  153. len_findstring=my_string.Find(tmp_str5);
  154. while (len_findstring!=-1) {
  155. char Right[3]={0xD3,0xA6,''};
  156. my_string.Delete(len_findstring,2);
  157. my_string.Insert(len_findstring,Right);
  158. len_findstring=my_string.Find(tmp_str5);
  159. }
  160. len_findstring=my_string.Find(tmp_str6);
  161. while (len_findstring!=-1) {
  162. char Right[3]={0xB4,0xF3,''};
  163. my_string.Delete(len_findstring,2);
  164. my_string.Insert(len_findstring,Right);
  165. len_findstring=my_string.Find(tmp_str6);
  166. }
  167. len_findstring=my_string.Find(tmp_str7);
  168.     while(len_findstring!=-1)
  169. {
  170. my_string.Delete(len_findstring,3);
  171. len_findstring=my_string.Find(tmp_str7);
  172. }
  173. len_findstring=my_string.Find(']');
  174. if (len_findstring!=-1) 
  175. {
  176. for(int i = 0; i < my_string.GetLength(); i ++)
  177. {
  178. char ch = my_string.GetAt(i);
  179. if (ch == ']') 
  180. {
  181. my_string.SetAt(i,' ');
  182. }
  183. else if (ch & 0x80) 
  184. {
  185. i ++;
  186. }
  187. }
  188. }
  189. strSource=my_string;
  190. }