gdi32: Get rid of the SetBitmapBits driver entry point.

This commit is contained in:
Alexandre Julliard 2011-08-03 11:46:08 +02:00
parent 09eb59d3c6
commit 6d00196aea
11 changed files with 1 additions and 152 deletions

View File

@ -50,25 +50,6 @@ static const struct gdi_obj_funcs bitmap_funcs =
* null driver fallback implementations * null driver fallback implementations
*/ */
LONG nulldrv_SetBitmapBits( HBITMAP bitmap, const void *bits, LONG size )
{
BITMAPOBJ *bmp = GDI_GetObjPtr( bitmap, OBJ_BITMAP );
if (!bmp->bitmap.bmBits)
{
LONG total = bmp->bitmap.bmHeight * bmp->bitmap.bmWidthBytes; /* alloc enough for entire bitmap */
if (!(bmp->bitmap.bmBits = HeapAlloc( GetProcessHeap(), 0, total )))
{
GDI_ReleaseObj( bitmap );
return 0;
}
if (size < total) memset( (char *)bmp->bitmap.bmBits + size, 0, total - size );
}
memcpy( bmp->bitmap.bmBits, bits, size );
GDI_ReleaseObj( bitmap );
return size;
}
DWORD nulldrv_GetImage( PHYSDEV dev, HBITMAP hbitmap, BITMAPINFO *info, DWORD nulldrv_GetImage( PHYSDEV dev, HBITMAP hbitmap, BITMAPINFO *info,
struct gdi_image_bits *bits, struct bitblt_coords *src ) struct gdi_image_bits *bits, struct bitblt_coords *src )
{ {

View File

@ -821,7 +821,6 @@ const DC_FUNCTIONS dib_driver =
NULL, /* pSelectPalette */ NULL, /* pSelectPalette */
dibdrv_SelectPen, /* pSelectPen */ dibdrv_SelectPen, /* pSelectPen */
NULL, /* pSetArcDirection */ NULL, /* pSetArcDirection */
NULL, /* pSetBitmapBits */
dibdrv_SetBkColor, /* pSetBkColor */ dibdrv_SetBkColor, /* pSetBkColor */
dibdrv_SetBkMode, /* pSetBkMode */ dibdrv_SetBkMode, /* pSetBkMode */
dibdrv_SetDCBrushColor, /* pSetDCBrushColor */ dibdrv_SetDCBrushColor, /* pSetDCBrushColor */

View File

@ -742,7 +742,6 @@ const DC_FUNCTIONS null_driver =
nulldrv_SelectPalette, /* pSelectPalette */ nulldrv_SelectPalette, /* pSelectPalette */
nulldrv_SelectPen, /* pSelectPen */ nulldrv_SelectPen, /* pSelectPen */
nulldrv_SetArcDirection, /* pSetArcDirection */ nulldrv_SetArcDirection, /* pSetArcDirection */
nulldrv_SetBitmapBits, /* pSetBitmapBits */
nulldrv_SetBkColor, /* pSetBkColor */ nulldrv_SetBkColor, /* pSetBkColor */
nulldrv_SetBkMode, /* pSetBkMode */ nulldrv_SetBkMode, /* pSetBkMode */
nulldrv_SetDCBrushColor, /* pSetDCBrushColor */ nulldrv_SetDCBrushColor, /* pSetDCBrushColor */

View File

@ -118,7 +118,6 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
EMFDRV_SelectPalette, /* pSelectPalette */ EMFDRV_SelectPalette, /* pSelectPalette */
EMFDRV_SelectPen, /* pSelectPen */ EMFDRV_SelectPen, /* pSelectPen */
EMFDRV_SetArcDirection, /* pSetArcDirection */ EMFDRV_SetArcDirection, /* pSetArcDirection */
NULL, /* pSetBitmapBits */
EMFDRV_SetBkColor, /* pSetBkColor */ EMFDRV_SetBkColor, /* pSetBkColor */
EMFDRV_SetBkMode, /* pSetBkMode */ EMFDRV_SetBkMode, /* pSetBkMode */
EMFDRV_SetDCBrushColor, /* pSetDCBrushColor*/ EMFDRV_SetDCBrushColor, /* pSetDCBrushColor*/

View File

@ -501,7 +501,6 @@ extern INT nulldrv_SaveDC( PHYSDEV dev ) DECLSPEC_HIDDEN;
extern BOOL nulldrv_ScaleViewportExtEx( PHYSDEV dev, INT x_num, INT x_denom, INT y_num, INT y_denom, SIZE *size ) DECLSPEC_HIDDEN; extern BOOL nulldrv_ScaleViewportExtEx( PHYSDEV dev, INT x_num, INT x_denom, INT y_num, INT y_denom, SIZE *size ) DECLSPEC_HIDDEN;
extern BOOL nulldrv_ScaleWindowExtEx( PHYSDEV dev, INT x_num, INT x_denom, INT y_num, INT y_denom, SIZE *size ) DECLSPEC_HIDDEN; extern BOOL nulldrv_ScaleWindowExtEx( PHYSDEV dev, INT x_num, INT x_denom, INT y_num, INT y_denom, SIZE *size ) DECLSPEC_HIDDEN;
extern BOOL nulldrv_SelectClipPath( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN; extern BOOL nulldrv_SelectClipPath( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN;
extern LONG nulldrv_SetBitmapBits( HBITMAP bitmap, const void *bits, LONG size ) DECLSPEC_HIDDEN;
extern INT nulldrv_SetMapMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN; extern INT nulldrv_SetMapMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN;
extern BOOL nulldrv_SetViewportExtEx( PHYSDEV dev, INT cx, INT cy, SIZE *size ) DECLSPEC_HIDDEN; extern BOOL nulldrv_SetViewportExtEx( PHYSDEV dev, INT cx, INT cy, SIZE *size ) DECLSPEC_HIDDEN;
extern BOOL nulldrv_SetViewportOrgEx( PHYSDEV dev, INT x, INT y, POINT *pt ) DECLSPEC_HIDDEN; extern BOOL nulldrv_SetViewportOrgEx( PHYSDEV dev, INT x, INT y, POINT *pt ) DECLSPEC_HIDDEN;

View File

@ -162,7 +162,6 @@ static const DC_FUNCTIONS MFDRV_Funcs =
MFDRV_SelectPalette, /* pSelectPalette */ MFDRV_SelectPalette, /* pSelectPalette */
MFDRV_SelectPen, /* pSelectPen */ MFDRV_SelectPen, /* pSelectPen */
NULL, /* pSetArcDirection */ NULL, /* pSetArcDirection */
NULL, /* pSetBitmapBits */
MFDRV_SetBkColor, /* pSetBkColor */ MFDRV_SetBkColor, /* pSetBkColor */
MFDRV_SetBkMode, /* pSetBkMode */ MFDRV_SetBkMode, /* pSetBkMode */
MFDRV_SetDCBrushColor, /* pSetDCBrushColor*/ MFDRV_SetDCBrushColor, /* pSetDCBrushColor*/

View File

@ -884,7 +884,6 @@ static const struct gdi_dc_funcs psdrv_funcs =
NULL, /* pSelectPalette */ NULL, /* pSelectPalette */
PSDRV_SelectPen, /* pSelectPen */ PSDRV_SelectPen, /* pSelectPen */
NULL, /* pSetArcDirection */ NULL, /* pSetArcDirection */
NULL, /* pSetBitmapBits */
PSDRV_SetBkColor, /* pSetBkColor */ PSDRV_SetBkColor, /* pSetBkColor */
NULL, /* pSetBkMode */ NULL, /* pSetBkMode */
PSDRV_SetDCBrushColor, /* pSetDCBrushColor */ PSDRV_SetDCBrushColor, /* pSetDCBrushColor */

View File

@ -196,129 +196,6 @@ BOOL X11DRV_CreateBitmap( PHYSDEV dev, HBITMAP hbitmap )
} }
/******************************************************************************
* SetBitmapBits (X11DRV.@)
*
* RETURNS
* Success: Number of bytes used in setting the bitmap bits
* Failure: 0
*/
LONG X11DRV_SetBitmapBits( HBITMAP hbitmap, const void *bits, LONG count )
{
BITMAP bitmap;
X_PHYSBITMAP *physBitmap = X11DRV_get_phys_bitmap( hbitmap );
LONG height;
XImage *image;
const BYTE *sbuf, *startline;
int w, h;
if (!physBitmap || !GetObjectW( hbitmap, sizeof(bitmap), &bitmap )) return 0;
TRACE("(bmp=%p, bits=%p, count=0x%x)\n", hbitmap, bits, count);
height = count / bitmap.bmWidthBytes;
wine_tsx11_lock();
image = XCreateImage( gdi_display, visual, physBitmap->pixmap_depth, ZPixmap, 0, NULL,
bitmap.bmWidth, height, 32, 0 );
if (!(image->data = HeapAlloc( GetProcessHeap(), 0, image->bytes_per_line * height )))
{
WARN("No memory to create image data.\n");
XDestroyImage( image );
wine_tsx11_unlock();
return 0;
}
/* copy 16 bit padded image buffer with real bitsperpixel to XImage */
startline = bits;
switch (bitmap.bmBitsPixel)
{
case 1:
for (h=0;h<height;h++)
{
sbuf = startline;
for (w=0;w<bitmap.bmWidth;w++)
{
XPutPixel(image,w,h,(sbuf[0]>>(7-(w&7))) & 1);
if ((w&7) == 7)
sbuf++;
}
startline += bitmap.bmWidthBytes;
}
break;
case 4:
for (h=0;h<height;h++)
{
sbuf = startline;
for (w=0;w<bitmap.bmWidth;w++)
{
if (!(w & 1)) XPutPixel( image, w, h, *sbuf >> 4 );
else XPutPixel( image, w, h, *sbuf++ & 0xf );
}
startline += bitmap.bmWidthBytes;
}
break;
case 8:
for (h=0;h<height;h++)
{
sbuf = startline;
for (w=0;w<bitmap.bmWidth;w++)
XPutPixel(image,w,h,*sbuf++);
startline += bitmap.bmWidthBytes;
}
break;
case 15:
case 16:
for (h=0;h<height;h++)
{
sbuf = startline;
for (w=0;w<bitmap.bmWidth;w++)
{
XPutPixel(image,w,h,sbuf[1]*256+sbuf[0]);
sbuf+=2;
}
startline += bitmap.bmWidthBytes;
}
break;
case 24:
for (h=0;h<height;h++)
{
sbuf = startline;
for (w=0;w<bitmap.bmWidth;w++)
{
XPutPixel(image,w,h,(sbuf[2]<<16)+(sbuf[1]<<8)+sbuf[0]);
sbuf += 3;
}
startline += bitmap.bmWidthBytes;
}
break;
case 32:
for (h=0;h<height;h++)
{
sbuf = startline;
for (w=0;w<bitmap.bmWidth;w++)
{
XPutPixel(image,w,h,(sbuf[3]<<24)+(sbuf[2]<<16)+(sbuf[1]<<8)+sbuf[0]);
sbuf += 4;
}
startline += bitmap.bmWidthBytes;
}
break;
default:
FIXME("Unhandled bits:%d\n", bitmap.bmBitsPixel);
}
XPutImage( gdi_display, physBitmap->pixmap, get_bitmap_gc(physBitmap->pixmap_depth),
image, 0, 0, 0, 0, bitmap.bmWidth, height );
HeapFree( GetProcessHeap(), 0, image->data );
image->data = NULL;
XDestroyImage( image );
wine_tsx11_unlock();
return count;
}
/*********************************************************************** /***********************************************************************
* DeleteBitmap (X11DRV.@) * DeleteBitmap (X11DRV.@)
*/ */

View File

@ -527,7 +527,6 @@ static const struct gdi_dc_funcs x11drv_funcs =
NULL, /* pSelectPalette */ NULL, /* pSelectPalette */
X11DRV_SelectPen, /* pSelectPen */ X11DRV_SelectPen, /* pSelectPen */
NULL, /* pSetArcDirection */ NULL, /* pSetArcDirection */
X11DRV_SetBitmapBits, /* pSetBitmapBits */
X11DRV_SetBkColor, /* pSetBkColor */ X11DRV_SetBkColor, /* pSetBkColor */
NULL, /* pSetBkMode */ NULL, /* pSetBkMode */
X11DRV_SetDCBrushColor, /* pSetDCBrushColor */ X11DRV_SetDCBrushColor, /* pSetDCBrushColor */

View File

@ -230,7 +230,6 @@ extern HBITMAP X11DRV_SelectBitmap( PHYSDEV dev, HBITMAP hbitmap ) DECLSPEC_HIDD
extern HBRUSH X11DRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush ) DECLSPEC_HIDDEN; extern HBRUSH X11DRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush ) DECLSPEC_HIDDEN;
extern HFONT X11DRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) DECLSPEC_HIDDEN; extern HFONT X11DRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) DECLSPEC_HIDDEN;
extern HPEN X11DRV_SelectPen( PHYSDEV dev, HPEN hpen ) DECLSPEC_HIDDEN; extern HPEN X11DRV_SelectPen( PHYSDEV dev, HPEN hpen ) DECLSPEC_HIDDEN;
extern LONG X11DRV_SetBitmapBits( HBITMAP hbitmap, const void *bits, LONG count ) DECLSPEC_HIDDEN;
extern COLORREF X11DRV_SetBkColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN; extern COLORREF X11DRV_SetBkColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN;
extern COLORREF X11DRV_SetDCBrushColor( PHYSDEV dev, COLORREF crColor ) DECLSPEC_HIDDEN; extern COLORREF X11DRV_SetDCBrushColor( PHYSDEV dev, COLORREF crColor ) DECLSPEC_HIDDEN;
extern COLORREF X11DRV_SetDCPenColor( PHYSDEV dev, COLORREF crColor ) DECLSPEC_HIDDEN; extern COLORREF X11DRV_SetDCPenColor( PHYSDEV dev, COLORREF crColor ) DECLSPEC_HIDDEN;

