Fix copy count and added dc path flags and support new arc direction.

svn path=/trunk/; revision=32992
This commit is contained in:
James Tabor 2008-04-17 01:12:58 +00:00
parent fb4af9ff8f
commit cbd1d50bb1
2 changed files with 31 additions and 2 deletions

View file

@ -9,6 +9,11 @@
// Get/SetBounds/Rect support.
#define DCB_WINDOWMGR 0x8000 // Queries the Windows bounding rectangle instead of the application's
/* DCPATH flPath */
#define DCPATH_ACTIVE 0x0001
#define DCPATH_SAVE 0x0002
#define DCPATH_CLOCKWISE 0x0004
/* DC flags */
#define DC_SAVED 0x0002 /* It is a saved DC */
#define DC_DIRTY 0x0004 /* hVisRgn has to be updated */

View file

@ -2187,6 +2187,8 @@ NtGdiGetAndSetDCDword(
switch (u)
{
case GdtGetSetCopyCount:
SafeResult = dc->ulCopyCount;
dc->ulCopyCount = dwIn;
break;
case GdiGetSetTextAlign:
SafeResult = Dc_Attr->lTextAlign;
@ -2213,9 +2215,31 @@ NtGdiGetAndSetDCDword(
{
SetLastWin32Error(ERROR_INVALID_PARAMETER);
Ret = FALSE;
break;
}
SafeResult = dc->w.ArcDirection;
dc->w.ArcDirection = dwIn;
if ( Dc_Attr->dwLayout & LAYOUT_RTL )
{
SafeResult = AD_CLOCKWISE - ((dc->DcLevel.flPath & DCPATH_CLOCKWISE) != 0);
if ( dwIn == AD_CLOCKWISE )
{
dc->DcLevel.flPath |= DCPATH_CLOCKWISE;
break;
}
dc->DcLevel.flPath &= ~DCPATH_CLOCKWISE;
}
else
{
SafeResult = ((dc->DcLevel.flPath & DCPATH_CLOCKWISE) != 0) + AD_COUNTERCLOCKWISE;
if ( dwIn == AD_COUNTERCLOCKWISE)
{
dc->DcLevel.flPath |= DCPATH_CLOCKWISE;
break;
}
dc->DcLevel.flPath &= ~DCPATH_CLOCKWISE;
}
SafeResult = dc->w.ArcDirection; // Fixme
dc->w.ArcDirection = dwIn; // Fixme
break;
default:
SetLastWin32Error(ERROR_INVALID_PARAMETER);