forked from Mirrors/wine-wine
gdi32: Use the bitmap part of the DIBSECTION structure for the DDB object information.
parent
e896af4065
commit
71ea68b657
|
@ -71,13 +71,13 @@ BOOL nulldrv_CopyBitmap( HBITMAP src, HBITMAP dst )
|
||||||
BITMAPOBJ *src_bmp = GDI_GetObjPtr( src, OBJ_BITMAP );
|
BITMAPOBJ *src_bmp = GDI_GetObjPtr( src, OBJ_BITMAP );
|
||||||
|
|
||||||
if (!src_bmp) return FALSE;
|
if (!src_bmp) return FALSE;
|
||||||
if (src_bmp->bitmap.bmBits)
|
if (src_bmp->dib.dsBm.bmBits)
|
||||||
{
|
{
|
||||||
BITMAPOBJ *dst_bmp = GDI_GetObjPtr( dst, OBJ_BITMAP );
|
BITMAPOBJ *dst_bmp = GDI_GetObjPtr( dst, OBJ_BITMAP );
|
||||||
int stride = get_dib_stride( dst_bmp->bitmap.bmWidth, dst_bmp->bitmap.bmBitsPixel );
|
int stride = get_dib_stride( dst_bmp->dib.dsBm.bmWidth, dst_bmp->dib.dsBm.bmBitsPixel );
|
||||||
dst_bmp->bitmap.bmBits = HeapAlloc( GetProcessHeap(), 0, dst_bmp->bitmap.bmHeight * stride );
|
dst_bmp->dib.dsBm.bmBits = HeapAlloc( GetProcessHeap(), 0, dst_bmp->dib.dsBm.bmHeight * stride );
|
||||||
if (dst_bmp->bitmap.bmBits)
|
if (dst_bmp->dib.dsBm.bmBits)
|
||||||
memcpy( dst_bmp->bitmap.bmBits, src_bmp->bitmap.bmBits, dst_bmp->bitmap.bmHeight * stride );
|
memcpy( dst_bmp->dib.dsBm.bmBits, src_bmp->dib.dsBm.bmBits, dst_bmp->dib.dsBm.bmHeight * stride );
|
||||||
else
|
else
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
GDI_ReleaseObj( dst );
|
GDI_ReleaseObj( dst );
|
||||||
|
@ -293,8 +293,8 @@ HBITMAP WINAPI CreateBitmapIndirect( const BITMAP *bmp )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bmpobj->bitmap = bm;
|
bmpobj->dib.dsBm = bm;
|
||||||
bmpobj->bitmap.bmBits = NULL;
|
bmpobj->dib.dsBm.bmBits = NULL;
|
||||||
bmpobj->funcs = &null_driver;
|
bmpobj->funcs = &null_driver;
|
||||||
|
|
||||||
if (!(hbitmap = alloc_gdi_handle( &bmpobj->header, OBJ_BITMAP, &bitmap_funcs )))
|
if (!(hbitmap = alloc_gdi_handle( &bmpobj->header, OBJ_BITMAP, &bitmap_funcs )))
|
||||||
|
@ -336,14 +336,14 @@ LONG WINAPI GetBitmapBits(
|
||||||
|
|
||||||
if (!bmp) return 0;
|
if (!bmp) return 0;
|
||||||
|
|
||||||
dst_stride = get_bitmap_stride( bmp->bitmap.bmWidth, bmp->bitmap.bmBitsPixel );
|
dst_stride = get_bitmap_stride( bmp->dib.dsBm.bmWidth, bmp->dib.dsBm.bmBitsPixel );
|
||||||
ret = max = dst_stride * bmp->bitmap.bmHeight;
|
ret = max = dst_stride * bmp->dib.dsBm.bmHeight;
|
||||||
if (!bits) goto done;
|
if (!bits) goto done;
|
||||||
if (count > max) count = max;
|
if (count > max) count = max;
|
||||||
ret = count;
|
ret = count;
|
||||||
|
|
||||||
src.visrect.left = 0;
|
src.visrect.left = 0;
|
||||||
src.visrect.right = bmp->bitmap.bmWidth;
|
src.visrect.right = bmp->dib.dsBm.bmWidth;
|
||||||
src.visrect.top = 0;
|
src.visrect.top = 0;
|
||||||
src.visrect.bottom = (count + dst_stride - 1) / dst_stride;
|
src.visrect.bottom = (count + dst_stride - 1) / dst_stride;
|
||||||
src.x = src.y = 0;
|
src.x = src.y = 0;
|
||||||
|
@ -415,23 +415,23 @@ LONG WINAPI SetBitmapBits(
|
||||||
count = -count;
|
count = -count;
|
||||||
}
|
}
|
||||||
|
|
||||||
src_stride = get_bitmap_stride( bmp->bitmap.bmWidth, bmp->bitmap.bmBitsPixel );
|
src_stride = get_bitmap_stride( bmp->dib.dsBm.bmWidth, bmp->dib.dsBm.bmBitsPixel );
|
||||||
count = min( count, src_stride * bmp->bitmap.bmHeight );
|
count = min( count, src_stride * bmp->dib.dsBm.bmHeight );
|
||||||
|
|
||||||
dst_stride = get_dib_stride( bmp->bitmap.bmWidth, bmp->bitmap.bmBitsPixel );
|
dst_stride = get_dib_stride( bmp->dib.dsBm.bmWidth, bmp->dib.dsBm.bmBitsPixel );
|
||||||
|
|
||||||
src.visrect.left = src.x = 0;
|
src.visrect.left = src.x = 0;
|
||||||
src.visrect.top = src.y = 0;
|
src.visrect.top = src.y = 0;
|
||||||
src.visrect.right = src.width = bmp->bitmap.bmWidth;
|
src.visrect.right = src.width = bmp->dib.dsBm.bmWidth;
|
||||||
src.visrect.bottom = src.height = (count + src_stride - 1 ) / src_stride;
|
src.visrect.bottom = src.height = (count + src_stride - 1 ) / src_stride;
|
||||||
dst = src;
|
dst = src;
|
||||||
|
|
||||||
if (count % src_stride)
|
if (count % src_stride)
|
||||||
{
|
{
|
||||||
HRGN last_row;
|
HRGN last_row;
|
||||||
int extra_pixels = ((count % src_stride) << 3) / bmp->bitmap.bmBitsPixel;
|
int extra_pixels = ((count % src_stride) << 3) / bmp->dib.dsBm.bmBitsPixel;
|
||||||
|
|
||||||
if ((count % src_stride << 3) % bmp->bitmap.bmBitsPixel)
|
if ((count % src_stride << 3) % bmp->dib.dsBm.bmBitsPixel)
|
||||||
FIXME( "Unhandled partial pixel\n" );
|
FIXME( "Unhandled partial pixel\n" );
|
||||||
clip = CreateRectRgn( src.visrect.left, src.visrect.top,
|
clip = CreateRectRgn( src.visrect.left, src.visrect.top,
|
||||||
src.visrect.right, src.visrect.bottom - 1 );
|
src.visrect.right, src.visrect.bottom - 1 );
|
||||||
|
@ -442,8 +442,8 @@ LONG WINAPI SetBitmapBits(
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("(%p, %d, %p) %dx%d %d bpp fetched height: %d\n",
|
TRACE("(%p, %d, %p) %dx%d %d bpp fetched height: %d\n",
|
||||||
hbitmap, count, bits, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight,
|
hbitmap, count, bits, bmp->dib.dsBm.bmWidth, bmp->dib.dsBm.bmHeight,
|
||||||
bmp->bitmap.bmBitsPixel, src.height );
|
bmp->dib.dsBm.bmBitsPixel, src.height );
|
||||||
|
|
||||||
if (src_stride == dst_stride)
|
if (src_stride == dst_stride)
|
||||||
{
|
{
|
||||||
|
@ -469,7 +469,7 @@ LONG WINAPI SetBitmapBits(
|
||||||
/* query the color info */
|
/* query the color info */
|
||||||
info->bmiHeader.biSize = sizeof(info->bmiHeader);
|
info->bmiHeader.biSize = sizeof(info->bmiHeader);
|
||||||
info->bmiHeader.biPlanes = 1;
|
info->bmiHeader.biPlanes = 1;
|
||||||
info->bmiHeader.biBitCount = bmp->bitmap.bmBitsPixel;
|
info->bmiHeader.biBitCount = bmp->dib.dsBm.bmBitsPixel;
|
||||||
info->bmiHeader.biCompression = BI_RGB;
|
info->bmiHeader.biCompression = BI_RGB;
|
||||||
info->bmiHeader.biXPelsPerMeter = 0;
|
info->bmiHeader.biXPelsPerMeter = 0;
|
||||||
info->bmiHeader.biYPelsPerMeter = 0;
|
info->bmiHeader.biYPelsPerMeter = 0;
|
||||||
|
@ -482,7 +482,7 @@ LONG WINAPI SetBitmapBits(
|
||||||
|
|
||||||
if (!err || err == ERROR_BAD_FORMAT)
|
if (!err || err == ERROR_BAD_FORMAT)
|
||||||
{
|
{
|
||||||
info->bmiHeader.biWidth = bmp->bitmap.bmWidth;
|
info->bmiHeader.biWidth = bmp->dib.dsBm.bmWidth;
|
||||||
info->bmiHeader.biHeight = -dst.height;
|
info->bmiHeader.biHeight = -dst.height;
|
||||||
info->bmiHeader.biSizeImage = dst.height * dst_stride;
|
info->bmiHeader.biSizeImage = dst.height * dst_stride;
|
||||||
err = bmp->funcs->pPutImage( NULL, hbitmap, clip, info, &src_bits, &src, &dst, SRCCOPY );
|
err = bmp->funcs->pPutImage( NULL, hbitmap, clip, info, &src_bits, &src, &dst, SRCCOPY );
|
||||||
|
@ -506,24 +506,24 @@ static void set_initial_bitmap_bits( HBITMAP hbitmap, BITMAPOBJ *bmp )
|
||||||
struct gdi_image_bits bits;
|
struct gdi_image_bits bits;
|
||||||
struct bitblt_coords src, dst;
|
struct bitblt_coords src, dst;
|
||||||
|
|
||||||
if (!bmp->bitmap.bmBits) return;
|
if (!bmp->dib.dsBm.bmBits) return;
|
||||||
if (bmp->funcs->pPutImage == nulldrv_PutImage) return;
|
if (bmp->funcs->pPutImage == nulldrv_PutImage) return;
|
||||||
|
|
||||||
get_ddb_bitmapinfo( bmp, src_info );
|
get_ddb_bitmapinfo( bmp, src_info );
|
||||||
|
|
||||||
bits.ptr = bmp->bitmap.bmBits;
|
bits.ptr = bmp->dib.dsBm.bmBits;
|
||||||
bits.is_copy = FALSE;
|
bits.is_copy = FALSE;
|
||||||
bits.free = NULL;
|
bits.free = NULL;
|
||||||
bits.param = NULL;
|
bits.param = NULL;
|
||||||
|
|
||||||
src.x = 0;
|
src.x = 0;
|
||||||
src.y = 0;
|
src.y = 0;
|
||||||
src.width = bmp->bitmap.bmWidth;
|
src.width = bmp->dib.dsBm.bmWidth;
|
||||||
src.height = bmp->bitmap.bmHeight;
|
src.height = bmp->dib.dsBm.bmHeight;
|
||||||
src.visrect.left = 0;
|
src.visrect.left = 0;
|
||||||
src.visrect.top = 0;
|
src.visrect.top = 0;
|
||||||
src.visrect.right = bmp->bitmap.bmWidth;
|
src.visrect.right = bmp->dib.dsBm.bmWidth;
|
||||||
src.visrect.bottom = bmp->bitmap.bmHeight;
|
src.visrect.bottom = bmp->dib.dsBm.bmHeight;
|
||||||
dst = src;
|
dst = src;
|
||||||
|
|
||||||
copy_bitmapinfo( dst_info, src_info );
|
copy_bitmapinfo( dst_info, src_info );
|
||||||
|
@ -651,8 +651,8 @@ static HGDIOBJ BITMAP_SelectObject( HGDIOBJ handle, HDC hdc )
|
||||||
dc->dirty = 0;
|
dc->dirty = 0;
|
||||||
dc->vis_rect.left = 0;
|
dc->vis_rect.left = 0;
|
||||||
dc->vis_rect.top = 0;
|
dc->vis_rect.top = 0;
|
||||||
dc->vis_rect.right = bitmap->bitmap.bmWidth;
|
dc->vis_rect.right = bitmap->dib.dsBm.bmWidth;
|
||||||
dc->vis_rect.bottom = bitmap->bitmap.bmHeight;
|
dc->vis_rect.bottom = bitmap->dib.dsBm.bmHeight;
|
||||||
GDI_ReleaseObj( handle );
|
GDI_ReleaseObj( handle );
|
||||||
DC_InitDC( dc );
|
DC_InitDC( dc );
|
||||||
GDI_dec_ref_count( ret );
|
GDI_dec_ref_count( ret );
|
||||||
|
@ -688,7 +688,7 @@ static BOOL BITMAP_DeleteObject( HGDIOBJ handle )
|
||||||
|
|
||||||
if (!(bmp = free_gdi_handle( handle ))) return FALSE;
|
if (!(bmp = free_gdi_handle( handle ))) return FALSE;
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, bmp->bitmap.bmBits );
|
HeapFree( GetProcessHeap(), 0, bmp->dib.dsBm.bmBits );
|
||||||
return HeapFree( GetProcessHeap(), 0, bmp );
|
return HeapFree( GetProcessHeap(), 0, bmp );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -706,8 +706,9 @@ static INT BITMAP_GetObject( HGDIOBJ handle, INT count, LPVOID buffer )
|
||||||
if (!buffer) ret = sizeof(BITMAP);
|
if (!buffer) ret = sizeof(BITMAP);
|
||||||
else if (count >= sizeof(BITMAP))
|
else if (count >= sizeof(BITMAP))
|
||||||
{
|
{
|
||||||
memcpy( buffer, &bmp->bitmap, sizeof(BITMAP) );
|
BITMAP *bitmap = buffer;
|
||||||
((BITMAP *) buffer)->bmBits = NULL;
|
*bitmap = bmp->dib.dsBm;
|
||||||
|
bitmap->bmBits = NULL;
|
||||||
ret = sizeof(BITMAP);
|
ret = sizeof(BITMAP);
|
||||||
}
|
}
|
||||||
GDI_ReleaseObj( handle );
|
GDI_ReleaseObj( handle );
|
||||||
|
|
|
@ -73,8 +73,8 @@ void cache_pattern_bits( PHYSDEV physdev, struct brush_pattern *pattern )
|
||||||
|
|
||||||
src.visrect.left = src.x = 0;
|
src.visrect.left = src.x = 0;
|
||||||
src.visrect.top = src.y = 0;
|
src.visrect.top = src.y = 0;
|
||||||
src.visrect.right = src.width = bmp->bitmap.bmWidth;
|
src.visrect.right = src.width = bmp->dib.dsBm.bmWidth;
|
||||||
src.visrect.bottom = src.height = bmp->bitmap.bmHeight;
|
src.visrect.bottom = src.height = bmp->dib.dsBm.bmHeight;
|
||||||
if (bmp->funcs->pGetImage( NULL, pattern->bitmap, info, &bits, &src ))
|
if (bmp->funcs->pGetImage( NULL, pattern->bitmap, info, &bits, &src ))
|
||||||
{
|
{
|
||||||
HeapFree( GetProcessHeap(), 0, info );
|
HeapFree( GetProcessHeap(), 0, info );
|
||||||
|
@ -101,8 +101,8 @@ static BOOL copy_bitmap( struct brush_pattern *brush, HBITMAP bitmap )
|
||||||
|
|
||||||
if (!is_bitmapobj_dib( bmp ))
|
if (!is_bitmapobj_dib( bmp ))
|
||||||
{
|
{
|
||||||
if ((brush->bitmap = CreateBitmap( bmp->bitmap.bmWidth, bmp->bitmap.bmHeight,
|
if ((brush->bitmap = CreateBitmap( bmp->dib.dsBm.bmWidth, bmp->dib.dsBm.bmHeight,
|
||||||
bmp->bitmap.bmPlanes, bmp->bitmap.bmBitsPixel, NULL )))
|
bmp->dib.dsBm.bmPlanes, bmp->dib.dsBm.bmBitsPixel, NULL )))
|
||||||
{
|
{
|
||||||
if (bmp->funcs->pCopyBitmap( bitmap, brush->bitmap ))
|
if (bmp->funcs->pCopyBitmap( bitmap, brush->bitmap ))
|
||||||
{
|
{
|
||||||
|
|
|
@ -693,8 +693,8 @@ INT WINAPI SetDIBits( HDC hdc, HBITMAP hbitmap, UINT startscan,
|
||||||
|
|
||||||
dst.visrect.left = 0;
|
dst.visrect.left = 0;
|
||||||
dst.visrect.top = 0;
|
dst.visrect.top = 0;
|
||||||
dst.visrect.right = bitmap->bitmap.bmWidth;
|
dst.visrect.right = bitmap->dib.dsBm.bmWidth;
|
||||||
dst.visrect.bottom = bitmap->bitmap.bmHeight;
|
dst.visrect.bottom = bitmap->dib.dsBm.bmHeight;
|
||||||
|
|
||||||
src.visrect.left = 0;
|
src.visrect.left = 0;
|
||||||
src.visrect.top = 0;
|
src.visrect.top = 0;
|
||||||
|
@ -961,10 +961,10 @@ static int fill_query_info( BITMAPINFO *info, BITMAPOBJ *bmp )
|
||||||
BITMAPINFOHEADER header;
|
BITMAPINFOHEADER header;
|
||||||
|
|
||||||
header.biSize = info->bmiHeader.biSize; /* Ensure we don't overwrite the original size when we copy back */
|
header.biSize = info->bmiHeader.biSize; /* Ensure we don't overwrite the original size when we copy back */
|
||||||
header.biWidth = bmp->bitmap.bmWidth;
|
header.biWidth = bmp->dib.dsBm.bmWidth;
|
||||||
header.biHeight = bmp->bitmap.bmHeight;
|
header.biHeight = bmp->dib.dsBm.bmHeight;
|
||||||
header.biPlanes = 1;
|
header.biPlanes = 1;
|
||||||
header.biBitCount = bmp->bitmap.bmBitsPixel;
|
header.biBitCount = bmp->dib.dsBm.bmBitsPixel;
|
||||||
|
|
||||||
switch (header.biBitCount)
|
switch (header.biBitCount)
|
||||||
{
|
{
|
||||||
|
@ -995,7 +995,7 @@ static int fill_query_info( BITMAPINFO *info, BITMAPOBJ *bmp )
|
||||||
else
|
else
|
||||||
info->bmiHeader = header;
|
info->bmiHeader = header;
|
||||||
|
|
||||||
return abs(bmp->bitmap.bmHeight);
|
return bmp->dib.dsBm.bmHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1146,10 +1146,10 @@ void fill_default_color_table( BITMAPINFO *info )
|
||||||
void get_ddb_bitmapinfo( BITMAPOBJ *bmp, BITMAPINFO *info )
|
void get_ddb_bitmapinfo( BITMAPOBJ *bmp, BITMAPINFO *info )
|
||||||
{
|
{
|
||||||
info->bmiHeader.biSize = sizeof(info->bmiHeader);
|
info->bmiHeader.biSize = sizeof(info->bmiHeader);
|
||||||
info->bmiHeader.biWidth = bmp->bitmap.bmWidth;
|
info->bmiHeader.biWidth = bmp->dib.dsBm.bmWidth;
|
||||||
info->bmiHeader.biHeight = -bmp->bitmap.bmHeight;
|
info->bmiHeader.biHeight = -bmp->dib.dsBm.bmHeight;
|
||||||
info->bmiHeader.biPlanes = 1;
|
info->bmiHeader.biPlanes = 1;
|
||||||
info->bmiHeader.biBitCount = bmp->bitmap.bmBitsPixel;
|
info->bmiHeader.biBitCount = bmp->dib.dsBm.bmBitsPixel;
|
||||||
info->bmiHeader.biCompression = BI_RGB;
|
info->bmiHeader.biCompression = BI_RGB;
|
||||||
info->bmiHeader.biXPelsPerMeter = 0;
|
info->bmiHeader.biXPelsPerMeter = 0;
|
||||||
info->bmiHeader.biYPelsPerMeter = 0;
|
info->bmiHeader.biYPelsPerMeter = 0;
|
||||||
|
@ -1229,8 +1229,8 @@ INT WINAPI GetDIBits(
|
||||||
|
|
||||||
src.visrect.left = 0;
|
src.visrect.left = 0;
|
||||||
src.visrect.top = 0;
|
src.visrect.top = 0;
|
||||||
src.visrect.right = bmp->bitmap.bmWidth;
|
src.visrect.right = bmp->dib.dsBm.bmWidth;
|
||||||
src.visrect.bottom = bmp->bitmap.bmHeight;
|
src.visrect.bottom = bmp->dib.dsBm.bmHeight;
|
||||||
|
|
||||||
dst.visrect.left = 0;
|
dst.visrect.left = 0;
|
||||||
dst.visrect.top = 0;
|
dst.visrect.top = 0;
|
||||||
|
@ -1548,10 +1548,6 @@ HBITMAP WINAPI CreateDIBSection(HDC hdc, CONST BITMAPINFO *bmi, UINT usage,
|
||||||
|
|
||||||
if (!bmp->dib.dsBm.bmBits) goto error;
|
if (!bmp->dib.dsBm.bmBits) goto error;
|
||||||
|
|
||||||
bmp->bitmap = bmp->dib.dsBm;
|
|
||||||
bmp->bitmap.bmWidthBytes = get_bitmap_stride( info->bmiHeader.biWidth, info->bmiHeader.biBitCount );
|
|
||||||
bmp->bitmap.bmBits = NULL;
|
|
||||||
|
|
||||||
if (!(ret = alloc_gdi_handle( &bmp->header, OBJ_BITMAP, &dib_funcs ))) goto error;
|
if (!(ret = alloc_gdi_handle( &bmp->header, OBJ_BITMAP, &dib_funcs ))) goto error;
|
||||||
|
|
||||||
if (bits) *bits = bmp->dib.dsBm.bmBits;
|
if (bits) *bits = bmp->dib.dsBm.bmBits;
|
||||||
|
@ -1626,8 +1622,8 @@ static HGDIOBJ DIB_SelectObject( HGDIOBJ handle, HDC hdc )
|
||||||
dc->dirty = 0;
|
dc->dirty = 0;
|
||||||
dc->vis_rect.left = 0;
|
dc->vis_rect.left = 0;
|
||||||
dc->vis_rect.top = 0;
|
dc->vis_rect.top = 0;
|
||||||
dc->vis_rect.right = bitmap->bitmap.bmWidth;
|
dc->vis_rect.right = bitmap->dib.dsBm.bmWidth;
|
||||||
dc->vis_rect.bottom = bitmap->bitmap.bmHeight;
|
dc->vis_rect.bottom = bitmap->dib.dsBm.bmHeight;
|
||||||
GDI_ReleaseObj( handle );
|
GDI_ReleaseObj( handle );
|
||||||
DC_InitDC( dc );
|
DC_InitDC( dc );
|
||||||
GDI_dec_ref_count( ret );
|
GDI_dec_ref_count( ret );
|
||||||
|
|
|
@ -165,14 +165,14 @@ BOOL init_dib_info_from_bitmapobj(dib_info *dib, BITMAPOBJ *bmp, enum dib_info_f
|
||||||
BITMAPINFO info;
|
BITMAPINFO info;
|
||||||
|
|
||||||
get_ddb_bitmapinfo( bmp, &info );
|
get_ddb_bitmapinfo( bmp, &info );
|
||||||
if (!bmp->bitmap.bmBits)
|
if (!bmp->dib.dsBm.bmBits)
|
||||||
{
|
{
|
||||||
int width_bytes = get_dib_stride( bmp->bitmap.bmWidth, bmp->bitmap.bmBitsPixel );
|
int width_bytes = get_dib_stride( bmp->dib.dsBm.bmWidth, bmp->dib.dsBm.bmBitsPixel );
|
||||||
bmp->bitmap.bmBits = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
|
bmp->dib.dsBm.bmBits = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||||
bmp->bitmap.bmHeight * width_bytes );
|
bmp->dib.dsBm.bmHeight * width_bytes );
|
||||||
if (!bmp->bitmap.bmBits) return FALSE;
|
if (!bmp->dib.dsBm.bmBits) return FALSE;
|
||||||
}
|
}
|
||||||
init_dib_info_from_bitmapinfo( dib, &info, bmp->bitmap.bmBits, flags );
|
init_dib_info_from_bitmapinfo( dib, &info, bmp->dib.dsBm.bmBits, flags );
|
||||||
}
|
}
|
||||||
else init_dib_info( dib, &bmp->dib.dsBmih, bmp->dib.dsBitfields,
|
else init_dib_info( dib, &bmp->dib.dsBmih, bmp->dib.dsBitfields,
|
||||||
bmp->color_table, bmp->dib.dsBm.bmBits, flags );
|
bmp->color_table, bmp->dib.dsBm.bmBits, flags );
|
||||||
|
|
|
@ -174,7 +174,6 @@ static inline INT GDI_ROUND(double val)
|
||||||
typedef struct tagBITMAPOBJ
|
typedef struct tagBITMAPOBJ
|
||||||
{
|
{
|
||||||
GDIOBJHDR header;
|
GDIOBJHDR header;
|
||||||
BITMAP bitmap;
|
|
||||||
DIBSECTION dib;
|
DIBSECTION dib;
|
||||||
SIZE size; /* For SetBitmapDimension() */
|
SIZE size; /* For SetBitmapDimension() */
|
||||||
RGBQUAD *color_table; /* DIB color table if <= 8bpp (always 1 << bpp in size) */
|
RGBQUAD *color_table; /* DIB color table if <= 8bpp (always 1 << bpp in size) */
|
||||||
|
|
Loading…
Reference in New Issue