CPixelRGB8.cpp
上传用户:hhs829
上传日期:2022-06-17
资源大小:586k
文件大小:1k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //
  2. // CPixelRGB8.cpp
  3. //
  4. #include <streams.h>
  5. #include <olectl.h>
  6. #include "CBasePixel.h"
  7. #include "CPixelRGB8.h"
  8. //////////////////////////////////////////////////////////////////////
  9. CPixelRGB8::CPixelRGB8() :
  10. m_nPaletteEntry(10)
  11. {
  12. }
  13. CPixelRGB8::~CPixelRGB8()
  14. {
  15. }
  16. void CPixelRGB8::ConvertByCover(unsigned char * inPixel)
  17. {
  18. if (inPixel)
  19. {
  20. *inPixel = m_nPaletteEntry;
  21. }
  22. }
  23. void CPixelRGB8::SideEffectColorChanged(void)
  24. {
  25. CBasePixel::SideEffectColorChanged();
  26. SetPaletteEntries();
  27. }
  28. //
  29. // SetPaletteEntries
  30. //
  31. // If we set our palette to the current system palette + the colours we want
  32. // the system has the least amount of work to do whilst plotting our images,
  33. // if this stream is rendered to the current display. The first non reserved
  34. // palette slot is at m_Palette[10], so put our first colour there. Also
  35. // guarantees that black is always represented by zero in the frame buffer
  36. //
  37. bool CPixelRGB8::SetPaletteEntries(void)
  38. {
  39. PALETTEENTRY    m_Palette[256];
  40. HDC  hdc = GetDC(NULL); // hdc for the current display.
  41. UINT res = GetSystemPaletteEntries(hdc, 0, iPALETTE_COLORS, (LPPALETTEENTRY) &m_Palette);
  42. ReleaseDC(NULL, hdc);
  43. if (res != 0) 
  44. {
  45. m_Palette[m_nPaletteEntry].peBlue  = m_TargetB;
  46. m_Palette[m_nPaletteEntry].peGreen = m_TargetG;
  47. m_Palette[m_nPaletteEntry].peRed   = m_TargetR;
  48. m_Palette[m_nPaletteEntry].peFlags = 0;
  49. return true;
  50. }
  51. return false;
  52. } // SetPaletteEntries