View File

@ -136,7 +136,6 @@ struct gdi_dc_funcs
HPALETTE (*pSelectPalette)(PHYSDEV,HPALETTE,BOOL); HPALETTE (*pSelectPalette)(PHYSDEV,HPALETTE,BOOL);
HPEN (*pSelectPen)(PHYSDEV,HPEN); HPEN (*pSelectPen)(PHYSDEV,HPEN);
INT (*pSetArcDirection)(PHYSDEV,INT); INT (*pSetArcDirection)(PHYSDEV,INT);
LONG (*pSetBitmapBits)(HBITMAP,const void*,LONG);
COLORREF (*pSetBkColor)(PHYSDEV,COLORREF); COLORREF (*pSetBkColor)(PHYSDEV,COLORREF);
INT (*pSetBkMode)(PHYSDEV,INT); INT (*pSetBkMode)(PHYSDEV,INT);
COLORREF (*pSetDCBrushColor)(PHYSDEV, COLORREF); COLORREF (*pSetDCBrushColor)(PHYSDEV, COLORREF);
@ -189,7 +188,7 @@ struct gdi_dc_funcs
}; };
/* increment this when you change the DC function table */ /* increment this when you change the DC function table */
#define WINE_GDI_DRIVER_VERSION 10 #define WINE_GDI_DRIVER_VERSION 11
static inline PHYSDEV get_physdev_entry_point( PHYSDEV dev, size_t offset ) static inline PHYSDEV get_physdev_entry_point( PHYSDEV dev, size_t offset )
{ {