Ejemplo n.º 1
0
int PackedDibGetColorTableSize (BITMAPINFO * pPackedDib)
{
     if (pPackedDib->bmiHeader.biSize == sizeof (BITMAPCOREHEADER))
          return PackedDibGetNumColors (pPackedDib) * sizeof (RGBTRIPLE) ;
     else
          return PackedDibGetNumColors (pPackedDib) * sizeof (RGBQUAD) ;
}
Ejemplo n.º 2
0
HPALETTE PackedDibCreatePalette (BITMAPINFO * pPackedDib)
{
     HPALETTE     hPalette ;
     int          i, iNumColors ;
     LOGPALETTE * plp ;
     RGBQUAD    * prgb ;

     if (0 == (iNumColors = PackedDibGetNumColors (pPackedDib)))
          return NULL ;

     plp = malloc (sizeof (LOGPALETTE) * 
                         (iNumColors - 1) * sizeof (PALETTEENTRY)) ;

     plp->palVersion    = 0x0300 ;
     plp->palNumEntries = iNumColors ;

     for (i = 0 ; i < iNumColors ; i++)
     {
          prgb = PackedDibGetColorTableEntry (pPackedDib, i) ;

          plp->palPalEntry[i].peRed   = prgb->rgbRed ;
          plp->palPalEntry[i].peGreen = prgb->rgbGreen ;
          plp->palPalEntry[i].peBlue  = prgb->rgbBlue ;
          plp->palPalEntry[i].peFlags = 0 ;
     }

     hPalette = CreatePalette (plp) ;
     free (plp) ;

     return hPalette ;
}
Ejemplo n.º 3
0
RGBQUAD * PackedDibGetColorTablePtr(BITMAPINFO * pPackedDib)
{
	if(PackedDibGetNumColors(pPackedDib) == 0)
		return 0;

	return (RGBQUAD *) (((BYTE *) pPackedDib) + PackedDibGetInfoHeaderSize(pPackedDib));
}
Ejemplo n.º 4
0
RGBQUAD * PackedDibGetColorTableEntry(BITMAPINFO * pPackedDib, int i) {
	
	if (PackedDibGetNumColors (pPackedDib) == 0)
		return NULL;

	if (pPackedDib->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
		return (RGBQUAD *) (((RGBTRIPLE *) PackedDibGetColorTablePtr (pPackedDib)) + 1);
	else
		return PackedDibGetColorTablePtr(pPackedDib) + i;
}