gdi32: Use ntgdi functions to create stock objects.
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:
parent
05a3384ca8
commit
c33b7b583b
|
@ -80,12 +80,7 @@ static const LOGBRUSH LtGrayBrush = { BS_SOLID, RGB(192,192,192), 0 };
|
||||||
static const LOGBRUSH GrayBrush = { BS_SOLID, RGB(128,128,128), 0 };
|
static const LOGBRUSH GrayBrush = { BS_SOLID, RGB(128,128,128), 0 };
|
||||||
static const LOGBRUSH DkGrayBrush = { BS_SOLID, RGB(64,64,64), 0 };
|
static const LOGBRUSH DkGrayBrush = { BS_SOLID, RGB(64,64,64), 0 };
|
||||||
|
|
||||||
static const LOGPEN WhitePen = { PS_SOLID, { 0, 0 }, RGB(255,255,255) };
|
|
||||||
static const LOGPEN BlackPen = { PS_SOLID, { 0, 0 }, RGB(0,0,0) };
|
|
||||||
static const LOGPEN NullPen = { PS_NULL, { 0, 0 }, 0 };
|
|
||||||
|
|
||||||
static const LOGBRUSH DCBrush = { BS_SOLID, RGB(255,255,255), 0 };
|
static const LOGBRUSH DCBrush = { BS_SOLID, RGB(255,255,255), 0 };
|
||||||
static const LOGPEN DCPen = { PS_SOLID, { 0, 0 }, RGB(0,0,0) };
|
|
||||||
|
|
||||||
/* reserve one extra entry for the stock default bitmap */
|
/* reserve one extra entry for the stock default bitmap */
|
||||||
/* this is what Windows does too */
|
/* this is what Windows does too */
|
||||||
|
@ -582,6 +577,15 @@ DWORD get_system_dpi(void)
|
||||||
return pGetDpiForSystem ? pGetDpiForSystem() : 96;
|
return pGetDpiForSystem ? pGetDpiForSystem() : 96;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HFONT create_font( const LOGFONTW *deffont )
|
||||||
|
{
|
||||||
|
ENUMLOGFONTEXDVW lf;
|
||||||
|
|
||||||
|
memset( &lf, 0, sizeof(lf) );
|
||||||
|
lf.elfEnumLogfontEx.elfLogFont = *deffont;
|
||||||
|
return NtGdiHfontCreate( &lf, sizeof(lf), 0, 0, NULL );
|
||||||
|
}
|
||||||
|
|
||||||
static HFONT create_scaled_font( const LOGFONTW *deffont )
|
static HFONT create_scaled_font( const LOGFONTW *deffont )
|
||||||
{
|
{
|
||||||
LOGFONTW lf;
|
LOGFONTW lf;
|
||||||
|
@ -595,7 +599,7 @@ static HFONT create_scaled_font( const LOGFONTW *deffont )
|
||||||
|
|
||||||
lf = *deffont;
|
lf = *deffont;
|
||||||
lf.lfHeight = MulDiv( lf.lfHeight, dpi, 96 );
|
lf.lfHeight = MulDiv( lf.lfHeight, dpi, 96 );
|
||||||
return CreateFontIndirectW( &lf );
|
return create_font( &lf );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_gdi_shared(void)
|
static void set_gdi_shared(void)
|
||||||
|
@ -648,24 +652,24 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
|
||||||
stock_objects[BLACK_BRUSH] = create_brush( &BlackBrush );
|
stock_objects[BLACK_BRUSH] = create_brush( &BlackBrush );
|
||||||
stock_objects[NULL_BRUSH] = create_brush( &NullBrush );
|
stock_objects[NULL_BRUSH] = create_brush( &NullBrush );
|
||||||
|
|
||||||
stock_objects[WHITE_PEN] = CreatePenIndirect( &WhitePen );
|
stock_objects[WHITE_PEN] = create_pen( PS_SOLID, 0, RGB(255,255,255) );
|
||||||
stock_objects[BLACK_PEN] = CreatePenIndirect( &BlackPen );
|
stock_objects[BLACK_PEN] = create_pen( PS_SOLID, 0, RGB(0,0,0) );
|
||||||
stock_objects[NULL_PEN] = CreatePenIndirect( &NullPen );
|
stock_objects[NULL_PEN] = create_pen( PS_NULL, 0, RGB(0,0,0) );
|
||||||
|
|
||||||
stock_objects[DEFAULT_PALETTE] = PALETTE_Init();
|
stock_objects[DEFAULT_PALETTE] = PALETTE_Init();
|
||||||
stock_objects[DEFAULT_BITMAP] = CreateBitmap( 1, 1, 1, 1, NULL );
|
stock_objects[DEFAULT_BITMAP] = NtGdiCreateBitmap( 1, 1, 1, 1, NULL );
|
||||||
|
|
||||||
/* language-independent stock fonts */
|
/* language-independent stock fonts */
|
||||||
stock_objects[OEM_FIXED_FONT] = CreateFontIndirectW( &OEMFixedFont );
|
stock_objects[OEM_FIXED_FONT] = create_font( &OEMFixedFont );
|
||||||
stock_objects[ANSI_FIXED_FONT] = CreateFontIndirectW( &AnsiFixedFont );
|
stock_objects[ANSI_FIXED_FONT] = create_font( &AnsiFixedFont );
|
||||||
stock_objects[ANSI_VAR_FONT] = CreateFontIndirectW( &AnsiVarFont );
|
stock_objects[ANSI_VAR_FONT] = create_font( &AnsiVarFont );
|
||||||
|
|
||||||
/* language-dependent stock fonts */
|
/* language-dependent stock fonts */
|
||||||
deffonts = get_default_fonts(get_default_charset());
|
deffonts = get_default_fonts(get_default_charset());
|
||||||
stock_objects[SYSTEM_FONT] = CreateFontIndirectW( &deffonts->SystemFont );
|
stock_objects[SYSTEM_FONT] = create_font( &deffonts->SystemFont );
|
||||||
stock_objects[DEVICE_DEFAULT_FONT] = CreateFontIndirectW( &deffonts->DeviceDefaultFont );
|
stock_objects[DEVICE_DEFAULT_FONT] = create_font( &deffonts->DeviceDefaultFont );
|
||||||
stock_objects[SYSTEM_FIXED_FONT] = CreateFontIndirectW( &deffonts->SystemFixedFont );
|
stock_objects[SYSTEM_FIXED_FONT] = create_font( &deffonts->SystemFixedFont );
|
||||||
stock_objects[DEFAULT_GUI_FONT] = CreateFontIndirectW( &deffonts->DefaultGuiFont );
|
stock_objects[DEFAULT_GUI_FONT] = create_font( &deffonts->DefaultGuiFont );
|
||||||
|
|
||||||
scaled_stock_objects[OEM_FIXED_FONT] = create_scaled_font( &OEMFixedFont );
|
scaled_stock_objects[OEM_FIXED_FONT] = create_scaled_font( &OEMFixedFont );
|
||||||
scaled_stock_objects[SYSTEM_FONT] = create_scaled_font( &deffonts->SystemFont );
|
scaled_stock_objects[SYSTEM_FONT] = create_scaled_font( &deffonts->SystemFont );
|
||||||
|
@ -673,7 +677,7 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
|
||||||
scaled_stock_objects[DEFAULT_GUI_FONT] = create_scaled_font( &deffonts->DefaultGuiFont );
|
scaled_stock_objects[DEFAULT_GUI_FONT] = create_scaled_font( &deffonts->DefaultGuiFont );
|
||||||
|
|
||||||
stock_objects[DC_BRUSH] = create_brush( &DCBrush );
|
stock_objects[DC_BRUSH] = create_brush( &DCBrush );
|
||||||
stock_objects[DC_PEN] = CreatePenIndirect( &DCPen );
|
stock_objects[DC_PEN] = create_pen( PS_SOLID, 0, RGB(0,0,0) );
|
||||||
|
|
||||||
/* clear the NOSYSTEM bit on all stock objects*/
|
/* clear the NOSYSTEM bit on all stock objects*/
|
||||||
for (i = 0; i < NB_STOCK_OBJECTS; i++)
|
for (i = 0; i < NB_STOCK_OBJECTS; i++)
|
||||||
|
|
|
@ -453,6 +453,9 @@ extern HPALETTE PALETTE_Init(void) DECLSPEC_HIDDEN;
|
||||||
extern UINT get_palette_entries( HPALETTE hpalette, UINT start, UINT count,
|
extern UINT get_palette_entries( HPALETTE hpalette, UINT start, UINT count,
|
||||||
PALETTEENTRY *entries ) DECLSPEC_HIDDEN;
|
PALETTEENTRY *entries ) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
|
/* pen.c */
|
||||||
|
extern HPEN create_pen( INT style, INT width, COLORREF color ) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
/* region.c */
|
/* region.c */
|
||||||
extern BOOL add_rect_to_region( HRGN rgn, const RECT *rect ) DECLSPEC_HIDDEN;
|
extern BOOL add_rect_to_region( HRGN rgn, const RECT *rect ) DECLSPEC_HIDDEN;
|
||||||
extern INT mirror_region( HRGN dst, HRGN src, INT width ) DECLSPEC_HIDDEN;
|
extern INT mirror_region( HRGN dst, HRGN src, INT width ) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -89,7 +89,7 @@ HPALETTE PALETTE_Init(void)
|
||||||
palPtr->palPalEntry[i].peBlue = entries[i < 10 ? i : 236 + i].rgbBlue;
|
palPtr->palPalEntry[i].peBlue = entries[i < 10 ? i : 236 + i].rgbBlue;
|
||||||
palPtr->palPalEntry[i].peFlags = 0;
|
palPtr->palPalEntry[i].peFlags = 0;
|
||||||
}
|
}
|
||||||
return CreatePalette( palPtr );
|
return NtGdiCreatePaletteInternal( palPtr, palPtr->palNumEntries );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -50,17 +50,12 @@ static const struct gdi_obj_funcs pen_funcs =
|
||||||
PEN_DeleteObject /* pDeleteObject */
|
PEN_DeleteObject /* pDeleteObject */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
HPEN create_pen( INT style, INT width, COLORREF color )
|
||||||
/***********************************************************************
|
|
||||||
* NtGdiCreatePen (win32u.@)
|
|
||||||
*/
|
|
||||||
HPEN WINAPI NtGdiCreatePen( INT style, INT width, COLORREF color, HBRUSH brush )
|
|
||||||
{
|
{
|
||||||
PENOBJ *penPtr;
|
PENOBJ *penPtr;
|
||||||
HPEN hpen;
|
HPEN hpen;
|
||||||
|
|
||||||
TRACE( "%d %d %06x\n", style, width, color );
|
TRACE( "%d %d %06x\n", style, width, color );
|
||||||
if (brush) FIXME( "brush not supported\n" );
|
|
||||||
|
|
||||||
switch (style)
|
switch (style)
|
||||||
{
|
{
|
||||||
|
@ -72,7 +67,6 @@ HPEN WINAPI NtGdiCreatePen( INT style, INT width, COLORREF color, HBRUSH brush )
|
||||||
case PS_INSIDEFRAME:
|
case PS_INSIDEFRAME:
|
||||||
break;
|
break;
|
||||||
case PS_NULL:
|
case PS_NULL:
|
||||||
if ((hpen = GetStockObject( NULL_PEN ))) return hpen;
|
|
||||||
width = 1;
|
width = 1;
|
||||||
color = 0;
|
color = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -92,6 +86,16 @@ HPEN WINAPI NtGdiCreatePen( INT style, INT width, COLORREF color, HBRUSH brush )
|
||||||
return hpen;
|
return hpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NtGdiCreatePen (win32u.@)
|
||||||
|
*/
|
||||||
|
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 );
|
||||||
|
return create_pen( style, width, color );
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NtGdiExtCreatePen (win32u.@)
|
* NtGdiExtCreatePen (win32u.@)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue