gdi32: Use internal get_stock_object in ntgdi functions.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2021-09-03 13:59:51 +01:00 committed by Alexandre Julliard
parent 951d8ace18
commit 072a100f66
10 changed files with 47 additions and 23 deletions

View File

@ -785,7 +785,7 @@ BOOL WINAPI MaskBlt(HDC hdcDest, INT nXDest, INT nYDest,
return BitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop));
hbrMask = CreatePatternBrush(hbmMask);
hbrDst = NtGdiSelectBrush(hdcDest, GetStockObject(NULL_BRUSH));
hbrDst = NtGdiSelectBrush( hdcDest, get_stock_object(NULL_BRUSH) );
/* make bitmap */
hDC1 = NtGdiCreateCompatibleDC( hdcDest );

View File

@ -387,7 +387,7 @@ HGDIOBJ WINAPI NtGdiSelectBitmap( HDC hdc, HGDIOBJ handle )
goto done;
}
if (handle != GetStockObject(DEFAULT_BITMAP) && GDI_get_ref_count( handle ))
if (handle != get_stock_object( DEFAULT_BITMAP ) && GDI_get_ref_count( handle ))
{
WARN( "Bitmap already selected in another DC\n" );
GDI_ReleaseObj( handle );

View File

@ -133,10 +133,10 @@ DC *alloc_dc_ptr( DWORD magic )
dc->physDev = &dc->nulldrv;
dc->thread = GetCurrentThreadId();
dc->refcount = 1;
dc->hPen = GDI_inc_ref_count( GetStockObject( BLACK_PEN ));
dc->hBrush = GDI_inc_ref_count( GetStockObject( WHITE_BRUSH ));
dc->hFont = GDI_inc_ref_count( GetStockObject( SYSTEM_FONT ));
dc->hPalette = GetStockObject( DEFAULT_PALETTE );
dc->hPen = GDI_inc_ref_count( get_stock_object( BLACK_PEN ));
dc->hBrush = GDI_inc_ref_count( get_stock_object( WHITE_BRUSH ));
dc->hFont = GDI_inc_ref_count( get_stock_object( SYSTEM_FONT ));
dc->hPalette = get_stock_object( DEFAULT_PALETTE );
set_initial_dc_state( dc );
@ -395,11 +395,11 @@ static BOOL reset_dc_state( HDC hdc )
set_initial_dc_state( dc );
set_bk_color( dc, RGB( 255, 255, 255 ));
set_text_color( dc, RGB( 0, 0, 0 ));
NtGdiSelectBrush( hdc, GetStockObject( WHITE_BRUSH ));
NtGdiSelectFont( hdc, GetStockObject( SYSTEM_FONT ));
NtGdiSelectPen( hdc, GetStockObject( BLACK_PEN ));
NtGdiSelectBrush( hdc, get_stock_object( WHITE_BRUSH ));
NtGdiSelectFont( hdc, get_stock_object( SYSTEM_FONT ));
NtGdiSelectPen( hdc, get_stock_object( BLACK_PEN ));
NtGdiSetVirtualResolution( hdc, 0, 0, 0, 0 );
GDISelectPalette( hdc, GetStockObject( DEFAULT_PALETTE ), FALSE );
GDISelectPalette( hdc, get_stock_object( DEFAULT_PALETTE ), FALSE );
NtGdiSetBoundsRect( hdc, NULL, DCB_DISABLE );
NtGdiAbortPath( hdc );
@ -659,7 +659,7 @@ HDC WINAPI CreateDCW( LPCWSTR driver, LPCWSTR device, LPCWSTR output,
if (!(dc = alloc_dc_ptr( NTGDI_OBJ_DC ))) return 0;
hdc = dc->hSelf;
dc->hBitmap = GDI_inc_ref_count( GetStockObject( DEFAULT_BITMAP ));
dc->hBitmap = GDI_inc_ref_count( get_stock_object( DEFAULT_BITMAP ));
TRACE("(driver=%s, device=%s, output=%s): returning %p\n",
debugstr_w(driver), debugstr_w(device), debugstr_w(output), dc->hSelf );
@ -727,7 +727,7 @@ HDC WINAPI NtGdiCreateCompatibleDC( HDC hdc )
TRACE("(%p): returning %p\n", hdc, dc->hSelf );
dc->hBitmap = GDI_inc_ref_count( GetStockObject( DEFAULT_BITMAP ));
dc->hBitmap = GDI_inc_ref_count( get_stock_object( DEFAULT_BITMAP ));
dc->attr->vis_rect.left = 0;
dc->attr->vis_rect.top = 0;
dc->attr->vis_rect.right = 1;

View File

@ -1770,7 +1770,7 @@ COLORREF CDECL dibdrv_SetDCPenColor( PHYSDEV dev, COLORREF color )
dibdrv_physdev *pdev = get_dibdrv_pdev(dev);
DC *dc = get_physdev_dc( dev );
if (dc->hPen == GetStockObject( DC_PEN ))
if (dc->hPen == get_stock_object( DC_PEN ))
pdev->pen_brush.colorref = color;
return color;
@ -2136,7 +2136,7 @@ HBRUSH CDECL dibdrv_SelectBrush( PHYSDEV dev, HBRUSH hbrush, const struct brush_
GetObjectW( hbrush, sizeof(logbrush), &logbrush );
if (hbrush == GetStockObject( DC_BRUSH ))
if (hbrush == get_stock_object( DC_BRUSH ))
logbrush.lbColor = dc->attr->brush_color;
select_brush( pdev, &pdev->brush, &logbrush, pattern, TRUE );
@ -2188,7 +2188,7 @@ HPEN CDECL dibdrv_SelectPen( PHYSDEV dev, HPEN hpen, const struct brush_pattern
pdev->pen_endcap = logpen.lopnStyle & PS_ENDCAP_MASK;
pdev->pen_width = get_pen_device_width( dc, logpen.lopnWidth.x );
if (hpen == GetStockObject( DC_PEN ))
if (hpen == get_stock_object( DC_PEN ))
logbrush.lbColor = dc->attr->pen_color;
set_dash_pattern( &pdev->pen_pattern, 0, NULL );
@ -2256,7 +2256,7 @@ COLORREF CDECL dibdrv_SetDCBrushColor( PHYSDEV dev, COLORREF color )
dibdrv_physdev *pdev = get_dibdrv_pdev(dev);
DC *dc = get_physdev_dc( dev );
if (dc->hBrush == GetStockObject( DC_BRUSH ))
if (dc->hBrush == get_stock_object( DC_BRUSH ))
{
LOGBRUSH logbrush = { BS_SOLID, color, 0 };
select_brush( pdev, &pdev->brush, &logbrush, NULL, TRUE );

View File

@ -5289,7 +5289,7 @@ done:
UINT size = NtGdiGetOutlineTextMetricsInternalW( hdc, 0, NULL, 0 );
OUTLINETEXTMETRICW* otm = NULL;
POINT pts[5];
HPEN hpen = NtGdiSelectPen(hdc, GetStockObject(NULL_PEN));
HPEN hpen = NtGdiSelectPen( hdc, get_stock_object(NULL_PEN) );
HBRUSH hbrush = CreateSolidBrush( dc->attr->text_color );
hbrush = NtGdiSelectBrush(hdc, hbrush);

View File

@ -610,6 +610,29 @@ static void set_gdi_shared(void)
NtCurrentTeb()->Peb->GdiSharedHandleTable = &gdi_shared;
}
HGDIOBJ get_stock_object( INT obj )
{
assert( obj >= 0 && obj <= STOCK_LAST + 1 && obj != 9 );
switch (obj)
{
case OEM_FIXED_FONT:
if (get_system_dpi() != 96) obj = 9;
break;
case SYSTEM_FONT:
if (get_system_dpi() != 96) obj = STOCK_LAST + 2;
break;
case SYSTEM_FIXED_FONT:
if (get_system_dpi() != 96) obj = STOCK_LAST + 3;
break;
case DEFAULT_GUI_FONT:
if (get_system_dpi() != 96) obj = STOCK_LAST + 4;
break;
}
return entry_to_handle( handle_entry( ULongToHandle( obj + FIRST_GDI_HANDLE )));
}
static void init_stock_objects(void)
{
const struct DefaultFontInfo *deffonts;

View File

@ -403,6 +403,7 @@ extern HGDIOBJ GDI_inc_ref_count( HGDIOBJ handle ) DECLSPEC_HIDDEN;
extern BOOL GDI_dec_ref_count( HGDIOBJ handle ) DECLSPEC_HIDDEN;
extern DWORD get_dpi(void) DECLSPEC_HIDDEN;
extern DWORD get_system_dpi(void) DECLSPEC_HIDDEN;
extern HGDIOBJ get_stock_object( INT obj ) DECLSPEC_HIDDEN;
/* mapping.c */
extern BOOL dp_to_lp( DC *dc, POINT *points, INT count ) DECLSPEC_HIDDEN;

View File

@ -100,7 +100,7 @@ BOOL CDECL nulldrv_FrameRgn( PHYSDEV dev, HRGN rgn, HBRUSH brush, INT width, INT
BOOL CDECL nulldrv_InvertRgn( PHYSDEV dev, HRGN rgn )
{
INT prev_rop = SetROP2( dev->hdc, R2_NOT );
BOOL ret = NtGdiFillRgn( dev->hdc, rgn, GetStockObject(BLACK_BRUSH) );
BOOL ret = NtGdiFillRgn( dev->hdc, rgn, get_stock_object(BLACK_BRUSH) );
SetROP2( dev->hdc, prev_rop );
return ret;
}

View File

@ -202,7 +202,7 @@ static UINT set_palette_entries( HPALETTE hpalette, UINT start, UINT count,
TRACE("hpal=%p,start=%i,count=%i\n",hpalette,start,count );
hpalette = get_full_gdi_handle( hpalette );
if (hpalette == GetStockObject(DEFAULT_PALETTE)) return 0;
if (hpalette == get_stock_object(DEFAULT_PALETTE)) return 0;
palPtr = GDI_GetObjPtr( hpalette, NTGDI_OBJ_PAL );
if (!palPtr) return 0;
@ -255,7 +255,7 @@ static BOOL animate_palette( HPALETTE hPal, UINT StartIndex, UINT NumEntries,
TRACE("%p (%i - %i)\n", hPal, StartIndex,StartIndex+NumEntries);
hPal = get_full_gdi_handle( hPal );
if( hPal != GetStockObject(DEFAULT_PALETTE) )
if( hPal != get_stock_object(DEFAULT_PALETTE) )
{
PALETTEOBJ * palPtr;
UINT pal_entries;
@ -412,7 +412,7 @@ COLORREF CDECL nulldrv_GetNearestColor( PHYSDEV dev, COLORREF color )
PALETTEENTRY entry;
HPALETTE hpal = dc->hPalette;
if (!hpal) hpal = GetStockObject( DEFAULT_PALETTE );
if (!hpal) hpal = get_stock_object( DEFAULT_PALETTE );
if (spec_type == 2) /* PALETTERGB */
index = NtGdiGetNearestPaletteIndex( hpal, color );
else /* PALETTEINDEX */
@ -549,7 +549,7 @@ UINT WINAPI GDIRealizePalette( HDC hdc )
TRACE("%p...\n", hdc );
if( dc->hPalette == GetStockObject( DEFAULT_PALETTE ))
if( dc->hPalette == get_stock_object( DEFAULT_PALETTE ))
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pRealizeDefaultPalette );
realized = physdev->funcs->pRealizeDefaultPalette( physdev );

View File

@ -92,7 +92,7 @@ HPEN create_pen( INT style, INT width, COLORREF color )
HPEN WINAPI NtGdiCreatePen( INT style, INT width, COLORREF color, HBRUSH brush )
{
if (brush) FIXME( "brush not supported\n" );
if (style == PS_NULL) return GetStockObject( NULL_PEN );
if (style == PS_NULL) return get_stock_object( NULL_PEN );
return create_pen( style, width, color );
}