Commit bd3b0e4f authored by Alexandre Julliard's avatar Alexandre Julliard

comctl32: Simplify the DIB byte width computation.

parent 8cf64240
...@@ -2061,41 +2061,13 @@ ImageList_Merge (HIMAGELIST himl1, INT i1, HIMAGELIST himl2, INT i2, ...@@ -2061,41 +2061,13 @@ 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
* *
* Return the number of bytes used to hold the image in a DIB bitmap. * Return the number of bytes used to hold the image in a DIB bitmap.
*/ */
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 }; ...@@ -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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment