Графика для Windows средствами DirectDraw


Функция InstallPalette()


С помощью файлового формата AVI и VFWAPI можно получить палитру, оптимально подходящую для просмотра видеоролика. Функция InstallPalette() извлекает необходимые данные и использует их для конструирования палитры DirectDraw. Функция InstallPalette() выглядит так:


BOOL AviPlayWin::InstallPalette() { ICDecompressGetPalette( decomp, srcfmt, dstfmt );

PALETTEENTRY pe[256]; LPBITMAPINFO info=(LPBITMAPINFO)dstfmt; for (int i=0; i<256; i++) { pe[i].peRed = info->bmiColors[i].rgbRed; pe[i].peGreen = info->bmiColors[i].rgbGreen; pe[i].peBlue = info->bmiColors[i].rgbBlue; pe[i].peFlags = 0; }

if (avipal) avipal->Release(); ddraw2->CreatePalette( DDPCAPS_8BIT, pe, &avipal, 0 );

primsurf->SetPalette( avipal );

return TRUE; }


Функция ICDecompressGetPalette()

получает данные палитры и в цикле преобразует их в формат, который мы можем использовать. Полученный массив передается при вызове функции CreatePalette() интерфейса DirectDraw. Остается лишь присоединить созданную палитру к первичной поверхности.



Содержание раздела