- Updated NtGdiGet/AndSet/DCDword.
- Changes to other files to reflect the updates and removals.
svn path=/trunk/; revision=28248
GdiSwapBuffers@4
GdiTransparentBlt@44=NtGdiTransparentBlt@44
GdiValidateHandle@4
-GetArcDirection@4=NtGdiGetArcDirection@4
+GetArcDirection@4
GetAspectRatioFilterEx@8
GetBitmapAttributes@4
GetBitmapBits@12=NtGdiGetBitmapBits@12
SelectObject@8=NtGdiSelectObject@8
SelectPalette@12=NtGdiSelectPalette@12
SetAbortProc@8
-SetArcDirection@8=NtGdiSetArcDirection@8
+SetArcDirection@8
SetBitmapAttributes@8
SetBitmapBits@12=NtGdiSetBitmapBits@12
SetBitmapDimensionEx@16=NtGdiSetBitmapDimensionEx@16
}
-/*
- * @unimplemented
- */
-int
-STDCALL
-GetTextCharacterExtra(
- HDC hDc
- )
-{
- return NtGdiGetSetTextCharExtra( hDc, 0, FALSE);
-}
-
-
/*
* @unimplemented
*/
}
-/*
- * @unimplemented
- */
-int
-STDCALL
-SetTextCharacterExtra(
- HDC hDC,
- int CharExtra
- )
-{
- return NtGdiGetSetTextCharExtra( hDC, CharExtra, TRUE);
-}
-
-
/*
* @unimplemented
*/
}
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-SetRelAbs(
- DWORD a0,
- DWORD a1
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
/*
* @unimplemented
*/
}
+INT
+STDCALL
+GetArcDirection( HDC hdc )
+{
+ return GetDCDWord( hdc, GdiGetArcDirection, 0);
+}
+
+
+INT
+STDCALL
+SetArcDirection( HDC hdc, INT nDirection )
+{
+ return GetAndSetDCDWord( hdc, GdiGetSetArcDirection, nDirection, 0, 0, 0 );
+}
+
+
/*
* @implemented
*/
}
+/*
+ * @implemented
+ */
+DWORD
+STDCALL
+SetRelAbs(
+ HDC hdc,
+ INT Mode
+ )
+{
+ return GetAndSetDCDWord( hdc, GdiGetSetRelAbs, Mode, 0, 0, 0 );
+}
+
+
/*
* @implemented
*/
}
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+GetTextCharacterExtra(
+ HDC hDc
+ )
+{
+#if 0
+ PDC_ATTR Dc_Attr;
+
+ if (!GdiGetHandleUserData((HGDIOBJ) hDc, (PVOID) &Dc_Attr)) return 0;
+ return Dc_Attr->lTextExtra;
+#endif
+ // Do it this way for now.
+ return GetDCDWord( hDc, GdiGetTextCharExtra, 0);
+}
+
+
/*
* @implemented
*/
return TRUE;
}
+
+
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+SetTextCharacterExtra(
+ HDC hDC,
+ int CharExtra
+ )
+{
+ INT cExtra = 0x80000000;
+// PDC_ATTR Dc_Attr;
+
+ if (CharExtra == cExtra)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return cExtra;
+ }
+#if 0
+ if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+ {
+ return 0; //call MFDRV META_SETTEXTCHAREXTRA
+ }
+ if (!GdiGetHandleUserData((HGDIOBJ) hDC, (PVOID) &Dc_Attr)) return cExtra;
+
+ if (NtCurrentTeb()->GdiTebBatch.HDC == hDC)
+ {
+ if (Dc_Attr->ulDirty_ & DC_FONTTEXT_DIRTY)
+ {
+ NtGdiFlush(); // Sync up Dc_Attr from Kernel space.
+ Dc_Attr->ulDirty_ &= ~(DC_MODE_DIRTY|DC_FONTTEXT_DIRTY);
+ }
+ }
+ cExtra = Dc_Attr->lTextExtra;
+ Dc_Attr->lTextExtra = CharExtra;
+ return cExrta;
+#endif
+// Do this for now.
+ return GetAndSetDCDWord( hDC, GdiGetSetTextCharExtra, CharExtra, 0, 0, 0 );
+}
+
+
CONST LPBYTE Data
);
-/* Use NtGdiGetDCDword with GdiGetArcDirection. */
-INT
-STDCALL
-NtGdiGetArcDirection ( HDC hDC );
-
/* Should be done in user-mode. */
BOOL
STDCALL
/* Should be done in user-mode using shared GDI Objects. */
INT STDCALL NtGdiGetROP2(HDC hDC);
-/* Should be done in user-mode using shared GDI Objects. */
-INT
-STDCALL
-NtGdiGetSetTextCharExtra( HDC hDC, INT CharExtra, BOOL Set);
-
/* Should be done in user-mode using shared GDI Objects. */
INT STDCALL NtGdiGetStretchBltMode(HDC hDC);
NtGdiSetAbortProc(HDC hDC,
ABORTPROC AbortProc);
-/* Use NtGdiGetAndSetDCDword with GdiGetSetArcDirection. */
-int
-STDCALL
-NtGdiSetArcDirection(HDC hDC,
- int ArcDirection);
-
/* Use NtGdiSetBitmapDimension. */
BOOL
STDCALL
SafeResult = dc->Dc_Attr.lRelAbs;
break;
case GdiGetBreakExtra:
+ SafeResult = dc->Dc_Attr.lBreakExtra;
break;
case GdiGerCharBreak:
+ SafeResult = dc->Dc_Attr.cBreak;
break;
case GdiGetArcDirection:
+ SafeResult = dc->w.ArcDirection;
break;
case GdiGetEMFRestorDc:
break;
case GdiGetFontLanguageInfo:
break;
case GdiGetIsMemDc:
+ {
+ if (dc->w.flags & DC_MEMORY)
+ SafeResult = DC_TYPE_MEMORY; // = dc->DC_Type;
+ else
+ SafeResult = DC_TYPE_DIRECT;
+ }
break;
case GdiGetMapMode:
+ SafeResult = dc->Dc_Attr.iMapMode;
break;
case GdiGetTextCharExtra:
+ SafeResult = dc->Dc_Attr.lTextExtra;
break;
default:
SetLastWin32Error(ERROR_INVALID_PARAMETER);
case GdtGetSetCopyCount:
break;
case GdiGetSetTextAlign:
+ SafeResult = dc->Dc_Attr.lTextAlign;
+ dc->Dc_Attr.lTextAlign = dwIn;
+ dc->Dc_Attr.flTextAlign = dwIn;
break;
case GdiGetSetRelAbs:
+ SafeResult = dc->Dc_Attr.lRelAbs;
+ dc->Dc_Attr.lRelAbs = dwIn;
break;
case GdiGetSetTextCharExtra:
+ SafeResult = dc->Dc_Attr.lTextExtra;
+ dc->Dc_Attr.lTextExtra = dwIn;
break;
case GdiGetSetSelectFont:
break;
case GdiGetSetMapperFlagsInternal:
break;
case GdiGetSetMapMode:
+ SafeResult = dc->Dc_Attr.iMapMode;
+ dc->Dc_Attr.iMapMode = dwIn;
break;
case GdiGetSetArcDirection:
+ if (dwIn != AD_COUNTERCLOCKWISE && dwIn != AD_CLOCKWISE)
+ {
+ SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ Ret = FALSE;
+ }
+ SafeResult = dc->w.ArcDirection;
+ dc->w.ArcDirection = dwIn;
break;
default:
SetLastWin32Error(ERROR_INVALID_PARAMETER);
DC_SET_MODE( NtGdiSetBkMode, Dc_Attr.jBkMode, TRANSPARENT, OPAQUE )
DC_SET_MODE( NtGdiSetPolyFillMode, Dc_Attr.jFillMode, ALTERNATE, WINDING )
-// DC_SET_MODE( NtGdiSetRelAbs, Dc_Attr.lRelAbs, ABSOLUTE, RELATIVE )
DC_SET_MODE( NtGdiSetROP2, Dc_Attr.jROP2, R2_BLACK, R2_WHITE )
DC_SET_MODE( NtGdiSetStretchBltMode, Dc_Attr.jStretchBltMode, BLACKONWHITE, HALFTONE )
return ret;
}
-INT FASTCALL
-IntGdiGetArcDirection(DC *dc)
-{
- return dc->w.ArcDirection;
-}
-
BOOL FASTCALL
IntGdiPolyPolyline(DC *dc,
return FALSE;
}
-INT
-STDCALL
-NtGdiGetArcDirection(HDC hDC)
-{
- PDC dc = DC_LockDc (hDC);
- int ret = 0; // default to failure
-
- if ( dc )
- {
- ret = IntGdiGetArcDirection ( dc );
- DC_UnlockDc(dc);
- }
- else
- {
- SetLastWin32Error(ERROR_INVALID_HANDLE);
- }
-
- return ret;
-}
BOOL
STDCALL
return Ret;
}
-int
-STDCALL
-NtGdiSetArcDirection(HDC hDC,
- int ArcDirection)
-{
- PDC dc;
- INT nOldDirection = 0; // default to FAILURE
-
- dc = DC_LockDc (hDC);
- if ( !dc ) return 0;
-
- if ( ArcDirection == AD_COUNTERCLOCKWISE || ArcDirection == AD_CLOCKWISE )
- {
- nOldDirection = dc->w.ArcDirection;
- dc->w.ArcDirection = ArcDirection;
- }
-
- DC_UnlockDc( dc );
- return nOldDirection;
-}
/* EOF */
BOOL FASTCALL PATH_StrokePath(DC *dc, GdiPath *pPath);
BOOL PATH_CheckCorners(DC *dc, POINT corners[], INT x1, INT y1, INT x2, INT y2);
-INT FASTCALL
-IntGdiGetArcDirection(DC *dc);
-
VOID FASTCALL
IntGetCurrentPositionEx(PDC dc, LPPOINT pt);
ASSERT ( dc );
- clockwise = ( IntGdiGetArcDirection(dc) == AD_CLOCKWISE );
+ clockwise = ( dc->w.ArcDirection == AD_CLOCKWISE );
/* Check that path is open */
if ( dc->w.path.state != PATH_Open )
}
-/* Remove this HAX! after the below function is done in GDI32.DLL! */
-INT
-STDCALL
-NtGdiGetSetTextCharExtra( HDC hDC, INT CharExtra, BOOL Set)
-{
- /* Ulta-Ugly Hax! */
- INT Ret = 0x80000000;
-
- PDC dc = DC_LockDc ( hDC );
- if (!dc)
- {
- DPRINT("TextCharacterExtra %d", CharExtra);
- SetLastWin32Error(ERROR_INVALID_HANDLE);
- return Ret;
- }
- DPRINT("TextCharacterExtra %d", CharExtra);
- Ret = dc->Dc_Attr.lTextExtra;
- if( Set ) dc->Dc_Attr.lTextExtra = CharExtra;
- DC_UnlockDc(dc);
- return (Ret);
-}
-
static BOOL FASTCALL
IntGetFullFileName(
POBJECT_NAME_INFORMATION NameInfo,
NtGdiSelectObject 2
NtGdiSelectPalette 3
NtGdiSetAbortProc 2
-NtGdiSetArcDirection 2
NtGdiSetBitmapDimensionEx 4
NtGdiSetBkColor 2
NtGdiSetBkMode 2
NtGdiEscape 5
NtGdiExtTextOut 8
NtGdiGdiComment 3
-NtGdiGetArcDirection 1
NtGdiGetAspectRatioFilterEx 2
NtGdiGetBitmapDimensionEx 2
NtGdiGetBkColor 1
NtGdiGetPixelFormat 1
NtGdiGetPolyFillMode 1
NtGdiGetROP2 1
-NtGdiGetSetTextCharExtra 3
NtGdiGetStretchBltMode 1
NtGdiGetSystemPaletteEntries 4
NtGdiGetTextAlign 1