FormYZ.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:3k
源码类别:

图形图象

开发平台:

Visual C++

  1. #include "FormYZ.h"
  2. #include "stdafx.h"
  3. #include "PsdModule.h"
  4. /*************************************************************************
  5.  *
  6.  * IsFileExist()
  7.  * 
  8.  * 参数说明:
  9.  *
  10.  * char *lpFileName - 待判断的文件路径和名称(文件名)
  11.  *
  12.  * 返回值:
  13.  *
  14.  * BOOL - 如果指定的文件存在返回TRUE,否则返回FALSE。
  15.  * 
  16.  * 描述:
  17.  *
  18.  * 判断指定的文件是否存在
  19.  * 
  20.  * 该文件必需可以被读和写
  21.  *
  22.  ************************************************************************/
  23. BOOL IsFileExist(char *lpFileName)
  24. {
  25. CFile file;
  26. BOOL bExist = FALSE; // 文件存在是TRUE,不存在是FALSE
  27. CFileException e;
  28. // 确定指定的文件是否存在
  29. if (file.Open(lpFileName, CFile::modeReadWrite|CFile::shareDenyNone, &e))
  30. {
  31. bExist = TRUE;
  32. file.Close();
  33. }
  34. else
  35. {
  36. // 可能有其他程序正在处理此文件
  37. switch(e.m_cause)
  38. {
  39. case CFileException::tooManyOpenFiles:
  40. case CFileException::accessDenied:
  41. case CFileException::sharingViolation:
  42. case CFileException::lockViolation:
  43. return TRUE;
  44. case CFileException::fileNotFound:
  45. case CFileException::badPath:
  46. case CFileException::invalidFile:
  47. case CFileException::hardIO:
  48. default:
  49. return FALSE;
  50. }
  51. }
  52. return bExist;
  53. }
  54. // 判断标准图像的位格式
  55. DESFORMAT _get_desformat(LPINFOSTR pInfo)
  56. {
  57. ASSERT(pInfo);
  58. // ASSERT(pInfo->state >= PKST_PASSVER);
  59. ASSERT(pInfo->sDIBInfo.bmi.biPlanes == 1);
  60. DESFORMAT result;
  61. switch(pInfo->sDIBInfo.bmi.biBitCount)
  62. {
  63. case 32:
  64. /******************************************************
  65. 32位掩码示意图
  66.     高               ->                 低
  67. 0000 0000   0000 0000   0000 0000   0000 0000  888格式
  68.             1111 1111  ------------------------R
  69.                         1111 1111 -------------G
  70.                                     1111 1111--B
  71. * Win95 系统只支持这一种格式
  72. ******************************************************/
  73. if (pInfo->sDIBInfo.bmi.biCompression == BI_RGB)
  74. {
  75. result = DF_32;
  76. break;
  77. }
  78. if ((pInfo->sDIBInfo.rmask == 0xff0000)&&
  79. (pInfo->sDIBInfo.gmask == 0xff00)&&
  80. (pInfo->sDIBInfo.bmask == 0xff))
  81. result = DF_32;
  82. else
  83. {
  84. ASSERT(FALSE); // 只支持888格式
  85. result = DF_NULL;
  86. }
  87. break;
  88. case 24:
  89. result = DF_24;
  90. break;
  91. case 16:
  92. /*******************************************
  93. 16位掩码示意图
  94.   高字节      低字节
  95. 0000 0000   0000 0000 
  96.    1 1111--B // 555格式
  97.    11 111 -------G
  98.  111 11  --------------R
  99. 0
  100.    1 1111--B // 565格式
  101.   111   111 -------G
  102. 1111 1   --------------R
  103. * Win95 系统只支持以上两种格式
  104. *******************************************/
  105. if (pInfo->sDIBInfo.bmi.biCompression == BI_RGB)
  106. {
  107. result = DF_16_555;
  108. break;
  109. }
  110. if ((pInfo->sDIBInfo.rmask == 0x7c00)&&
  111. (pInfo->sDIBInfo.gmask == 0x3e0)&&
  112. (pInfo->sDIBInfo.bmask == 0x1f))
  113. result = DF_16_555;
  114. else if ((pInfo->sDIBInfo.rmask == 0xf800)&&
  115. (pInfo->sDIBInfo.gmask == 0x7e0)&&
  116. (pInfo->sDIBInfo.bmask == 0x1f))
  117. result = DF_16_565;
  118. else
  119. result = DF_NULL;
  120. break;
  121. default:
  122. ASSERT(FALSE); // 不接受其它格式
  123. result = DF_NULL;
  124. break;
  125. }
  126. return result;
  127. }