Alexandre Julliard : winex11: Remove the GetDIBits implementation.
Alexandre Julliard
julliard at winehq.org
Mon Jul 18 12:47:01 CDT 2011
Module: wine
Branch: master
Commit: dbd0b4542fb0112a5444f247b1f13bcac0342c14
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dbd0b4542fb0112a5444f247b1f13bcac0342c14
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Jul 18 17:11:06 2011 +0200
winex11: Remove the GetDIBits implementation.
---
dlls/winex11.drv/dib.c | 170 +-----------------------------------------------
1 files changed, 1 insertions(+), 169 deletions(-)
diff --git a/dlls/winex11.drv/dib.c b/dlls/winex11.drv/dib.c
index a1176d9..7274f0c 100644
--- a/dlls/winex11.drv/dib.c
+++ b/dlls/winex11.drv/dib.c
@@ -175,17 +175,6 @@ static int X11DRV_DIB_GetDIBWidthBytes( int width, int depth )
/***********************************************************************
- * X11DRV_DIB_GetDIBImageBytes
- *
- * Return the number of bytes used to hold the image in a DIB bitmap.
- */
-static int X11DRV_DIB_GetDIBImageBytes( int width, int height, int depth )
-{
- return X11DRV_DIB_GetDIBWidthBytes( width, depth ) * abs( height );
-}
-
-
-/***********************************************************************
* bitmap_info_size
*
* Return the size of the bitmap info structure including color table.
@@ -4083,163 +4072,6 @@ INT X11DRV_SetDIBits( PHYSDEV dev, HBITMAP hbitmap, UINT startscan,
}
/***********************************************************************
- * GetDIBits (X11DRV.@)
- */
-INT X11DRV_GetDIBits( PHYSDEV dev, HBITMAP hbitmap, UINT startscan, UINT lines,
- LPVOID bits, BITMAPINFO *info, UINT coloruse )
-{
- X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
- X_PHYSBITMAP *physBitmap = X11DRV_get_phys_bitmap( hbitmap );
- DIBSECTION dib;
- X11DRV_DIB_IMAGEBITS_DESCR descr;
- PALETTEENTRY palette[256];
- size_t obj_size;
- int height;
- LONG width, tempHeight;
- int bitmap_type;
- BOOL core_header;
- void* colorPtr;
- static const PALETTEENTRY peBlack = {0,0,0,0};
- static const PALETTEENTRY peWhite = {255,255,255,0};
-
- if (!physBitmap) return 0;
- if (!(obj_size = GetObjectW( hbitmap, sizeof(dib), &dib ))) return 0;
-
- bitmap_type = DIB_GetBitmapInfo( (BITMAPINFOHEADER*)info, &width, &tempHeight, &descr.infoBpp, &descr.compression);
- if (bitmap_type == -1)
- {
- ERR("Invalid bitmap\n");
- return 0;
- }
-
- if (physBitmap->pixmap_depth > 1)
- {
- GetPaletteEntries( GetCurrentObject( dev->hdc, OBJ_PAL ), 0, 256, palette );
- }
- else
- {
- palette[0] = peBlack;
- palette[1] = peWhite;
- }
-
- descr.lines = tempHeight;
- core_header = (bitmap_type == 0);
- colorPtr = (LPBYTE) info + (WORD) info->bmiHeader.biSize;
-
- TRACE("%u scanlines of (%i,%i) -> (%i,%i) starting from %u\n",
- lines, dib.dsBm.bmWidth, dib.dsBm.bmHeight, width, descr.lines, startscan);
-
- if( lines > dib.dsBm.bmHeight ) lines = dib.dsBm.bmHeight;
-
- height = descr.lines;
- if (height < 0) height = -height;
- if( lines > height ) lines = height;
- /* Top-down images have a negative biHeight, the scanlines of these images
- * were inverted in X11DRV_DIB_GetImageBits_xx
- * To prevent this we simply change the sign of lines
- * (the number of scan lines to copy).
- * Negative lines are correctly handled by X11DRV_DIB_GetImageBits_xx.
- */
- if( descr.lines < 0 && lines > 0) lines = -lines;
-
- if( startscan >= dib.dsBm.bmHeight ) return 0;
-
- descr.colorMap = NULL;
-
- switch (descr.infoBpp)
- {
- case 1:
- case 4:
- case 8:
- descr.rMask= descr.gMask = descr.bMask = 0;
- if(coloruse == DIB_RGB_COLORS)
- descr.colorMap = colorPtr;
- else {
- int num_colors = 1 << descr.infoBpp, i;
- RGBQUAD *rgb;
- COLORREF colref;
- WORD *index = colorPtr;
- descr.colorMap = rgb = HeapAlloc(GetProcessHeap(), 0, num_colors * sizeof(RGBQUAD));
- for(i = 0; i < num_colors; i++, rgb++, index++) {
- colref = X11DRV_PALETTE_ToLogical(physDev, X11DRV_PALETTE_ToPhysical(physDev, PALETTEINDEX(*index)));
- rgb->rgbRed = GetRValue(colref);
- rgb->rgbGreen = GetGValue(colref);
- rgb->rgbBlue = GetBValue(colref);
- rgb->rgbReserved = 0;
- }
- }
- break;
- case 15:
- case 16:
- descr.rMask = (descr.compression == BI_BITFIELDS) ? *(const DWORD *)info->bmiColors : 0x7c00;
- descr.gMask = (descr.compression == BI_BITFIELDS) ? *((const DWORD *)info->bmiColors + 1) : 0x03e0;
- descr.bMask = (descr.compression == BI_BITFIELDS) ? *((const DWORD *)info->bmiColors + 2) : 0x001f;
- break;
- case 24:
- case 32:
- descr.rMask = (descr.compression == BI_BITFIELDS) ? *(const DWORD *)info->bmiColors : 0xff0000;
- descr.gMask = (descr.compression == BI_BITFIELDS) ? *((const DWORD *)info->bmiColors + 1) : 0x00ff00;
- descr.bMask = (descr.compression == BI_BITFIELDS) ? *((const DWORD *)info->bmiColors + 2) : 0x0000ff;
- break;
- }
-
- descr.physDev = physDev;
- descr.palentry = palette;
- descr.bits = bits;
- descr.image = physBitmap->image;
- descr.infoWidth = width;
- descr.lines = lines;
- descr.depth = physBitmap->pixmap_depth;
- descr.shifts = physBitmap->trueColor ? &physBitmap->pixmap_color_shifts : NULL;
- descr.drawable = physBitmap->pixmap;
- descr.gc = get_bitmap_gc(physBitmap->pixmap_depth);
- descr.width = dib.dsBm.bmWidth;
- descr.height = dib.dsBm.bmHeight;
- descr.xDest = 0;
- descr.yDest = 0;
- descr.xSrc = 0;
- descr.sizeImage = core_header ? 0 : info->bmiHeader.biSizeImage;
- descr.physBitmap = physBitmap;
-
- if (descr.lines > 0)
- {
- descr.ySrc = (descr.height-1) - (startscan + (lines-1));
- }
- else
- {
- descr.ySrc = startscan;
- }
- descr.shm_mode = physBitmap->shm_mode;
- descr.dibpitch = (((descr.infoWidth * descr.infoBpp + 31) &~31) / 8);
-
- X11DRV_DIB_Lock( physBitmap, DIB_Status_GdiMod );
- X11DRV_DIB_GetImageBits( &descr );
- X11DRV_DIB_Unlock( physBitmap, TRUE );
-
- if(!core_header && info->bmiHeader.biSizeImage == 0) /* Fill in biSizeImage */
- info->bmiHeader.biSizeImage = X11DRV_DIB_GetDIBImageBytes( descr.infoWidth,
- descr.lines,
- descr.infoBpp);
-
- if (descr.compression == BI_BITFIELDS)
- {
- *(DWORD *)info->bmiColors = descr.rMask;
- *((DWORD *)info->bmiColors + 1) = descr.gMask;
- *((DWORD *)info->bmiColors + 2) = descr.bMask;
- }
- else if (!core_header)
- {
- /* if RLE or JPEG compression were supported,
- * this line would be invalid. */
- info->bmiHeader.biCompression = 0;
- }
-
- if(descr.colorMap != colorPtr)
- HeapFree(GetProcessHeap(), 0, descr.colorMap);
- return lines;
-}
-
-/***********************************************************************
* X11DRV_DIB_DoCopyDIBSection
*/
static void X11DRV_DIB_DoCopyDIBSection(X_PHYSBITMAP *physBitmap, BOOL toDIB,
@@ -4761,7 +4593,7 @@ HBITMAP X11DRV_CreateDIBSection( PHYSDEV dev, HBITMAP hbitmap, const BITMAPINFO
Bool pixmaps;
#endif
- DIB_GetBitmapInfo( &bmi->bmiHeader, &w, &h, &bpp, &compr );
+ if (DIB_GetBitmapInfo( &bmi->bmiHeader, &w, &h, &bpp, &compr ) == -1) return 0;
if (!(physBitmap = X11DRV_init_phys_bitmap( hbitmap ))) return 0;
if (h < 0) physBitmap->topdown = TRUE;
More information about the wine-cvs
mailing list