This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/samples/win/life/palette.c

37 lines
1.1 KiB
C

#include <windows.h>
#include <stdlib.h>
HPALETTE CreateDIBPalette( BITMAPINFO *info )
{
unsigned num_colours, i;
LOGPALETTE *palette;
HPALETTE palette_handle;
RGBQUAD *quads;
num_colours = info->bmiHeader.biClrUsed;
if( num_colours == 0 && info->bmiHeader.biBitCount != 24 ) {
num_colours = 1 << info->bmiHeader.biBitCount;
}
palette_handle = (HPALETTE)0;
if( num_colours ) {
palette = malloc( sizeof( LOGPALETTE ) +
num_colours * sizeof( PALETTEENTRY ) );
if( palette == NULL ) return( (HPALETTE)0 );
palette->palNumEntries = num_colours;
palette->palVersion = 0x300;
quads = &info->bmiColors[0];
for( i = 0; i < num_colours; i++ ) {
palette->palPalEntry[i].peRed = quads[i].rgbRed;
palette->palPalEntry[i].peGreen = quads[i].rgbGreen;
palette->palPalEntry[i].peBlue = quads[i].rgbBlue;
palette->palPalEntry[i].peFlags = 0;
}
palette_handle = CreatePalette( palette );
free( palette );
}
return( palette_handle );
}