diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index db1c63ec62c12967b3a704a1e2c9ba1dbfd1b85c..c8124b2596012472313c1443aba6bdee13103f8f 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -1394,34 +1394,6 @@ UINT WINAPI SetBoundsRect(HDC hdc, const RECT* rect, UINT flags) } -/*********************************************************************** - * SetRelAbs (GDI32.@) - */ -INT WINAPI SetRelAbs( HDC hdc, INT mode ) -{ - INT ret = 0; - DC *dc; - - if ((mode != ABSOLUTE) && (mode != RELATIVE)) - { - SetLastError(ERROR_INVALID_PARAMETER); - return 0; - } - if ((dc = get_dc_ptr( hdc ))) - { - PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetRelAbs ); - mode = physdev->funcs->pSetRelAbs( physdev, mode ); - if (mode) - { - ret = dc->attr->rel_abs_mode; - dc->attr->rel_abs_mode = mode; - } - release_dc_ptr( dc ); - } - return ret; -} - - /*********************************************************************** * GetPolyFillMode (GDI32.@) */ diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h index 01a451576c129fea6170ccfc3abb92017b4bd71a..e57524d0a294498db5b55a6f46cdd900c42968c2 100644 --- a/dlls/gdi32/gdi_private.h +++ b/dlls/gdi32/gdi_private.h @@ -68,6 +68,7 @@ extern BOOL METADC_RoundRect( HDC hdc, INT left, INT top, INT right, INT bottom, INT ell_width, INT ell_height ) DECLSPEC_HIDDEN; extern BOOL METADC_SetBkMode( HDC hdc, INT mode ) DECLSPEC_HIDDEN; extern BOOL METADC_SetPixel( HDC hdc, INT x, INT y, COLORREF color ) DECLSPEC_HIDDEN; +extern BOOL METADC_SetRelAbs( HDC hdc, INT mode ) DECLSPEC_HIDDEN; extern BOOL METADC_SetROP2( HDC hdc, INT rop ) DECLSPEC_HIDDEN; extern BOOL METADC_SetTextAlign( HDC hdc, UINT align ) DECLSPEC_HIDDEN; diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c index 1523cb5e9297dad3d60b4023297ee8327817d44c..7aaa7a24b9ffb80d709a5dd3385fa94e75271d99 100644 --- a/dlls/gdi32/gdidc.c +++ b/dlls/gdi32/gdidc.c @@ -193,6 +193,27 @@ INT WINAPI GetRelAbs( HDC hdc, DWORD ignore ) return dc_attr ? dc_attr->rel_abs_mode : 0; } +/*********************************************************************** + * SetRelAbs (GDI32.@) + */ +INT WINAPI SetRelAbs( HDC hdc, INT mode ) +{ + DC_ATTR *dc_attr; + INT ret; + + if (mode != ABSOLUTE && mode != RELATIVE) + { + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + } + + if (is_meta_dc( hdc )) return METADC_SetRelAbs( hdc, mode ); + if (!(dc_attr = get_dc_attr( hdc ))) return 0; + ret = dc_attr->rel_abs_mode; + dc_attr->rel_abs_mode = mode; + return ret; +} + /*********************************************************************** * SetROP2 (GDI32.@) */ diff --git a/dlls/gdi32/mfdrv/dc.c b/dlls/gdi32/mfdrv/dc.c index e20dc5666c99da378891cf9a8da26cbeb6f51c11..661d2e49db4629c6135531cbf652be3740c6d810 100644 --- a/dlls/gdi32/mfdrv/dc.c +++ b/dlls/gdi32/mfdrv/dc.c @@ -55,9 +55,9 @@ BOOL METADC_SetROP2( HDC hdc, INT rop ) return metadc_param1( hdc, META_SETROP2, (WORD)rop ); } -INT CDECL MFDRV_SetRelAbs( PHYSDEV dev, INT mode ) +BOOL METADC_SetRelAbs( HDC hdc, INT mode ) { - return MFDRV_MetaParam1( dev, META_SETRELABS, (WORD)mode) ? mode : 0; + return metadc_param1( hdc, META_SETRELABS, (WORD)mode ); } INT CDECL MFDRV_SetPolyFillMode( PHYSDEV dev, INT mode ) diff --git a/dlls/gdi32/mfdrv/init.c b/dlls/gdi32/mfdrv/init.c index 0a95de9a527244fb886ebeb680c1b6afaeb8de36..729140da700c9ea0c8b658dde1a44168f1464af5 100644 --- a/dlls/gdi32/mfdrv/init.c +++ b/dlls/gdi32/mfdrv/init.c @@ -203,7 +203,7 @@ static const struct gdi_dc_funcs MFDRV_Funcs = MFDRV_SetMapperFlags, /* pSetMapperFlags */ NULL, /* pSetPixel */ MFDRV_SetPolyFillMode, /* pSetPolyFillMode */ - MFDRV_SetRelAbs, /* pSetRelAbs */ + NULL, /* pSetRelAbs */ MFDRV_SetStretchBltMode, /* pSetStretchBltMode */ MFDRV_SetTextCharacterExtra, /* pSetTextCharacterExtra */ MFDRV_SetTextColor, /* pSetTextColor */ diff --git a/dlls/gdi32/mfdrv/metafiledrv.h b/dlls/gdi32/mfdrv/metafiledrv.h index 70802a673d778bc7a5de1997bfc20b8ba67987aa..a4c0f4b3e255c868ec834d424604727bbf710906 100644 --- a/dlls/gdi32/mfdrv/metafiledrv.h +++ b/dlls/gdi32/mfdrv/metafiledrv.h @@ -112,7 +112,6 @@ extern DWORD CDECL MFDRV_SetLayout( PHYSDEV dev, DWORD layout ) DECLSPEC_HIDD extern INT CDECL MFDRV_SetMapMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN; extern DWORD CDECL MFDRV_SetMapperFlags( PHYSDEV dev, DWORD flags ) DECLSPEC_HIDDEN; extern INT CDECL MFDRV_SetPolyFillMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN; -extern INT CDECL MFDRV_SetRelAbs( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN; extern INT CDECL MFDRV_SetStretchBltMode( PHYSDEV dev, INT mode ) DECLSPEC_HIDDEN; extern INT CDECL MFDRV_SetTextCharacterExtra( PHYSDEV dev, INT extra ) DECLSPEC_HIDDEN; extern COLORREF CDECL MFDRV_SetTextColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN;