@@ -1180,32 +1180,39 @@ static long create32bitDIB (long hBitmap, int alpha, byte [] alphaData, int tran
11801180}
11811181
11821182static Image createIcon (Image image , int zoom ) {
1183- Device device = image .getDevice ();
1183+ Device device = image .getDevice ();
11841184 ImageData data = image .getImageData (zoom );
1185- if (data .alpha == -1 && data .alphaData == null ) {
1186- ImageData mask = data .getTransparencyMask ();
1187- return new Image (device , data , mask );
1188- }
1189- int width = data .width , height = data .height ;
1190- long hMask , hBitmap ;
1191- long hDC = device .internal_new_GC (null );
1192- long dstHdc = OS .CreateCompatibleDC (hDC ), oldDstBitmap ;
1193- hBitmap = Display .create32bitDIB (Image .win32_getHandle (image , zoom ), data .alpha , data .alphaData , data .transparentPixel );
1194- hMask = OS .CreateBitmap (width , height , 1 , 1 , null );
1195- oldDstBitmap = OS .SelectObject (dstHdc , hMask );
1196- OS .PatBlt (dstHdc , 0 , 0 , width , height , OS .BLACKNESS );
1197- OS .SelectObject (dstHdc , oldDstBitmap );
1198- OS .DeleteDC (dstHdc );
1199- device .internal_dispose_GC (hDC , null );
1200- ICONINFO info = new ICONINFO ();
1201- info .fIcon = true ;
1202- info .hbmColor = hBitmap ;
1203- info .hbmMask = hMask ;
1204- long hIcon = OS .CreateIconIndirect (info );
1205- if (hIcon == 0 ) SWT .error (SWT .ERROR_NO_HANDLES );
1206- OS .DeleteObject (hBitmap );
1207- OS .DeleteObject (hMask );
1208- return Image .win32_new (device , SWT .ICON , hIcon , zoom );
1185+ switch (data .getTransparencyType ()) {
1186+ case SWT .TRANSPARENCY_MASK :
1187+ case SWT .TRANSPARENCY_PIXEL :
1188+ ImageData mask = data .getTransparencyMask ();
1189+ return new Image (device , data , mask );
1190+ case SWT .TRANSPARENCY_ALPHA :
1191+ case SWT .NONE :
1192+ default :
1193+ int width = data .width , height = data .height ;
1194+ long hMask , hBitmap ;
1195+ long hDC = device .internal_new_GC (null );
1196+ long dstHdc = OS .CreateCompatibleDC (hDC ), oldDstBitmap ;
1197+ hBitmap = Display .create32bitDIB (Image .win32_getHandle (image , zoom ), data .alpha , data .alphaData ,
1198+ data .transparentPixel );
1199+ hMask = OS .CreateBitmap (width , height , 1 , 1 , null );
1200+ oldDstBitmap = OS .SelectObject (dstHdc , hMask );
1201+ OS .PatBlt (dstHdc , 0 , 0 , width , height , OS .BLACKNESS );
1202+ OS .SelectObject (dstHdc , oldDstBitmap );
1203+ OS .DeleteDC (dstHdc );
1204+ device .internal_dispose_GC (hDC , null );
1205+ ICONINFO info = new ICONINFO ();
1206+ info .fIcon = true ;
1207+ info .hbmColor = hBitmap ;
1208+ info .hbmMask = hMask ;
1209+ long hIcon = OS .CreateIconIndirect (info );
1210+ if (hIcon == 0 )
1211+ SWT .error (SWT .ERROR_NO_HANDLES );
1212+ OS .DeleteObject (hBitmap );
1213+ OS .DeleteObject (hMask );
1214+ return Image .win32_new (device , SWT .ICON , hIcon , zoom );
1215+ }
12091216}
12101217
12111218long getTextSearchIcon (int size ) {
0 commit comments