www.pudn.com > aa.rar > CPixelRGB8.cpp


// 
// CPixelRGB8.cpp 
// 
 
#include  
#include  
#include "CBasePixel.h" 
#include "CPixelRGB8.h" 
 
////////////////////////////////////////////////////////////////////// 
CPixelRGB8::CPixelRGB8() : 
m_nPaletteEntry(10) 
{ 
} 
 
CPixelRGB8::~CPixelRGB8() 
{ 
} 
 
void CPixelRGB8::ConvertByCover(unsigned char * inPixel) 
{ 
	if (inPixel) 
	{ 
		*inPixel = m_nPaletteEntry; 
	} 
} 
 
void CPixelRGB8::SideEffectColorChanged(void) 
{ 
	CBasePixel::SideEffectColorChanged(); 
	SetPaletteEntries(); 
} 
 
// 
// SetPaletteEntries 
// 
// If we set our palette to the current system palette + the colours we want 
// the system has the least amount of work to do whilst plotting our images, 
// if this stream is rendered to the current display. The first non reserved 
// palette slot is at m_Palette[10], so put our first colour there. Also 
// guarantees that black is always represented by zero in the frame buffer 
// 
bool CPixelRGB8::SetPaletteEntries(void) 
{ 
	PALETTEENTRY    m_Palette[256]; 
 
	HDC  hdc = GetDC(NULL);	// hdc for the current display. 
	UINT res = GetSystemPaletteEntries(hdc, 0, iPALETTE_COLORS, (LPPALETTEENTRY) &m_Palette); 
	ReleaseDC(NULL, hdc); 
 
	if (res != 0)  
	{ 
		m_Palette[m_nPaletteEntry].peBlue  = m_TargetB; 
		m_Palette[m_nPaletteEntry].peGreen = m_TargetG; 
		m_Palette[m_nPaletteEntry].peRed   = m_TargetR; 
		m_Palette[m_nPaletteEntry].peFlags = 0; 
		return true; 
	} 
 
	return false;	 
} // SetPaletteEntries