OcrBase.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "StdAfx.h"
  2. #include "OcrBase.h"
  3. OcrBase::OcrBase()
  4. {
  5. m_pBits = NULL;
  6. m_LimitedSize.cx = 0;
  7. m_LimitedSize.cy = 0;
  8. m_PixesCount = 0;
  9. }
  10. OcrBase::OcrBase(SIZE size)
  11. {
  12. m_LimitedSize = size;
  13. m_PixesCount = size.cx*size.cy;
  14. m_pBits = new BYTE[size.cx*size.cy*sizeof(OCRCOLOR)];
  15. }
  16. OcrBase::OcrBase(PBYTE pBits,SIZE size)
  17. {
  18. m_LimitedSize = size;
  19. m_PixesCount = size.cx*size.cy;
  20. m_pBits = new BYTE[size.cx*size.cy*sizeof(OCRCOLOR)];
  21. memcpy(m_pBits,pBits,size.cx*size.cy*sizeof(OCRCOLOR));
  22. }
  23. OcrBase::~OcrBase(void)
  24. {
  25. delete []m_pBits;
  26. }
  27. BOOL RectContainPt(RECT Area,POINT Pt)
  28. {
  29. if(Pt.x > Area.right || Pt.x < Area.left || Pt.y > Area.bottom || Pt.y < Area.top)
  30. {
  31. return FALSE;
  32. }
  33. return TRUE;
  34. }
  35. BOOL CheckTwoColors(OCRCOLOR color1,OCRCOLOR color2,OCRCOLOR diff)
  36. {
  37. short X1;
  38. short X2;
  39. short D1;
  40. short DH;
  41. short DL;
  42. X1 = (short)GetRValue(color1);
  43. X2 = (short)GetRValue(color2);
  44. D1 = (short)GetRValue(diff);
  45. DH = X1 + D1;
  46. DL = X1 - D1;
  47. if(X2 < DL || X2 > DH)
  48. {
  49. return FALSE;
  50. }
  51. X1 = (short)GetGValue(color1);
  52. X2 = (short)GetGValue(color2);
  53. D1 = (short)GetGValue(diff);
  54. DH = X1 + D1;
  55. DL = X1 - D1;
  56. if(X2 < DL || X2 > DH)
  57. {
  58. return FALSE;
  59. }
  60. X1 = (short)GetBValue(color1);
  61. X2 = (short)GetBValue(color2);
  62. D1 = (short)GetBValue(diff);
  63. DH = X1 + D1;
  64. DL = X1 - D1;
  65. if(X2 < DL || X2 > DH)
  66. {
  67. return FALSE;
  68. }
  69. return TRUE;
  70. }