base
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
// dibpal.cpp
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "dib256.h"
|
||||
#include "dibpal.h"
|
||||
|
||||
CBmpPalette::CBmpPalette( CDIBitmap* pBmp )
|
||||
{
|
||||
ASSERT( pBmp );
|
||||
int cPaletteEntries = pBmp->GetPalEntries();
|
||||
int cPalette = sizeof(LOGPALETTE) +
|
||||
sizeof(PALETTEENTRY) * cPaletteEntries;
|
||||
// Since the LOGPALETTE structure is open-ended, you
|
||||
// must dynamically allocate it, rather than using one
|
||||
// off the stack.
|
||||
LOGPALETTE* pPal = (LOGPALETTE*)new BYTE[cPalette];
|
||||
RGBQUAD* pColorTab = pBmp->GetColorTablePtr();
|
||||
pPal->palVersion = 0x300;
|
||||
pPal->palNumEntries = cPaletteEntries;
|
||||
// Roll through the color table, and add each color to
|
||||
// the logical palette.
|
||||
for( int ndx = 0; ndx < cPaletteEntries; ndx++ )
|
||||
{
|
||||
pPal->palPalEntry[ndx].peRed = pColorTab[ndx].rgbRed;
|
||||
pPal->palPalEntry[ndx].peGreen = pColorTab[ndx].rgbGreen;
|
||||
pPal->palPalEntry[ndx].peBlue = pColorTab[ndx].rgbBlue;
|
||||
pPal->palPalEntry[ndx].peFlags = NULL;
|
||||
}
|
||||
VERIFY( CreatePalette( pPal ) );
|
||||
delete [] (BYTE*)pPal;
|
||||
}
|
||||
Reference in New Issue
Block a user