gdi32: GetDIBColorTable doesn't need to be part of the DC driver interface.

This commit is contained in:
Alexandre Julliard 2011-03-08 16:47:22 +01:00
parent e6d9486453
commit fcfbb46d2e
5 changed files with 9 additions and 18 deletions

View File

@ -453,29 +453,24 @@ UINT WINAPI SetDIBColorTable( HDC hdc, UINT startpos, UINT entries, CONST RGBQUA
UINT WINAPI GetDIBColorTable( HDC hdc, UINT startpos, UINT entries, RGBQUAD *colors ) UINT WINAPI GetDIBColorTable( HDC hdc, UINT startpos, UINT entries, RGBQUAD *colors )
{ {
DC * dc; DC * dc;
BITMAPOBJ *bitmap;
UINT result = 0; UINT result = 0;
if (!(dc = get_dc_ptr( hdc ))) return 0; if (!(dc = get_dc_ptr( hdc ))) return 0;
if (dc->funcs->pGetDIBColorTable) if ((bitmap = GDI_GetObjPtr( dc->hBitmap, OBJ_BITMAP )))
result = dc->funcs->pGetDIBColorTable(dc->physDev, startpos, entries, colors);
else
{ {
BITMAPOBJ *bitmap = GDI_GetObjPtr( dc->hBitmap, OBJ_BITMAP ); /* Check if currently selected bitmap is a DIB */
if (bitmap) if (bitmap->color_table)
{ {
/* Check if currently selected bitmap is a DIB */ if (startpos < bitmap->nb_colors)
if (bitmap->color_table)
{ {
if (startpos < bitmap->nb_colors) if (startpos + entries > bitmap->nb_colors) entries = bitmap->nb_colors - startpos;
{ memcpy(colors, bitmap->color_table + startpos, entries * sizeof(RGBQUAD));
if (startpos + entries > bitmap->nb_colors) entries = bitmap->nb_colors - startpos; result = entries;
memcpy(colors, bitmap->color_table + startpos, entries * sizeof(RGBQUAD));
result = entries;
}
} }
GDI_ReleaseObj( dc->hBitmap );
} }
GDI_ReleaseObj( dc->hBitmap );
} }
release_dc_ptr( dc ); release_dc_ptr( dc );
return result; return result;

View File

@ -110,7 +110,6 @@ static struct graphics_driver *create_driver( HMODULE module )
GET_FUNC(GdiComment); GET_FUNC(GdiComment);
GET_FUNC(GetBitmapBits); GET_FUNC(GetBitmapBits);
GET_FUNC(GetCharWidth); GET_FUNC(GetCharWidth);
GET_FUNC(GetDIBColorTable);
GET_FUNC(GetDIBits); GET_FUNC(GetDIBits);
GET_FUNC(GetDeviceCaps); GET_FUNC(GetDeviceCaps);
GET_FUNC(GetDeviceGammaRamp); GET_FUNC(GetDeviceGammaRamp);

View File

@ -72,7 +72,6 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
EMFDRV_GdiComment, /* pGdiComment */ EMFDRV_GdiComment, /* pGdiComment */
NULL, /* pGetBitmapBits */ NULL, /* pGetBitmapBits */
NULL, /* pGetCharWidth */ NULL, /* pGetCharWidth */
NULL, /* pGetDIBColorTable */
NULL, /* pGetDIBits */ NULL, /* pGetDIBits */
EMFDRV_GetDeviceCaps, /* pGetDeviceCaps */ EMFDRV_GetDeviceCaps, /* pGetDeviceCaps */
NULL, /* pGetDeviceGammaRamp */ NULL, /* pGetDeviceGammaRamp */

View File

@ -114,7 +114,6 @@ typedef struct tagDC_FUNCS
BOOL (CDECL *pGdiComment)(PHYSDEV,UINT,CONST BYTE*); BOOL (CDECL *pGdiComment)(PHYSDEV,UINT,CONST BYTE*);
LONG (CDECL *pGetBitmapBits)(HBITMAP,void*,LONG); LONG (CDECL *pGetBitmapBits)(HBITMAP,void*,LONG);
BOOL (CDECL *pGetCharWidth)(PHYSDEV,UINT,UINT,LPINT); BOOL (CDECL *pGetCharWidth)(PHYSDEV,UINT,UINT,LPINT);
UINT (CDECL *pGetDIBColorTable)(PHYSDEV,UINT,UINT,RGBQUAD*);
INT (CDECL *pGetDIBits)(PHYSDEV,HBITMAP,UINT,UINT,LPVOID,BITMAPINFO*,UINT); INT (CDECL *pGetDIBits)(PHYSDEV,HBITMAP,UINT,UINT,LPVOID,BITMAPINFO*,UINT);
INT (CDECL *pGetDeviceCaps)(PHYSDEV,INT); INT (CDECL *pGetDeviceCaps)(PHYSDEV,INT);
BOOL (CDECL *pGetDeviceGammaRamp)(PHYSDEV,LPVOID); BOOL (CDECL *pGetDeviceGammaRamp)(PHYSDEV,LPVOID);

View File

@ -70,7 +70,6 @@ static const DC_FUNCTIONS MFDRV_Funcs =
NULL, /* pGdiComment */ NULL, /* pGdiComment */
NULL, /* pGetBitmapBits */ NULL, /* pGetBitmapBits */
NULL, /* pGetCharWidth */ NULL, /* pGetCharWidth */
NULL, /* pGetDIBColorTable */
NULL, /* pGetDIBits */ NULL, /* pGetDIBits */
MFDRV_GetDeviceCaps, /* pGetDeviceCaps */ MFDRV_GetDeviceCaps, /* pGetDeviceCaps */
NULL, /* pGetDeviceGammaRamp */ NULL, /* pGetDeviceGammaRamp */