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

图形图象

开发平台:

Visual C++

  1. // 未完成文件
  2. #include "stdafx.h"
  3. #include "BogusMulticolor.h"
  4. #include "AdjustContrast.h"
  5. #include "System.h"
  6. void _fnSPE_BogusRed(BYTE *pRed)
  7. {
  8. if(*pRed>=0 && *pRed<=63)
  9. {
  10. *pRed=0;
  11. }
  12. else if(*pRed>=64 && *pRed<=127)
  13. {
  14. *pRed=0;
  15. }
  16. else if(*pRed>=128 && *pRed<=191)
  17. {
  18. *pRed=*pRed*4-510;
  19. }
  20. else if(*pRed>=192 && *pRed<=255)
  21. {
  22. *pRed=255;
  23. }
  24. }
  25. void _fnSPE_BogusGreen(BYTE *pGrn)
  26. {
  27. if(*pGrn>=0 && *pGrn<=63)
  28. {
  29. *pGrn=254-4*(*pGrn);
  30. }
  31. else if(*pGrn>=64 && *pGrn<=127)
  32. {
  33. *pGrn=4*(*pGrn)-254;
  34. }
  35. else if(*pGrn>=128 && *pGrn<=191)
  36. {
  37. *pGrn=255;
  38. }
  39. else if(*pGrn>=192 && *pGrn<=255)
  40. {
  41. *pGrn=1022-4*(*pGrn);
  42. }
  43. }
  44. void _fnSPE_BogusBlue(BYTE *pBlu)
  45. {
  46. if(*pBlu>=0 && *pBlu<=63)
  47. {
  48. *pBlu=255;
  49. }
  50. else if(*pBlu>=64 && *pBlu<=127)
  51. {
  52. *pBlu=510-4*(*pBlu);
  53. }
  54. else if(*pBlu>=128 && *pBlu<=191)
  55. {
  56. *pBlu=0;
  57. }
  58. else if(*pBlu>=192 && *pBlu<=255)
  59. {
  60. *pBlu=0;
  61. }
  62. }
  63. void _fnSPE_BogusMulticolor(BYTE *pRed,BYTE *pGrn,BYTE *pBlu)
  64. {
  65. _fnSPE_BogusRed(pRed);
  66. _fnSPE_BogusGreen(pGrn);
  67. _fnSPE_BogusBlue(pBlu);
  68. }
  69. // 伪彩色调节处理函数
  70. BOOL _fnCOM_BogusMulticolor(LPIMAGEPROCSTR lpInfo)
  71. {
  72. static HANDLE hCursor;
  73. hCursor=GetCursor();
  74. SetCursor(LoadCursor(NULL, IDC_WAIT));
  75. CreatMemImage(lpProcInfo);
  76. CopyMemory(lpInfo->_pdbdata ,lpInfo->_psbdata ,lpInfo->sImageInfo.width*lpInfo->sImageInfo.height*(lpInfo->sImageInfo.bitperpix/8));
  77. LPBYTE pRed=(LPBYTE)lpInfo->_pdbdata;
  78. LPBYTE pGrn=pRed+1, pBlu=pRed+2;
  79. WORD skip=lpInfo->sImageInfo.bitperpix/8;
  80. UINT i,j;
  81. for(i=0;i<(UINT)lpInfo->sImageInfo.width;i++)
  82. {
  83. for(j=0;j<(UINT)lpInfo->sImageInfo.height;j++)
  84. {
  85. _fnSPE_BogusMulticolor(pRed,pGrn,pBlu);
  86. pRed+=skip;
  87.   pGrn+=skip;
  88.         pBlu+=skip;  
  89. }
  90. }
  91. SetCursor((HICON)hCursor);
  92. return PROCERR_SUCCESS;
  93. }