From 325f646fdc4ee762255e9d942b6a5c792092fec6 Mon Sep 17 00:00:00 2001 From: Dave Belanger Date: Sat, 4 Oct 2003 03:08:25 +0000 Subject: [PATCH] Implemented the SetArcDirection metarecord in EMF driver. --- dlls/gdi/driver.c | 1 + dlls/gdi/enhmfdrv/enhmetafiledrv.h | 1 + dlls/gdi/enhmfdrv/graphics.c | 17 +++++++++++++++++ dlls/gdi/enhmfdrv/init.c | 1 + dlls/gdi/mfdrv/init.c | 1 + include/gdi.h | 1 + objects/dc.c | 4 ++++ 7 files changed, 26 insertions(+) diff --git a/dlls/gdi/driver.c b/dlls/gdi/driver.c index 08404cf9e9c..408cbddb2e0 100644 --- a/dlls/gdi/driver.c +++ b/dlls/gdi/driver.c @@ -153,6 +153,7 @@ static struct graphics_driver *create_driver( HMODULE module ) GET_FUNC(SelectFont); GET_FUNC(SelectPalette); GET_FUNC(SelectPen); + GET_FUNC(SetArcDirection); GET_FUNC(SetBitmapBits); GET_FUNC(SetBkColor); GET_FUNC(SetBkMode); diff --git a/dlls/gdi/enhmfdrv/enhmetafiledrv.h b/dlls/gdi/enhmfdrv/enhmetafiledrv.h index 9df1fc31593..47a072d1ac6 100644 --- a/dlls/gdi/enhmfdrv/enhmetafiledrv.h +++ b/dlls/gdi/enhmfdrv/enhmetafiledrv.h @@ -119,6 +119,7 @@ extern HBRUSH EMFDRV_SelectBrush( PHYSDEV dev, HBRUSH handle ); extern BOOL EMFDRV_SelectClipPath( PHYSDEV dev, INT iMode ); extern HFONT EMFDRV_SelectFont( PHYSDEV dev, HFONT handle ); extern HPEN EMFDRV_SelectPen( PHYSDEV dev, HPEN handle ); +extern INT EMFDRV_SetArcDirection( PHYSDEV dev, INT arcDirection ); extern COLORREF EMFDRV_SetBkColor( PHYSDEV dev, COLORREF color ); extern INT EMFDRV_SetBkMode( PHYSDEV dev, INT mode ); extern INT EMFDRV_SetDIBitsToDevice( PHYSDEV dev, INT xDest, INT yDest, diff --git a/dlls/gdi/enhmfdrv/graphics.c b/dlls/gdi/enhmfdrv/graphics.c index ca5eab41a49..cd7713d17ad 100644 --- a/dlls/gdi/enhmfdrv/graphics.c +++ b/dlls/gdi/enhmfdrv/graphics.c @@ -693,3 +693,20 @@ BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, HeapFree( GetProcessHeap(), 0, pemr ); return ret; } + +/********************************************************************** + * EMFDRV_SetArcDirection + */ +INT EMFDRV_SetArcDirection(PHYSDEV dev, INT arcDirection) +{ + EMRSETARCDIRECTION emr; + + emr.emr.iType = EMR_SETARCDIRECTION; + emr.emr.nSize = sizeof(emr); + emr.iArcDirection = arcDirection; + + EMFDRV_WriteRecord(dev, &emr.emr); + + /* We don't know the old arc direction and we don't care... */ + return 0; +} diff --git a/dlls/gdi/enhmfdrv/init.c b/dlls/gdi/enhmfdrv/init.c index 3ea16c93534..4c7323b6ccd 100644 --- a/dlls/gdi/enhmfdrv/init.c +++ b/dlls/gdi/enhmfdrv/init.c @@ -112,6 +112,7 @@ static const DC_FUNCTIONS EMFDRV_Funcs = EMFDRV_SelectFont, /* pSelectFont */ NULL, /* pSelectPalette */ EMFDRV_SelectPen, /* pSelectPen */ + EMFDRV_SetArcDirection, /* pSetArcDirection */ NULL, /* pSetBitmapBits */ EMFDRV_SetBkColor, /* pSetBkColor */ EMFDRV_SetBkMode, /* pSetBkMode */ diff --git a/dlls/gdi/mfdrv/init.c b/dlls/gdi/mfdrv/init.c index d5d077cf263..24a8947c8b4 100644 --- a/dlls/gdi/mfdrv/init.c +++ b/dlls/gdi/mfdrv/init.c @@ -113,6 +113,7 @@ static const DC_FUNCTIONS MFDRV_Funcs = MFDRV_SelectFont, /* pSelectFont */ MFDRV_SelectPalette, /* pSelectPalette */ MFDRV_SelectPen, /* pSelectPen */ + NULL, /* pSetArcDirection */ NULL, /* pSetBitmapBits */ MFDRV_SetBkColor, /* pSetBkColor */ MFDRV_SetBkMode, /* pSetBkMode */ diff --git a/include/gdi.h b/include/gdi.h index 85e41b1f12a..70001484b4c 100644 --- a/include/gdi.h +++ b/include/gdi.h @@ -252,6 +252,7 @@ typedef struct tagDC_FUNCS HFONT (*pSelectFont)(PHYSDEV,HFONT); HPALETTE (*pSelectPalette)(PHYSDEV,HPALETTE,BOOL); HPEN (*pSelectPen)(PHYSDEV,HPEN); + INT (*pSetArcDirection)(PHYSDEV,INT); LONG (*pSetBitmapBits)(HBITMAP,const void*,LONG); COLORREF (*pSetBkColor)(PHYSDEV,COLORREF); INT (*pSetBkMode)(PHYSDEV,INT); diff --git a/objects/dc.c b/objects/dc.c index 486d67e95df..d0aebe903b7 100644 --- a/objects/dc.c +++ b/objects/dc.c @@ -987,6 +987,10 @@ INT WINAPI SetArcDirection( HDC hdc, INT nDirection ) if ((dc = DC_GetDCPtr( hdc ))) { + if (dc->funcs->pSetArcDirection) + { + dc->funcs->pSetArcDirection(dc->physDev, nDirection); + } nOldDirection = dc->ArcDirection; dc->ArcDirection = nDirection; GDI_ReleaseObj( hdc );