mirror of
https://github.com/reactos/wine.git
synced 2025-02-12 23:58:56 +00:00
comctl32: Simplify the DIB byte width computation.
This commit is contained in:
parent
8cf6424057
commit
bd3b0e4f70
@ -2060,34 +2060,6 @@ ImageList_Merge (HIMAGELIST himl1, INT i1, HIMAGELIST himl2, INT i2,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* DIB_GetDIBWidthBytes
|
|
||||||
*
|
|
||||||
* Return the width of a DIB bitmap in bytes. DIB bitmap data is 32-bit aligned.
|
|
||||||
*/
|
|
||||||
static int DIB_GetDIBWidthBytes( int width, int depth )
|
|
||||||
{
|
|
||||||
int words;
|
|
||||||
|
|
||||||
switch(depth)
|
|
||||||
{
|
|
||||||
case 1: words = (width + 31) / 32; break;
|
|
||||||
case 4: words = (width + 7) / 8; break;
|
|
||||||
case 8: words = (width + 3) / 4; break;
|
|
||||||
case 15:
|
|
||||||
case 16: words = (width + 1) / 2; break;
|
|
||||||
case 24: words = (width * 3 + 3)/4; break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
WARN("(%d): Unsupported depth\n", depth );
|
|
||||||
/* fall through */
|
|
||||||
case 32:
|
|
||||||
words = width;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return 4 * words;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DIB_GetDIBImageBytes
|
* DIB_GetDIBImageBytes
|
||||||
*
|
*
|
||||||
@ -2095,7 +2067,7 @@ static int DIB_GetDIBWidthBytes( int width, int depth )
|
|||||||
*/
|
*/
|
||||||
static int DIB_GetDIBImageBytes( int width, int height, int depth )
|
static int DIB_GetDIBImageBytes( int width, int height, int depth )
|
||||||
{
|
{
|
||||||
return DIB_GetDIBWidthBytes( width, depth ) * abs( height );
|
return (((width * depth + 31) / 8) & ~3) * abs( height );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -738,24 +738,7 @@ static struct my_IStream Test_Stream = { { &Test_Stream_Vtbl }, 0, 0 };
|
|||||||
|
|
||||||
static INT DIB_GetWidthBytes( int width, int bpp )
|
static INT DIB_GetWidthBytes( int width, int bpp )
|
||||||
{
|
{
|
||||||
int words;
|
return ((width * bpp + 31) / 8) & ~3;
|
||||||
|
|
||||||
switch (bpp)
|
|
||||||
{
|
|
||||||
case 1: words = (width + 31) / 32; break;
|
|
||||||
case 4: words = (width + 7) / 8; break;
|
|
||||||
case 8: words = (width + 3) / 4; break;
|
|
||||||
case 15:
|
|
||||||
case 16: words = (width + 1) / 2; break;
|
|
||||||
case 24: words = (width * 3 + 3)/4; break;
|
|
||||||
case 32: words = width; break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
trace("Unknown depth %d, please report.\n", bpp );
|
|
||||||
assert(0);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 4 * words;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void check_bitmap_data(const char *bm_data, ULONG bm_data_size,
|
static void check_bitmap_data(const char *bm_data, ULONG bm_data_size,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user