Alexandre Julliard : gdiplus: CreateDIBSection doesn' t need a DC for the DIB_RGB_COLORS case.

Alexandre Julliard julliard at winehq.org
Wed May 2 14:30:02 CDT 2012


Module: wine
Branch: master
Commit: 039c85346c323e1145b5a5f2e5334328ac37baa9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=039c85346c323e1145b5a5f2e5334328ac37baa9

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed May  2 12:02:17 2012 +0200

gdiplus: CreateDIBSection doesn't need a DC for the DIB_RGB_COLORS case.

---

 dlls/gdiplus/gdiplus.c  |    7 +------
 dlls/gdiplus/graphics.c |    8 +-------
 dlls/gdiplus/image.c    |   19 ++-----------------
 3 files changed, 4 insertions(+), 30 deletions(-)

diff --git a/dlls/gdiplus/gdiplus.c b/dlls/gdiplus/gdiplus.c
index 9c3478b..56d8330 100644
--- a/dlls/gdiplus/gdiplus.c
+++ b/dlls/gdiplus/gdiplus.c
@@ -265,7 +265,6 @@ COLORREF ARGB2COLORREF(ARGB color)
 
 HBITMAP ARGB2BMP(ARGB color)
 {
-    HDC hdc;
     BITMAPINFO bi;
     HBITMAP result;
     RGBQUAD *bits;
@@ -273,8 +272,6 @@ HBITMAP ARGB2BMP(ARGB color)
 
     if ((color & 0xff000000) == 0xff000000) return 0;
 
-    hdc = CreateCompatibleDC(NULL);
-
     bi.bmiHeader.biSize = sizeof(bi.bmiHeader);
     bi.bmiHeader.biWidth = 1;
     bi.bmiHeader.biHeight = 1;
@@ -287,15 +284,13 @@ HBITMAP ARGB2BMP(ARGB color)
     bi.bmiHeader.biClrUsed = 0;
     bi.bmiHeader.biClrImportant = 0;
 
-    result = CreateDIBSection(hdc, &bi, DIB_RGB_COLORS, (void*)&bits, NULL, 0);
+    result = CreateDIBSection(0, &bi, DIB_RGB_COLORS, (void*)&bits, NULL, 0);
 
     bits[0].rgbReserved = alpha = (color>>24)&0xff;
     bits[0].rgbRed = ((color>>16)&0xff)*alpha/255;
     bits[0].rgbGreen = ((color>>8)&0xff)*alpha/255;
     bits[0].rgbBlue = (color&0xff)*alpha/255;
 
-    DeleteDC(hdc);
-
     return result;
 }
 
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 92bc27e..a5e3eb2 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -131,15 +131,10 @@ static COLORREF get_gdi_brush_color(const GpBrush *brush)
 static HBITMAP create_hatch_bitmap(const GpHatch *hatch)
 {
     HBITMAP hbmp;
-    HDC hdc;
     BITMAPINFOHEADER bmih;
     DWORD *bits;
     int x, y;
 
-    hdc = CreateCompatibleDC(0);
-
-    if (!hdc) return 0;
-
     bmih.biSize = sizeof(bmih);
     bmih.biWidth = 8;
     bmih.biHeight = 8;
@@ -148,7 +143,7 @@ static HBITMAP create_hatch_bitmap(const GpHatch *hatch)
     bmih.biCompression = BI_RGB;
     bmih.biSizeImage = 0;
 
-    hbmp = CreateDIBSection(hdc, (BITMAPINFO *)&bmih, DIB_RGB_COLORS, (void **)&bits, NULL, 0);
+    hbmp = CreateDIBSection(0, (BITMAPINFO *)&bmih, DIB_RGB_COLORS, (void **)&bits, NULL, 0);
     if (hbmp)
     {
         const char *hatch_data;
@@ -175,7 +170,6 @@ static HBITMAP create_hatch_bitmap(const GpHatch *hatch)
         }
     }
 
-    DeleteDC(hdc);
     return hbmp;
 }
 
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index 825ca02..ba8b979 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -1372,7 +1372,6 @@ GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap* bitmap,
     GpStatus stat;
     HBITMAP result;
     UINT width, height;
-    HDC hdc;
     BITMAPINFOHEADER bih;
     LPBYTE bits;
     BitmapData lockeddata;
@@ -1395,11 +1394,7 @@ GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap* bitmap,
     bih.biClrUsed = 0;
     bih.biClrImportant = 0;
 
-    hdc = CreateCompatibleDC(NULL);
-    if (!hdc) return GenericError;
-
-    result = CreateDIBSection(hdc, (BITMAPINFO*)&bih, DIB_RGB_COLORS, (void**)&bits,
-        NULL, 0);
+    result = CreateDIBSection(0, (BITMAPINFO*)&bih, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
 
     if (result)
     {
@@ -1415,8 +1410,6 @@ GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap* bitmap,
     else
         stat = GenericError;
 
-    DeleteDC(hdc);
-
     if (stat != Ok && result)
     {
         DeleteObject(result);
@@ -1694,7 +1687,6 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride,
     BITMAPINFO* pbmi;
     HBITMAP hbitmap=NULL;
     INT row_size, dib_stride;
-    HDC hdc;
     BYTE *bits=NULL, *own_bits=NULL;
     REAL xres, yres;
     GpStatus stat;
@@ -1739,15 +1731,8 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride,
         pbmi->bmiHeader.biClrUsed = 0;
         pbmi->bmiHeader.biClrImportant = 0;
 
-        hdc = CreateCompatibleDC(NULL);
-        if (!hdc) {
-            GdipFree(pbmi);
-            return GenericError;
-        }
-
-        hbitmap = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
+        hbitmap = CreateDIBSection(0, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
 
-        DeleteDC(hdc);
         GdipFree(pbmi);
 
         if (!hbitmap) return GenericError;




More information about the wine-cvs mailing list