homemailback

FillBitmapInfo

ファイル名window_w32.cpp

引数
BITMAPINFO* bmiビットマップのヘッダ
int width画像の幅
int height画像の高さ
int bppビット数(depth)
int origin原点の位置

8ビットイメージの場合だけ、BITMAPINFO構造体に画像サイズ、デプス、原点の位置をセット

BMP
BITMAPINFO構造体
BITMAPINFOHEADER構造体


 void  FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin )
 {
    assert( bmi && width >= 0 && height >= 0 && (bpp == 8 || bpp == 24 || bpp == 32));

    // BITMAPINFOHEADERの取得
    BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);

    memset( bmih, 0, sizeof(*bmih));
    bmih->biSize = sizeof(BITMAPINFOHEADER);
    bmih->biWidth = width;
    bmih->biHeight = origin ? abs(height) : -abs(height); // IplImageとBMPでは原点の取り方が違う
    bmih->biPlanes = 1;
    bmih->biBitCount = (unsigned short)bpp;
    bmih->biCompression = BI_RGB;

    if( bpp == 8 )
    {
        RGBQUAD* palette = bmi->bmiColors;
        int i;
        for( i = 0; i < 256; i++ )
        {
            palette[i].rgbBlue = palette[i].rgbGreen = palette[i].rgbRed = (BYTE)i;
            palette[i].rgbReserved = 0;
        }
    }
  }
 

inserted by FC2 system