- Move implemented functions from stubs[aw].c to appropriate files.

- Replace GDI functions that were just calling NtGdi functions with forwarders in the .def file.
- Port GetTextFaceA from Wine.

svn path=/trunk/; revision=12393
This commit is contained in:
Filip Navara 2004-12-30 02:32:24 +00:00
parent 1cbf5899cf
commit a0d295de59
16 changed files with 681 additions and 2787 deletions

View file

@ -1,4 +1,4 @@
; $Id: gdi32.def,v 1.12 2004/09/16 10:25:14 gvg Exp $
; $Id: gdi32.def,v 1.13 2004/12/30 02:32:23 navaraf Exp $
;
; gdi32.def
;
@ -19,14 +19,14 @@ AddFontResourceTracking@8
AngleArc@24
AnimatePalette@16
AnyLinkedFonts@0
Arc@36
ArcTo@36
Arc@36=NtGdiArc@36
ArcTo@36=NtGdiArcTo@36
BeginPath@4
BRUSHOBJ_hGetColorTransform@4
BRUSHOBJ_pvAllocRbrush@8
BRUSHOBJ_pvGetRbrush@4
BRUSHOBJ_ulGetBrushColor@4
BitBlt@36
BitBlt@36=NtGdiBitBlt@36
CancelDC@4
CheckColorsInGamut@16
ChoosePixelFormat@8
@ -41,28 +41,28 @@ CloseFigure@4
CloseMetaFile@4
ColorCorrectPalette@16
ColorMatchToTarget@12
CombineRgn@16
CombineTransform@12
CombineRgn@16=NtGdiCombineRgn@16
CombineTransform@12=NtGdiCombineTransform@12
CopyEnhMetaFileA@8
CopyEnhMetaFileW@8
CopyMetaFileA@8
CopyMetaFileW@8
CreateBitmap@20
CreateBitmapIndirect@4
CreateBrushIndirect@4
CreateBitmap@20=NtGdiCreateBitmap@20
CreateBitmapIndirect@4=NtGdiCreateBitmapIndirect@4
CreateBrushIndirect@4=NtGdiCreateBrushIndirect@4
CreateColorSpaceA@4
CreateColorSpaceW@4
CreateCompatibleBitmap@12
CreateCompatibleDC@4
CreateCompatibleBitmap@12=NtGdiCreateCompatibleBitmap@12
CreateCompatibleDC@4=NtGdiCreateCompatableDC@4
CreateDCA@16
CreateDCW@16
CreateDIBPatternBrush@8
CreateDIBPatternBrushPt@8
CreateDIBSection@24
CreateDIBitmap@24
CreateDiscardableBitmap@12
CreateEllipticRgn@16
CreateEllipticRgnIndirect@4
CreateDIBPatternBrushPt@8=NtGdiCreateDIBPatternBrushPt@8
CreateDIBSection@24=NtGdiCreateDIBSection@24
CreateDIBitmap@24=NtGdiCreateDIBitmap@24
CreateDiscardableBitmap@12=NtGdiCreateDiscardableBitmap@12
CreateEllipticRgn@16=NtGdiCreateEllipticRgn@16
CreateEllipticRgnIndirect@4=NtGdiCreateEllipticRgnIndirect@4
CreateEnhMetaFileA@16
CreateEnhMetaFileW@16
CreateFontA@56
@ -71,27 +71,27 @@ CreateFontIndirectExA@4
CreateFontIndirectExW@4
CreateFontIndirectW@4
CreateFontW@56
CreateHalftonePalette@4
CreateHatchBrush@8
CreateHalftonePalette@4=NtGdiCreateHalftonePalette@4
CreateHatchBrush@8=NtGdiCreateHatchBrush@8
CreateICA@16
CreateICW@16
CreateMetaFileA@4
CreateMetaFileW@4
CreatePalette@4
CreatePatternBrush@4
CreatePen@12
CreatePenIndirect@4
CreatePolyPolygonRgn@16
CreatePolygonRgn@12
CreateRectRgn@16
CreateRectRgnIndirect@4
CreateRoundRectRgn@24
CreatePalette@4=NtGdiCreatePalette@4
CreatePatternBrush@4=NtGdiCreatePatternBrush@4
CreatePen@12=NtGdiCreatePen@12
CreatePenIndirect@4=NtGdiCreatePenIndirect@4
CreatePolyPolygonRgn@16=NtGdiCreatePolyPolygonRgn@16
CreatePolygonRgn@12=NtGdiCreatePolygonRgn@12
CreateRectRgn@16=NtGdiCreateRectRgn@16
CreateRectRgnIndirect@4=NtGdiCreateRectRgnIndirect@4
CreateRoundRectRgn@24=NtGdiCreateRoundRectRgn@24
CreateScalableFontResourceA@16
CreateScalableFontResourceW@16
CreateSolidBrush@4
DPtoLP@12
CreateSolidBrush@4=NtGdiCreateSolidBrush@4
DPtoLP@12=NtGdiDPtoLP@12
DeleteColorSpace@4
DeleteDC@4
DeleteDC@4=NtGdiDeleteDC@4
DeleteEnhMetaFile@4
DeleteMetaFile@4
DeleteObject@4
@ -99,7 +99,7 @@ DescribePixelFormat@16
DeviceCapabilitiesExA@20
DeviceCapabilitiesExW@20
DrawEscape@16
Ellipse@20
Ellipse@20=NtGdiEllipse@20
EnableEUDC@4
EndDoc@4
EndFormPage@4
@ -162,23 +162,23 @@ EnumICMProfilesA@12
EnumICMProfilesW@12
EnumMetaFile@16
EnumObjects@16
EqualRgn@8
EqualRgn@8=NtGdiEqualRgn@8
Escape@20
EudcLoadLinkW@16
EudcUnloadLinkW@8
ExcludeClipRect@20
ExtCreatePen@20
ExcludeClipRect@20=NtGdiExcludeClipRect@20
ExtCreatePen@20=NtGdiExtCreatePen@20
ExtCreateRegion@12
ExtEscape@24
ExtFloodFill@20
ExtSelectClipRgn@12
ExtEscape@24=NtGdiExtEscape@24
ExtFloodFill@20=NtGdiExtFloodFill@20
ExtSelectClipRgn@12=NtGdiExtSelectClipRgn@12
ExtTextOutA@32
ExtTextOutW@32
FillPath@4
FillRgn@12
FillRgn@12=NtGdiFillRgn@12
FixBrushOrgEx@16
FlattenPath@4
FloodFill@16
FloodFill@16=NtGdiFloodFill@16
FontIsLinked@4
FONTOBJ_cGetAllGlyphHandles@8
FONTOBJ_cGetGlyphs@20
@ -188,7 +188,7 @@ FONTOBJ_pifi@4
FONTOBJ_pvTrueTypeFontFile@8
FONTOBJ_pxoGetXform@4
FONTOBJ_vGetInfo@12
FrameRgn@20
FrameRgn@20=NtGdiFrameRgn@20
GdiAddFontResourceW@12
GdiAddGlsBounds@8
GdiAddGlsRecord@16
@ -248,7 +248,7 @@ GdiGetPageCount@4
GdiGetPageHandle@12
GdiGetSpoolFileHandle@12
;GdiGetSpoolMessage
GdiGradientFill@24
GdiGradientFill@24=NtGdiGradientFill@24
GdiInitSpool@0
GdiInitializeLanguagePack@4
GdiIsMetaFileDC@4
@ -276,45 +276,45 @@ GdiSetServerAttr@8
GdiStartDocEMF@8
GdiStartPageEMF@4
GdiSwapBuffers@4
GdiTransparentBlt@44
GdiTransparentBlt@44=NtGdiTransparentBlt@44
GdiValidateHandle@4
GetArcDirection@4
GetArcDirection@4=NtGdiGetArcDirection@4
GetAspectRatioFilterEx@8
GetBitmapAttributes@4
GetBitmapBits@12
GetBitmapDimensionEx@8
GetBkColor@4
GetBkMode@4
GetBitmapBits@12=NtGdiGetBitmapBits@12
GetBitmapDimensionEx@8=NtGdiGetBitmapDimensionEx@8
GetBkColor@4=NtGdiGetBkColor@4
GetBkMode@4=NtGdiGetBkMode@4
GetBoundsRect@12
GetBrushAttributes@4
GetBrushOrgEx@8
GetBrushOrgEx@8=NtGdiGetBrushOrgEx@8
GetCharABCWidthsA@16
GetCharABCWidthsFloatA@16
GetCharABCWidthsFloatW@16
GetCharABCWidthsFloatW@16=NtGdiGetCharABCWidthsFloat@16
GetCharABCWidthsI@20
GetCharABCWidthsW@16
GetCharABCWidthsW@16=NtGdiGetCharABCWidths@16
GetCharWidth32A@16
GetCharWidth32W@16
GetCharWidth32W@16=NtGdiGetCharWidth32@16
GetCharWidthA@16
GetCharWidthFloatA@16
GetCharWidthFloatW@16
GetCharWidthFloatW@16=NtGdiGetCharWidthFloat@16
GetCharWidthI@20
GetCharWidthInfo@8
GetCharWidthW@16
GetCharacterPlacementA@24
GetCharacterPlacementW@24
GetClipBox@8
GetClipBox@8=NtGdiGetClipBox@8
GetClipRgn@8
GetColorAdjustment@8
GetColorSpace@4
GetCurrentObject@8
GetCurrentPositionEx@8
GetCurrentObject@8=NtGdiGetCurrentObject@8
GetCurrentPositionEx@8=NtGdiGetCurrentPositionEx@8
GetDCBrushColor@4
GetDCOrgEx@8
GetDCOrgEx@8=NtGdiGetDCOrgEx@8
GetDCPenColor@4
GetDIBColorTable@16
GetDIBits@28
GetDeviceCaps@8
GetDIBColorTable@16=NtGdiGetDIBColorTable@16
GetDIBits@28=NtGdiGetDIBits@28
GetDeviceCaps@8=NtGdiGetDeviceCaps@8
GetDeviceGammaRamp@8
GetEnhMetaFileA@4
GetEnhMetaFileBits@12
@ -328,7 +328,7 @@ GetETM@8
GetEUDCTimeStamp@0
GetEUDCTimeStampExW@4
GetFontAssocStatus@4
GetFontData@20
GetFontData@20=NtGdiGetFontData@20
GetFontLanguageInfo@4
GetFontResourceInfo@16
GetFontResourceInfoW@16
@ -337,9 +337,9 @@ GetGlyphIndicesA@20
GetGlyphIndicesW@20
GetGlyphOutline=GetGlyphOutlineA@28
GetGlyphOutlineA@28
GetGlyphOutlineW@28
GetGlyphOutlineW@28=NtGdiGetGlyphOutline@28
GetGlyphOutlineWow@28
GetGraphicsMode@4
GetGraphicsMode@4=NtGdiGetGraphicsMode@4
GetHFONT@4
GetICMProfileA@12
GetICMProfileW@12
@ -349,41 +349,41 @@ GetKerningPairsW@12
GetLayout@4
GetLogColorSpaceA@12
GetLogColorSpaceW@12
GetMapMode@4
GetMapMode@4=NtGdiGetMapMode@4
GetMetaFileA@4
GetMetaFileBitsEx@12
GetMetaFileW@4
GetMetaRgn@8
GetMiterLimit@8
GetNearestColor@8
GetNearestPaletteIndex@8
GetNearestColor@8=NtGdiGetNearestColor@8
GetNearestPaletteIndex@8=NtGdiGetNearestPaletteIndex@8
GetObjectA@12
GetObjectType@4
GetObjectType@4=NtGdiGetObjectType@4
GetObjectW@12
GetOutlineTextMetricsA@12
GetOutlineTextMetricsW@12
GetPaletteEntries@16
GetPaletteEntries@16=NtGdiGetPaletteEntries@16
GetPath@16
GetPixel@12
GetPixel@12=NtGdiGetPixel@12
GetPixelFormat@4
GetPolyFillMode@4
GetROP2@4
GetPolyFillMode@4=NtGdiGetPolyFillMode@4
GetROP2@4=NtGdiGetROP2@4
GetRandomRgn@12
GetRasterizerCaps@8
GetRegionData@12
GetRegionData@12=NtGdiGetRegionData@12
GetRelAbs@8
GetRgnBox@8
GetStockObject@4
GetStretchBltMode@4
GetRgnBox@8=NtGdiGetRgnBox@8
GetStockObject@4=NtGdiGetStockObject@4
GetStretchBltMode@4=NtGdiGetStretchBltMode@4
GetStringBitmapA@20
GetStringBitmapW@20
GetSystemPaletteEntries@16
GetSystemPaletteEntries@16=NtGdiGetSystemPaletteEntries@16
GetSystemPaletteUse@4
GetTextAlign@4
GetTextAlign@4=NtGdiGetTextAlign@4
GetTextCharacterExtra@4
GetTextCharset@4
GetTextCharsetInfo@12
GetTextColor@4
GetTextColor@4=NtGdiGetTextColor@4
GetTextExtentExPointA@28
GetTextExtentExPointI@28
GetTextExtentExPointW@28
@ -399,60 +399,60 @@ GetTextFaceAliasW@12
GetTextMetricsA@8
GetTextMetricsW@8
GetTransform@12
GetViewportExtEx@8
GetViewportOrgEx@8
GetViewportExtEx@8=NtGdiGetViewportExtEx@8
GetViewportOrgEx@8=NtGdiGetViewportOrgEx@8
GetWinMetaFileBits@20
GetWindowExtEx@8
GetWindowOrgEx@8
GetWorldTransform@8
GetWindowExtEx@8=NtGdiGetWindowExtEx@8
GetWindowOrgEx@8=NtGdiGetWindowOrgEx@8
GetWorldTransform@8=NtGdiGetWorldTransform@8
HT_Get8BPPFormatPalette@16
HT_Get8BPPMaskPalette@24
IntersectClipRect@20
InvertRgn@8
LPtoDP@12
IntersectClipRect@20=NtGdiIntersectClipRect@20
InvertRgn@8=NtGdiInvertRgn@8
LPtoDP@12=NtGdiLPtoDP@12
LineDDA@24
LineTo@12
MaskBlt@48
LineTo@12=NtGdiLineTo@12
MaskBlt@48=NtGdiMaskBlt@48
MirrorRgn@8
ModifyWorldTransform@12
MoveToEx@16
ModifyWorldTransform@12=NtGdiModifyWorldTransform@12
MoveToEx@16=NtGdiMoveToEx@16
NamedEscape@32
OffsetClipRgn@12
OffsetRgn@12
OffsetViewportOrgEx@16
OffsetWindowOrgEx@16
PaintRgn@8
PatBlt@24
OffsetClipRgn@12=NtGdiOffsetClipRgn@12
OffsetRgn@12=NtGdiOffsetRgn@12
OffsetViewportOrgEx@16=NtGdiOffsetViewportOrgEx@16
OffsetWindowOrgEx@16=NtGdiOffsetWindowOrgEx@16
PaintRgn@8=NtGdiPaintRgn@8
PatBlt@24=NtGdiPatBlt@24
PATHOBJ_bEnum@8
PATHOBJ_bEnumClipLines@12
PATHOBJ_vEnumStart@4
PATHOBJ_vEnumStartClipLines@16
PATHOBJ_vGetBounds@8
PolyPatBlt@20
PolyPatBlt@20=NtGdiPolyPatBlt@20
PathToRegion@4
Pie@36
Pie@36=NtGdiPie@36
PlayEnhMetaFile@12
PlayEnhMetaFileRecord@16
PlayMetaFile@8
PlayMetaFileRecord@16
PlgBlt@40
PolyBezier@12
PolyBezierTo@12
PlgBlt@40=NtGdiPlgBlt@40
PolyBezier@12=NtGdiPolyBezier@12
PolyBezierTo@12=NtGdiPolyBezierTo@12
PolyDraw@16
PolyPolygon@16
PolyPolyline@16
PolyPolygon@16=NtGdiPolyPolygon@16
PolyPolyline@16=NtGdiPolyPolyline@16
PolyTextOutA@12
PolyTextOutW@12
Polygon@12
Polyline@12
PolylineTo@12
PtInRegion@12
PtVisible@12
Polygon@12=NtGdiPolygon@12
Polyline@12=NtGdiPolyline@12
PolylineTo@12=NtGdiPolylineTo@12
PtInRegion@12=NtGdiPtInRegion@12
PtVisible@12=NtGdiPtVisible@12
QueryFontAssocStatus@0
RealizePalette@4
RectInRegion@8
RectVisible@8
Rectangle@20
RealizePalette@4=NtGdiRealizePalette@4
RectInRegion@8=NtGdiRectInRegion@8
RectVisible@8=NtGdiRectVisible@8
Rectangle@20=NtGdiRectangle@20
RemoveFontMemResourceEx@4
RemoveFontResourceA@4
RemoveFontResourceExA@12
@ -462,76 +462,76 @@ RemoveFontResourceTracking@8
ResetDCA@8
ResetDCW@8
ResizePalette@8
RestoreDC@8
RoundRect@28
SaveDC@4
RestoreDC@8=NtGdiRestoreDC@8
RoundRect@28=NtGdiRoundRect@28
SaveDC@4=NtGdiSaveDC@4
ScaleViewportExtEx@24
ScaleWindowExtEx@24
SelectBrushLocal@8
SelectClipPath@8
SelectClipRgn@8
SelectClipRgn@8=NtGdiSelectClipRgn@8
SelectFontLocal@8
SelectObject@8
SelectPalette@12
SelectObject@8=NtGdiSelectObject@8
SelectPalette@12=NtGdiSelectPalette@12
SetAbortProc@8
SetArcDirection@8
SetArcDirection@8=NtGdiSetArcDirection@8
SetBitmapAttributes@8
SetBitmapBits@12
SetBitmapDimensionEx@16
SetBkColor@8
SetBkMode@8
SetBitmapBits@12=NtGdiSetBitmapBits@12
SetBitmapDimensionEx@16=NtGdiSetBitmapDimensionEx@16
SetBkColor@8=NtGdiSetBkColor@8
SetBkMode@8=NtGdiSetBkMode@8
SetBoundsRect@12
SetBrushAttributes@8
SetBrushOrgEx@16
SetBrushOrgEx@16=NtGdiSetBrushOrgEx@16
SetColorAdjustment@8
SetColorSpace@8
SetDCBrushColor@8
SetDCPenColor@8
SetDIBColorTable@16
SetDIBits@28
SetDIBitsToDevice@48
SetDIBColorTable@16=NtGdiSetDIBColorTable@16
SetDIBits@28=NtGdiSetDIBits@28
SetDIBitsToDevice@48=NtGdiSetDIBitsToDevice@48
SetDeviceGammaRamp@8
SetEnhMetaFileBits@8
SetFontEnumeration@4
SetGraphicsMode@8
SetGraphicsMode@8=NtGdiSetGraphicsMode@8
SetICMMode@8
SetICMProfileA@8
SetICMProfileW@8
SetLayout@8
SetLayoutWidth@12
SetMagicColors@12
SetMapMode@8
SetMapMode@8=NtGdiSetMapMode@8
SetMapperFlags@8
SetMetaFileBitsEx@8
SetMetaRgn@4
SetMiterLimit@12
SetPaletteEntries@16
SetPixel@16
SetPaletteEntries@16=NtGdiSetPaletteEntries@16
SetPixel@16=NtGdiSetPixel@16
SetPixelFormat@12
SetPixelV@16
SetPolyFillMode@8
SetROP2@8
SetRectRgn@20
SetPixelV@16=NtGdiSetPixelV@16
SetPolyFillMode@8=NtGdiSetPolyFillMode@8
SetROP2@8=NtGdiSetROP2@8
SetRectRgn@20=NtGdiSetRectRgn@20
SetRelAbs@8
SetStretchBltMode@8
SetStretchBltMode@8=NtGdiSetStretchBltMode@8
SetSystemPaletteUse@8
SetTextAlign@8
SetTextAlign@8=NtGdiSetTextAlign@8
SetTextCharacterExtra@8
SetTextColor@8
SetTextColor@8=NtGdiSetTextColor@8
SetTextJustification@12
SetViewportExtEx@16
SetViewportOrgEx@16
SetViewportExtEx@16=NtGdiSetViewportExtEx@16
SetViewportOrgEx@16=NtGdiSetViewportOrgEx@16
SetVirtualResolution@20
SetWinMetaFileBits@16
SetWindowExtEx@16
SetWindowOrgEx@16
SetWorldTransform@8
SetWindowExtEx@16=NtGdiSetWindowExtEx@16
SetWindowOrgEx@16=NtGdiSetWindowOrgEx@16
SetWorldTransform@8=NtGdiSetWorldTransform@8
StartDocA@8
StartDocW@8
StartFormPage@4
StartPage@4
StretchBlt@44
StretchDIBits@52
StretchDIBits@52=NtGdiStretchDIBits@52
STROBJ_bEnum@12
STROBJ_bEnumPositionsOnly@12
STROBJ_bGetAdvanceWidths@16
@ -542,7 +542,7 @@ StrokePath@4
SwapBuffers@4
TextOutA@20
TextOutW@20
TranslateCharsetInfo@12
TranslateCharsetInfo@12=NtGdiTranslateCharsetInfo@12
UnrealizeObject@4
UnloadNetworkFonts@4
UpdateColors@4
@ -560,3 +560,4 @@ bInitSystemAndFontsDirectoriesW@8
bMakePathNameW@16
;cGetTTFFromFOT
gdiPlaySpoolStream@24

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.40 2004/09/06 21:15:45 weiden Exp $
# $Id: makefile,v 1.41 2004/12/30 02:32:23 navaraf Exp $
PATH_TO_TOP = ../..
@ -40,15 +40,9 @@ MISC_OBJECTS = \
OBJECTS_OBJECTS = \
objects/bitblt.o \
objects/brush.o \
objects/clip.o \
objects/dc.o \
objects/fillshap.o \
objects/font.o \
objects/line.o \
objects/linedda.o \
objects/metafile.o \
objects/pen.o \
objects/region.o \
objects/text.o

View file

@ -1,4 +1,4 @@
/* $Id: stubs.c,v 1.65 2004/09/06 21:15:45 weiden Exp $
/* $Id: stubs.c,v 1.66 2004/12/30 02:32:23 navaraf Exp $
*
* reactos/lib/gdi32/misc/stubs.c
*
@ -1092,25 +1092,6 @@ WidenPath(
}
/*
* @unimplemented
*/
HPEN
STDCALL
ExtCreatePen(
DWORD a0,
DWORD a1,
CONST LOGBRUSH *a2,
DWORD a3,
CONST DWORD *a4
)
{
UNIMPLEMENTED;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return 0;
}
/*
* @unimplemented
*/

View file

@ -1,4 +1,4 @@
/* $Id: stubsa.c,v 1.34 2004/09/06 21:15:45 weiden Exp $
/* $Id: stubsa.c,v 1.35 2004/12/30 02:32:23 navaraf Exp $
*
* reactos/lib/gdi32/misc/stubs.c
*
@ -13,141 +13,6 @@
#define UNIMPLEMENTED DbgPrint("GDI32: %s is unimplemented, please try again later.\n", __FUNCTION__);
/*
* @implemented
*/
int
STDCALL
AddFontResourceExA ( LPCSTR lpszFilename, DWORD fl, PVOID pvReserved )
{
NTSTATUS Status;
PWSTR FilenameW;
int rc = 0;
Status = HEAP_strdupA2W ( &FilenameW, lpszFilename );
if ( !NT_SUCCESS (Status) )
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = AddFontResourceExW ( FilenameW, fl, pvReserved );
HEAP_free ( &FilenameW );
}
return rc;
}
/*
* @implemented
*/
int
STDCALL
AddFontResourceA ( LPCSTR lpszFilename )
{
return AddFontResourceExA ( lpszFilename, 0, 0 );
}
/*
* @implemented
*/
HDC
STDCALL
CreateICA(
LPCSTR lpszDriver,
LPCSTR lpszDevice,
LPCSTR lpszOutput,
CONST DEVMODEA * lpdvmInit
)
{
NTSTATUS Status;
LPWSTR lpszDriverW, lpszDeviceW, lpszOutputW;
UNICODE_STRING Driver, Device, Output;
DEVMODEW dvmInitW;
HDC rc = 0;
Status = HEAP_strdupA2W ( &lpszDriverW, lpszDriver );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
Status = HEAP_strdupA2W ( &lpszDeviceW, lpszDevice );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
Status = HEAP_strdupA2W ( &lpszOutputW, lpszOutput );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
if ( lpdvmInit )
RosRtlDevModeA2W ( &dvmInitW, (const LPDEVMODEA)lpdvmInit );
RtlInitUnicodeString(&Driver, lpszDriverW);
RtlInitUnicodeString(&Device, lpszDeviceW);
RtlInitUnicodeString(&Output, lpszOutputW);
rc = NtGdiCreateIC ( &Driver,
&Device,
&Output,
lpdvmInit ? &dvmInitW : NULL );
HEAP_free ( lpszOutputW );
}
HEAP_free ( lpszDeviceW );
}
HEAP_free ( lpszDriverW );
}
return rc;
}
/*
* @implemented
*/
BOOL
STDCALL
CreateScalableFontResourceA(
DWORD fdwHidden,
LPCSTR lpszFontRes,
LPCSTR lpszFontFile,
LPCSTR lpszCurrentPath
)
{
NTSTATUS Status;
LPWSTR lpszFontResW, lpszFontFileW, lpszCurrentPathW;
BOOL rc = FALSE;
Status = HEAP_strdupA2W ( &lpszFontResW, lpszFontRes );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
Status = HEAP_strdupA2W ( &lpszFontFileW, lpszFontFile );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
Status = HEAP_strdupA2W ( &lpszCurrentPathW, lpszCurrentPath );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = NtGdiCreateScalableFontResource ( fdwHidden,
lpszFontResW,
lpszFontFileW,
lpszCurrentPathW );
HEAP_free ( lpszCurrentPathW );
}
HEAP_free ( lpszFontFileW );
}
HEAP_free ( lpszFontResW );
}
return rc;
}
/*
* @unimplemented
@ -169,7 +34,7 @@ DeviceCapabilitiesExA(
/*
* @implemented
* @unimplemented
*/
int
STDCALL
@ -202,76 +67,6 @@ EnumFontsA (
}
/*
* @unimplemented
*/
BOOL
APIENTRY
GetCharWidthFloatA(
HDC hdc,
UINT iFirstChar,
UINT iLastChar,
PFLOAT pxBuffer
)
{
/* FIXME what to do with iFirstChar and iLastChar ??? */
return NtGdiGetCharWidthFloat ( hdc, iFirstChar, iLastChar, pxBuffer );
}
/*
* @unimplemented
*/
BOOL
APIENTRY
GetCharABCWidthsA(
HDC hdc,
UINT uFirstChar,
UINT uLastChar,
LPABC lpabc
)
{
/* FIXME what to do with uFirstChar and uLastChar ??? */
return NtGdiGetCharABCWidths ( hdc, uFirstChar, uLastChar, lpabc );
}
/*
* @unimplemented
*/
BOOL
APIENTRY
GetCharABCWidthsFloatA(
HDC hdc,
UINT iFirstChar,
UINT iLastChar,
LPABCFLOAT lpABCF
)
{
/* FIXME what to do with iFirstChar and iLastChar ??? */
return NtGdiGetCharABCWidthsFloat ( hdc, iFirstChar, iLastChar, lpABCF );
}
/*
* @implemented
*/
DWORD
STDCALL
GetGlyphOutlineA(
HDC hdc,
UINT uChar,
UINT uFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpvBuffer,
CONST MAT2 *lpmat2
)
{
return NtGdiGetGlyphOutline ( hdc, uChar, uFormat, lpgm, cbBuffer, lpvBuffer, (CONST LPMAT2)lpmat2 );
}
/*
* @unimplemented
*/
@ -289,40 +84,6 @@ GetOutlineTextMetricsA(
}
/*
* @implemented
*/
BOOL
APIENTRY
GetTextExtentExPointA(
HDC hdc,
LPCSTR lpszStr,
int cchString,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize
)
{
NTSTATUS Status;
LPWSTR lpszStrW;
BOOL rc = 0;
Status = HEAP_strdupA2W ( &lpszStrW, lpszStr );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = NtGdiGetTextExtentExPoint (
hdc, lpszStrW, cchString, nMaxExtent, lpnFit, alpDx, lpSize );
HEAP_free ( lpszStrW );
}
return rc;
}
/*
* @unimplemented
*/
@ -343,51 +104,6 @@ GetCharacterPlacementA(
}
/*
* @implemented
*/
HDC
STDCALL
ResetDCA(
HDC hdc,
CONST DEVMODEA *lpInitData
)
{
DEVMODEW InitDataW;
RosRtlDevModeA2W ( &InitDataW, (CONST LPDEVMODEA)lpInitData );
return NtGdiResetDC ( hdc, &InitDataW );
}
/*
* @implemented
*/
BOOL
STDCALL
RemoveFontResourceA(
LPCSTR lpFileName
)
{
NTSTATUS Status;
LPWSTR lpFileNameW;
BOOL rc = 0;
Status = HEAP_strdupA2W ( &lpFileNameW, lpFileName );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = NtGdiRemoveFontResource ( lpFileNameW );
HEAP_free ( lpFileNameW );
}
return rc;
}
/*
* @unimplemented
*/
@ -421,23 +137,6 @@ PolyTextOutA(
}
/*
* @unimplemented
*/
int
STDCALL
GetTextFaceA(
HDC a0,
int a1,
LPSTR a2
)
{
UNIMPLEMENTED;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return FALSE;
}
/*
* @unimplemented
*/

View file

@ -1,4 +1,4 @@
/* $Id: stubsw.c,v 1.32 2004/09/06 21:15:45 weiden Exp $
/* $Id: stubsw.c,v 1.33 2004/12/30 02:32:23 navaraf Exp $
*
* reactos/lib/gdi32/misc/stubs.c
*
@ -13,77 +13,6 @@
#define UNIMPLEMENTED DbgPrint("GDI32: %s is unimplemented, please try again later.\n", __FUNCTION__);
/*
* @implemented
*/
int
STDCALL
AddFontResourceExW ( LPCWSTR lpszFilename, DWORD fl, PVOID pvReserved )
{
UNICODE_STRING Filename;
/* FIXME handle fl parameter */
RtlInitUnicodeString(&Filename, lpszFilename);
return NtGdiAddFontResource ( &Filename, fl );
}
/*
* @implemented
*/
int
STDCALL
AddFontResourceW ( LPCWSTR lpszFilename )
{
return AddFontResourceExW ( lpszFilename, 0, 0 );
}
/*
* @implemented
*/
HDC
STDCALL
CreateICW(
LPCWSTR lpszDriver,
LPCWSTR lpszDevice,
LPCWSTR lpszOutput,
CONST DEVMODEW * lpdvmInit
)
{
UNICODE_STRING Driver, Device, Output;
if(lpszDriver)
RtlInitUnicodeString(&Driver, lpszDriver);
if(lpszDevice)
RtlInitUnicodeString(&Device, lpszDevice);
if(lpszOutput)
RtlInitUnicodeString(&Output, lpszOutput);
return NtGdiCreateIC ((lpszDriver ? &Driver : NULL),
(lpszDevice ? &Device : NULL),
(lpszOutput ? &Output : NULL),
(CONST PDEVMODEW)lpdvmInit );
}
/*
* @implemented
*/
BOOL
STDCALL
CreateScalableFontResourceW(
DWORD fdwHidden,
LPCWSTR lpszFontRes,
LPCWSTR lpszFontFile,
LPCWSTR lpszCurrentPath
)
{
return NtGdiCreateScalableFontResource ( fdwHidden,
lpszFontRes,
lpszFontFile,
lpszCurrentPath );
}
/*
* @unimplemented
*/
@ -134,73 +63,6 @@ EnumFontsW(
}
/*
* @implemented
*/
BOOL
APIENTRY
GetCharWidthFloatW(
HDC hdc,
UINT iFirstChar,
UINT iLastChar,
PFLOAT pxBuffer
)
{
return NtGdiGetCharWidthFloat ( hdc, iFirstChar, iLastChar, pxBuffer );
}
/*
* @implemented
*/
BOOL
APIENTRY
GetCharABCWidthsW(
HDC hdc,
UINT uFirstChar,
UINT uLastChar,
LPABC lpabc
)
{
return NtGdiGetCharABCWidths ( hdc, uFirstChar, uLastChar, lpabc );
}
/*
* @implemented
*/
BOOL
APIENTRY
GetCharABCWidthsFloatW(
HDC hdc,
UINT iFirstChar,
UINT iLastChar,
LPABCFLOAT lpABCF
)
{
return NtGdiGetCharABCWidthsFloat ( hdc, iFirstChar, iLastChar, lpABCF );
}
/*
* @implemented
*/
DWORD
STDCALL
GetGlyphOutlineW(
HDC hdc,
UINT uChar,
UINT uFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpvBuffer,
CONST MAT2 *lpmat2
)
{
return NtGdiGetGlyphOutline ( hdc, uChar, uFormat, lpgm, cbBuffer, lpvBuffer, (CONST LPMAT2)lpmat2 );
}
/*
* @unimplemented
*/
@ -218,67 +80,6 @@ GetOutlineTextMetricsW(
}
/*
* @implemented
*/
BOOL
APIENTRY
GetTextExtentExPointW(
HDC hdc,
LPCWSTR lpszStr,
int cchString,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize
)
{
return NtGdiGetTextExtentExPoint (
hdc, lpszStr, cchString, nMaxExtent, lpnFit, alpDx, lpSize );
}
/*
* @implemented
*/
HDC
STDCALL
ResetDCW(
HDC hdc,
CONST DEVMODEW *lpInitData
)
{
return NtGdiResetDC ( hdc, lpInitData );
}
/*
* @implemented
*/
BOOL
STDCALL
RemoveFontResourceW(
LPCWSTR lpFileName
)
{
return NtGdiRemoveFontResource ( lpFileName );
}
/*
* @implemented
*/
int
STDCALL
StartDocW(
HDC hdc,
CONST DOCINFOW *a1
)
{
return NtGdiStartDoc ( hdc, (DOCINFOW *)a1 );
}
/*
* @unimplemented
*/
@ -296,21 +97,6 @@ PolyTextOutW(
}
/*
* @implemented
*/
int
STDCALL
GetTextFaceW(
HDC a0,
int a1,
LPWSTR a2
)
{
return NtGdiGetTextFace(a0, a1, a2);
}
/*
* @unimplemented
*/

View file

@ -1,4 +1,4 @@
/* $Id: bitblt.c,v 1.24 2004/09/06 21:15:45 weiden Exp $
/* $Id: bitblt.c,v 1.25 2004/12/30 02:32:24 navaraf Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
@ -11,229 +11,6 @@
#include <debug.h>
/*
* @implemented
*/
BOOL
STDCALL
BitBlt(HDC hdcDest,
INT nXDest,
INT nYDest,
INT nWidth,
INT nHeight,
HDC hdcSrc,
INT nXSrc,
INT nYSrc,
DWORD dwRop)
{
return NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, dwRop);
}
/*
* @implemented
*/
HBITMAP
STDCALL
CreateBitmap(INT nWidth,
INT nHeight,
UINT cPlanes,
UINT cBitsPerPel,
CONST VOID *lpvBits)
{
return NtGdiCreateBitmap(nWidth, nHeight, cPlanes, cBitsPerPel, lpvBits);
}
/*
* @implemented
*/
HBITMAP
STDCALL
CreateBitmapIndirect(CONST BITMAP *lpbm)
{
return NtGdiCreateBitmapIndirect(lpbm);
}
/*
* @implemented
*/
HBITMAP
STDCALL
CreateCompatibleBitmap(HDC hdc,
INT nWidth,
INT nHeight)
{
return NtGdiCreateCompatibleBitmap(hdc, nWidth, nHeight);
}
/*
* @implemented
*/
HBITMAP
STDCALL
CreateDiscardableBitmap(HDC hdc,
INT nWidth,
INT nHeight)
{
return NtGdiCreateDiscardableBitmap(hdc, nWidth, nHeight);
}
/*
* @implemented
*/
HBITMAP
STDCALL
CreateDIBitmap(HDC hdc,
CONST BITMAPINFOHEADER *lpbmih,
DWORD fdwInit,
CONST VOID *lpbInit,
CONST BITMAPINFO *lpbmi,
UINT fuUsage)
{
return NtGdiCreateDIBitmap(hdc, lpbmih, fdwInit, lpbInit, lpbmi, fuUsage);
}
/*
* @implemented
*/
LONG
STDCALL
GetBitmapBits(HBITMAP hbmp,
LONG cbBuffer,
LPVOID lpvBits)
{
return NtGdiGetBitmapBits(hbmp, cbBuffer, lpvBits);
}
/*
* @implemented
*/
BOOL
STDCALL
GetBitmapDimensionEx(HBITMAP hBitmap,
LPSIZE lpDimension)
{
return NtGdiGetBitmapDimensionEx(hBitmap, lpDimension);
}
/*
* @implemented
*/
int
STDCALL
GetDIBits(HDC hdc,
HBITMAP hbmp,
UINT uStartScan,
UINT cScanLines,
LPVOID lpvBits,
LPBITMAPINFO lpbi,
UINT uUsage)
{
return NtGdiGetDIBits(hdc, hbmp, uStartScan, cScanLines, lpvBits, lpbi, uUsage);
}
/*
* @implemented
*/
BOOL
STDCALL
MaskBlt(HDC hdcDest,
INT nXDest,
INT nYDest,
INT nWidth,
INT nHeight,
HDC hdcSrc,
INT nXSrc,
INT nYSrc,
HBITMAP hbmMask,
INT xMask,
INT yMask,
DWORD dwRop)
{
return NtGdiMaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, hbmMask, xMask, yMask, dwRop);
}
/*
* @implemented
*/
BOOL
STDCALL
PlgBlt(HDC hdcDest,
CONST POINT *lpPoint,
HDC hdcSrc,
INT nXSrc,
INT nYSrc,
INT nWidth,
INT nHeight,
HBITMAP hbmMask,
INT xMask,
INT yMask)
{
return NtGdiPlgBlt(hdcDest, lpPoint, hdcSrc, nXSrc, nYSrc, nWidth, nHeight, hbmMask, xMask, yMask);
}
/*
* @implemented
*/
LONG
STDCALL
SetBitmapBits(HBITMAP hbmp,
DWORD cBytes,
CONST VOID *lpBits)
{
return NtGdiSetBitmapBits(hbmp, cBytes, lpBits);
}
/*
* @implemented
*/
int
STDCALL
SetDIBits(HDC hdc,
HBITMAP hbmp,
UINT uStartScan,
UINT cScanLines,
CONST VOID *lpvBits,
CONST BITMAPINFO *lpbmi,
UINT fuColorUse)
{
return NtGdiSetDIBits(hdc, hbmp, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
}
/*
* @implemented
*/
int
STDCALL
SetDIBitsToDevice(HDC hdc,
INT XDest,
INT YDest,
DWORD dwWidth,
DWORD dwHeight,
INT XSrc,
INT YSrc,
UINT uStartScan,
UINT cScanLines,
CONST VOID *lpvBits,
CONST BITMAPINFO *lpbmi,
UINT fuColorUse)
{
return NtGdiSetDIBitsToDevice(hdc, XDest, YDest, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines,
lpvBits, lpbmi, fuColorUse);
}
/*
* @implemented
@ -260,118 +37,6 @@ StretchBlt(
hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, dwRop);
}
return BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hdcSrc,
nXOriginSrc, nYOriginSrc, dwRop);
return NtGdiBitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hdcSrc,
nXOriginSrc, nYOriginSrc, dwRop);
}
/*
* @implemented
*/
int
STDCALL
StretchDIBits(HDC hdc,
INT XDest,
INT YDest,
INT nDestWidth,
INT nDestHeight,
INT XSrc,
INT YSrc,
INT nSrcWidth,
INT nSrcHeight,
CONST VOID *lpBits,
CONST BITMAPINFO *lpBitsInfo,
UINT iUsage,
DWORD dwRop)
{
return NtGdiStretchDIBits(hdc, XDest, YDest, nDestWidth, nDestHeight, XSrc, YSrc,
nSrcWidth, nSrcHeight, lpBits, lpBitsInfo, iUsage, dwRop);
}
/*
* @implemented
*/
HBITMAP
STDCALL
CreateDIBSection(HDC hdc,
CONST BITMAPINFO *pbmi,
UINT iUsage,
VOID **ppvBits,
HANDLE hSection,
DWORD dwOffset)
{
return NtGdiCreateDIBSection(hdc, pbmi, iUsage, ppvBits, hSection, dwOffset);
}
/*
* @implemented
*/
COLORREF
STDCALL
SetPixel(HDC hdc,
INT X,
INT Y,
COLORREF crColor)
{
return NtGdiSetPixel(hdc, X, Y, crColor);
}
/*
* @implemented
*/
BOOL
STDCALL
SetPixelV ( HDC hdc, int X, int Y, COLORREF crColor )
{
return NtGdiSetPixelV(hdc, X, Y, crColor);
}
/*
* @implemented
*/
COLORREF
STDCALL
GetPixel(HDC hdc, int nXPos, int nYPos)
{
return NtGdiGetPixel(hdc, nXPos, nYPos);
}
/*
* @implemented
*/
BOOL STDCALL
PatBlt(HDC hdc, INT nXLeft, INT nYLeft, INT nWidth, INT nHeight, DWORD dwRop)
{
return NtGdiPatBlt(hdc, nXLeft, nYLeft, nWidth, nHeight, dwRop);
}
/*
* @implemented
*/
BOOL
STDCALL
PolyPatBlt(HDC hdc, DWORD dwRop, PPATRECT lppRects, int cRects, ULONG Reserved)
{
return NtGdiPolyPatBlt(hdc, dwRop, lppRects, cRects, Reserved);
}
/******************************************************************************
* GdiTransparentBlt [GDI32.@]
*
* @implemented
*/
WINBOOL
STDCALL
GdiTransparentBlt(HDC hdcDst, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,
HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc,
COLORREF crTransparent)
{
return (WINBOOL)NtGdiTransparentBlt(hdcDst, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hdcSrc,
nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, crTransparent);
}

View file

@ -1,64 +0,0 @@
#include "precomp.h"
/*
* @implemented
*/
HBRUSH
STDCALL
CreateSolidBrush(
COLORREF crColor
)
{
return NtGdiCreateSolidBrush(crColor);
}
/*
* @implemented
*/
HBRUSH
STDCALL
CreateBrushIndirect(
CONST LOGBRUSH *lplb
)
{
return NtGdiCreateBrushIndirect(lplb);
}
/*
* @implemented
*/
HBRUSH
STDCALL
CreateDIBPatternBrushPt(
CONST VOID *lpPackedDIB,
UINT iUsage
)
{
return NtGdiCreateDIBPatternBrushPt(lpPackedDIB, iUsage);
}
/*
* @implemented
*/
HBRUSH
STDCALL
CreateHatchBrush(
int fnStyle,
COLORREF clrref
)
{
return NtGdiCreateHatchBrush(fnStyle, clrref);
}
/*
* @implemented
*/
HBRUSH
STDCALL
CreatePatternBrush(
HBITMAP hbmp
)
{
return NtGdiCreatePatternBrush ( hbmp );
}

View file

@ -1,86 +0,0 @@
/*
* ReactOS GDI lib
* Copyright (C) 2003 ReactOS Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Id: clip.c,v 1.9 2004/09/06 21:15:46 weiden Exp $
*
* PROJECT: ReactOS gdi32.dll
* FILE: lib/gdi32/objects/clip.c
* PURPOSE: Clipping functions
* PROGRAMMER: Ge van Geldorp (ge@gse.nl)
* UPDATE HISTORY:
* 2003/06/26 GvG Created
*/
#include "precomp.h"
/*
* @implemented
*/
int
STDCALL
SelectClipRgn(HDC hdc, HRGN hrgn)
{
return NtGdiSelectClipRgn(hdc, hrgn);
}
/*
* @implemented
*/
int
STDCALL
IntersectClipRect(
HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect
)
{
return NtGdiIntersectClipRect(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
}
/*
* @implemented
*/
int
STDCALL
ExcludeClipRect(
HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect
)
{
return NtGdiExcludeClipRect(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
}
/*
* @implemented
*/
int
STDCALL
ExtSelectClipRgn(
HDC hdc,
HRGN hrgn,
int fnMode
)
{
return NtGdiExtSelectClipRgn(hdc, hrgn, fnMode);
}

File diff suppressed because it is too large Load diff

View file

@ -1,139 +0,0 @@
#include "precomp.h"
/*
* @implemented
*/
BOOL
STDCALL
Polygon(HDC hdc,
CONST POINT *lpPoints,
int nCount)
{
return NtGdiPolygon(hdc, (CONST PPOINT)lpPoints, nCount);
}
/*
* @implemented
*/
BOOL
STDCALL
Rectangle(HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect)
{
return NtGdiRectangle(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
}
/*
* @implemented
*/
BOOL
STDCALL
RoundRect(
HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect,
int nWidth,
int nHeight
)
{
return NtGdiRoundRect(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect, nWidth, nHeight);
}
/*
* @implemented
*/
BOOL
STDCALL
PolyPolygon(
HDC hdc,
CONST POINT *lpPoints,
CONST INT *lpPolyCounts,
int nCount
)
{
return PolyPolygon(hdc, (LPPOINT)lpPoints, (LPINT)lpPolyCounts, nCount);
}
/*
* @implemented
*/
BOOL
STDCALL
Ellipse(HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect)
{
return NtGdiEllipse(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
}
/*
* @implemented
*/
BOOL
STDCALL
Pie(HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect,
int nXRadial1,
int nYRadial1,
int nXRadial2,
int nYRadial2)
{
return NtGdiPie(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect, nXRadial1, nYRadial1,
nXRadial2, nYRadial2);
}
BOOL STDCALL
ExtFloodFill(
HDC hdc, // handle to DC
int nXStart, // starting x-coordinate
int nYStart, // starting y-coordinate
COLORREF crColor, // fill color
UINT fuFillType // fill type
)
{
return NtGdiExtFloodFill(hdc, nXStart, nYStart, crColor, fuFillType);
}
/*
* @implemented
*/
BOOL STDCALL
FloodFill(
HDC hdc, // handle to DC
int nXStart, // starting x-coordinate
int nYStart, // starting y-coordinate
COLORREF crFill // fill color
)
{
return NtGdiFloodFill(hdc, nXStart, nYStart, crFill);
}
/*
* @implemented
*/
BOOL STDCALL
GdiGradientFill(
HDC hdc,
PTRIVERTEX pVertex,
ULONG dwNumVertex,
PVOID pMesh,
ULONG dwNumMesh,
ULONG dwMode
)
{
return NtGdiGradientFill(hdc, pVertex, dwNumVertex, pMesh, dwNumMesh, dwMode);
}

View file

@ -1,4 +1,4 @@
/* $Id: font.c,v 1.10 2004/12/25 11:18:50 navaraf Exp $
/* $Id: font.c,v 1.11 2004/12/30 02:32:24 navaraf Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
@ -178,16 +178,6 @@ NewTextMetricExW2A(NEWTEXTMETRICEXA *tma, NEWTEXTMETRICEXW *tmw)
return TRUE;
}
/*
* @implemented
*/
BOOL
STDCALL
TranslateCharsetInfo(DWORD *pSrc, LPCHARSETINFO lpCs, DWORD dwFlags)
{
return NtGdiTranslateCharsetInfo(pSrc, lpCs, dwFlags);
}
static int FASTCALL
IntEnumFontFamilies(HDC Dc, LPLOGFONTW LogFont, PVOID EnumProc, LPARAM lParam,
BOOL Unicode)
@ -379,39 +369,6 @@ GetCharWidthW (
}
/*
* @implemented
*/
BOOL
STDCALL
GetCharWidth32W(
HDC hdc,
UINT iFirstChar,
UINT iLastChar,
LPINT lpBuffer
)
{
return NtGdiGetCharWidth32 ( hdc, iFirstChar, iLastChar, lpBuffer );
}
/*
* @implemented
*/
DWORD
STDCALL
GetFontData(
HDC a0,
DWORD a1,
DWORD a2,
LPVOID a3,
DWORD a4
)
{
return NtGdiGetFontData(a0, a1, a2, a3, a4);
}
/*
* @implemented
*/
@ -469,7 +426,7 @@ GetCharacterPlacementW(
int c;
for (i = 0; i < nSet; i++)
{
if (GetCharWidth32W(hdc, lpString[i], lpString[i], &c))
if (NtGdiGetCharWidth32(hdc, lpString[i], lpString[i], &c))
lpResults->lpDx[i]= c;
}
}
@ -492,3 +449,336 @@ GetCharacterPlacementW(
return ret;
}
/*
* @unimplemented
*/
BOOL
APIENTRY
GetCharWidthFloatA(
HDC hdc,
UINT iFirstChar,
UINT iLastChar,
PFLOAT pxBuffer
)
{
/* FIXME what to do with iFirstChar and iLastChar ??? */
return NtGdiGetCharWidthFloat ( hdc, iFirstChar, iLastChar, pxBuffer );
}
/*
* @unimplemented
*/
BOOL
APIENTRY
GetCharABCWidthsA(
HDC hdc,
UINT uFirstChar,
UINT uLastChar,
LPABC lpabc
)
{
/* FIXME what to do with uFirstChar and uLastChar ??? */
return NtGdiGetCharABCWidths ( hdc, uFirstChar, uLastChar, lpabc );
}
/*
* @unimplemented
*/
BOOL
APIENTRY
GetCharABCWidthsFloatA(
HDC hdc,
UINT iFirstChar,
UINT iLastChar,
LPABCFLOAT lpABCF
)
{
/* FIXME what to do with iFirstChar and iLastChar ??? */
return NtGdiGetCharABCWidthsFloat ( hdc, iFirstChar, iLastChar, lpABCF );
}
/*
* @implemented
*/
DWORD
STDCALL
GetGlyphOutlineA(
HDC hdc,
UINT uChar,
UINT uFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpvBuffer,
CONST MAT2 *lpmat2
)
{
return NtGdiGetGlyphOutline ( hdc, uChar, uFormat, lpgm, cbBuffer, lpvBuffer, (CONST LPMAT2)lpmat2 );
}
/*
* @implemented
*/
HFONT
STDCALL
CreateFontIndirectA(
CONST LOGFONTA *lplf
)
{
LOGFONTW tlf;
RosRtlLogFontA2W(&tlf, lplf);
return NtGdiCreateFontIndirect(&tlf);
}
/*
* @implemented
*/
HFONT
STDCALL
CreateFontIndirectW(
CONST LOGFONTW *lplf
)
{
return NtGdiCreateFontIndirect((CONST LPLOGFONTW)lplf);
}
/*
* @implemented
*/
HFONT
STDCALL
CreateFontA(
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int fnWeight,
DWORD fdwItalic,
DWORD fdwUnderline,
DWORD fdwStrikeOut,
DWORD fdwCharSet,
DWORD fdwOutputPrecision,
DWORD fdwClipPrecision,
DWORD fdwQuality,
DWORD fdwPitchAndFamily,
LPCSTR lpszFace
)
{
ANSI_STRING StringA;
UNICODE_STRING StringU;
HFONT ret;
RtlInitAnsiString(&StringA, (LPSTR)lpszFace);
RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
ret = CreateFontW(nHeight, nWidth, nEscapement, nOrientation, fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut,
fdwCharSet, fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily, StringU.Buffer);
RtlFreeUnicodeString(&StringU);
return ret;
}
/*
* @implemented
*/
HFONT
STDCALL
CreateFontW(
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int nWeight,
DWORD fnItalic,
DWORD fdwUnderline,
DWORD fdwStrikeOut,
DWORD fdwCharSet,
DWORD fdwOutputPrecision,
DWORD fdwClipPrecision,
DWORD fdwQuality,
DWORD fdwPitchAndFamily,
LPCWSTR lpszFace
)
{
return NtGdiCreateFont(nHeight, nWidth, nEscapement, nOrientation, nWeight, fnItalic, fdwUnderline, fdwStrikeOut,
fdwCharSet, fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily, lpszFace);
}
/*
* @implemented
*/
BOOL
STDCALL
CreateScalableFontResourceW(
DWORD fdwHidden,
LPCWSTR lpszFontRes,
LPCWSTR lpszFontFile,
LPCWSTR lpszCurrentPath
)
{
return NtGdiCreateScalableFontResource ( fdwHidden,
lpszFontRes,
lpszFontFile,
lpszCurrentPath );
}
/*
* @implemented
*/
BOOL
STDCALL
CreateScalableFontResourceA(
DWORD fdwHidden,
LPCSTR lpszFontRes,
LPCSTR lpszFontFile,
LPCSTR lpszCurrentPath
)
{
NTSTATUS Status;
LPWSTR lpszFontResW, lpszFontFileW, lpszCurrentPathW;
BOOL rc = FALSE;
Status = HEAP_strdupA2W ( &lpszFontResW, lpszFontRes );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
Status = HEAP_strdupA2W ( &lpszFontFileW, lpszFontFile );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
Status = HEAP_strdupA2W ( &lpszCurrentPathW, lpszCurrentPath );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = NtGdiCreateScalableFontResource ( fdwHidden,
lpszFontResW,
lpszFontFileW,
lpszCurrentPathW );
HEAP_free ( lpszCurrentPathW );
}
HEAP_free ( lpszFontFileW );
}
HEAP_free ( lpszFontResW );
}
return rc;
}
/*
* @implemented
*/
int
STDCALL
AddFontResourceExW ( LPCWSTR lpszFilename, DWORD fl, PVOID pvReserved )
{
UNICODE_STRING Filename;
/* FIXME handle fl parameter */
RtlInitUnicodeString(&Filename, lpszFilename);
return NtGdiAddFontResource ( &Filename, fl );
}
/*
* @implemented
*/
int
STDCALL
AddFontResourceExA ( LPCSTR lpszFilename, DWORD fl, PVOID pvReserved )
{
NTSTATUS Status;
PWSTR FilenameW;
int rc = 0;
Status = HEAP_strdupA2W ( &FilenameW, lpszFilename );
if ( !NT_SUCCESS (Status) )
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = AddFontResourceExW ( FilenameW, fl, pvReserved );
HEAP_free ( &FilenameW );
}
return rc;
}
/*
* @implemented
*/
int
STDCALL
AddFontResourceA ( LPCSTR lpszFilename )
{
return AddFontResourceExA ( lpszFilename, 0, 0 );
}
/*
* @implemented
*/
int
STDCALL
AddFontResourceW ( LPCWSTR lpszFilename )
{
return AddFontResourceExW ( lpszFilename, 0, 0 );
}
/*
* @implemented
*/
BOOL
STDCALL
RemoveFontResourceW(
LPCWSTR lpFileName
)
{
return NtGdiRemoveFontResource ( lpFileName );
}
/*
* @implemented
*/
BOOL
STDCALL
RemoveFontResourceA(
LPCSTR lpFileName
)
{
NTSTATUS Status;
LPWSTR lpFileNameW;
BOOL rc = 0;
Status = HEAP_strdupA2W ( &lpFileNameW, lpFileName );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = NtGdiRemoveFontResource ( lpFileNameW );
HEAP_free ( lpFileNameW );
}
return rc;
}

View file

@ -1,162 +0,0 @@
#include "precomp.h"
/*
* @implemented
*/
BOOL
STDCALL
Arc(
HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect,
int nXStartArc,
int nYStartArc,
int nXEndArc,
int nYEndArc
)
{
return NtGdiArc(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect,
nXStartArc, nYStartArc, nXEndArc, nYEndArc);
}
/*
* @implemented
*/
int
STDCALL
SetArcDirection(
HDC hdc,
int ArcDirection
)
{
return NtGdiSetArcDirection(hdc, ArcDirection);
}
/*
* @implemented
*/
int
STDCALL
GetArcDirection(
HDC hdc
)
{
return NtGdiGetArcDirection(hdc);
}
/*
* @implemented
*/
BOOL
STDCALL
LineTo(HDC hdc, int nXEnd, int nYEnd)
{
return NtGdiLineTo(hdc, nXEnd, nYEnd);
}
/*
* @implemented
*/
BOOL
STDCALL
MoveToEx(HDC hdc, int X, int Y, LPPOINT lpPoint)
{
return NtGdiMoveToEx(hdc, X, Y, lpPoint);
}
/*
* @implemented
*/
BOOL
STDCALL
Polyline( HDC hdc, CONST POINT *lppt, int cPoints )
{
return NtGdiPolyline(hdc, (CONST LPPOINT) lppt, cPoints);
}
/*
* @implemented
*/
BOOL
STDCALL
ArcTo(
HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect,
int nXRadial1,
int nYRadial1,
int nXRadial2,
int nYRadial2
)
{
return NtGdiArcTo(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect,
nXRadial1, nYRadial1, nXRadial2, nYRadial2);
}
/*
* @implemented
*/
BOOL
STDCALL
PolyBezier(
HDC hdc,
CONST POINT *lppt,
DWORD cPoints
)
{
return NtGdiPolyBezier(hdc, (CONST PPOINT)lppt, cPoints);
}
/*
* @implemented
*/
BOOL
STDCALL
PolyBezierTo(
HDC hdc,
CONST POINT *lppt,
DWORD cCount
)
{
return NtGdiPolyBezierTo(hdc, (CONST PPOINT)lppt, cCount);
}
/*
* @implemented
*/
BOOL
STDCALL
PolylineTo(
HDC hdc,
CONST POINT *lppt,
DWORD cCount
)
{
return NtGdiPolylineTo(hdc, (CONST PPOINT)lppt, cCount);
}
/*
* @implemented
*/
BOOL
STDCALL
PolyPolyline(
HDC hdc,
CONST POINT *lppt,
CONST DWORD *lpdwPolyPoints,
DWORD cCount
)
{
return NtGdiPolyPolyline(hdc, (LPPOINT)lppt, (LPDWORD)lpdwPolyPoints, cCount);
}

View file

@ -1,6 +1,5 @@
#include "precomp.h"
/*
* @implemented
*/

View file

@ -1,23 +0,0 @@
#include "precomp.h"
/*
* @implemented
*/
HPEN
STDCALL
CreatePen(INT fnPenStyle, INT nWidth, COLORREF crColor)
{
return NtGdiCreatePen(fnPenStyle, nWidth, crColor);
}
/*
* @implemented
*/
HPEN
STDCALL
CreatePenIndirect(CONST LOGPEN *lplgpn)
{
return NtGdiCreatePenIndirect((CONST PLOGPEN)lplgpn);
}

View file

@ -1,21 +1,6 @@
#include "precomp.h"
/*
* @implemented
*/
int
STDCALL
OffsetClipRgn(
HDC hdc,
int nXOffset,
int nYOffset
)
{
return NtGdiOffsetClipRgn(hdc, nXOffset, nYOffset);
}
/*
* @implemented
*/
@ -36,292 +21,3 @@ GetClipRgn(
else return 0;
}
/*
* @implemented
*/
HRGN
STDCALL
CreateEllipticRgn(
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect
)
{
return NtGdiCreateEllipticRgn(nLeftRect, nTopRect, nRightRect, nBottomRect);
}
/*
* @implemented
*/
HRGN
STDCALL
CreateEllipticRgnIndirect(
CONST RECT *lprc
)
{
return NtGdiCreateEllipticRgnIndirect((RECT *)lprc);
}
/*
* @implemented
*/
HRGN
STDCALL
CreatePolyPolygonRgn(
CONST POINT *lppt,
CONST INT *lpPolyCounts,
int nCount,
int fnPolyFillMode
)
{
return NtGdiCreatePolyPolygonRgn((CONST PPOINT)lppt,
(CONST PINT)lpPolyCounts,
nCount,
fnPolyFillMode);
}
/*
* @implemented
*/
HRGN
STDCALL
CreatePolygonRgn(
CONST POINT *lppt,
int cPoints,
int fnPolyFillMode
)
{
return NtGdiCreatePolygonRgn((CONST PPOINT)lppt,
cPoints,
fnPolyFillMode);
}
/*
* @implemented
*/
HRGN
STDCALL
CreateRectRgn(
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect
)
{
return NtGdiCreateRectRgn(nLeftRect, nTopRect, nRightRect, nBottomRect);
}
/*
* @implemented
*/
HRGN
STDCALL
CreateRectRgnIndirect(
CONST RECT *lprc
)
{
return NtGdiCreateRectRgnIndirect((RECT *)lprc);
}
/*
* @implemented
*/
HRGN
STDCALL
CreateRoundRectRgn(
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect,
int nWidthEllipse,
int nHeightEllipse
)
{
return NtGdiCreateRoundRectRgn(nLeftRect, nTopRect, nRightRect, nBottomRect,
nWidthEllipse, nHeightEllipse);
}
/*
* @implemented
*/
BOOL
STDCALL
EqualRgn(
HRGN hSrcRgn1,
HRGN hSrcRgn2
)
{
return NtGdiEqualRgn(hSrcRgn1, hSrcRgn2);
}
/*
* @implemented
*/
int
STDCALL
OffsetRgn(
HRGN hrgn,
int nXOffset,
int nYOffset
)
{
return NtGdiOffsetRgn(hrgn, nXOffset, nYOffset);
}
/*
* @implemented
*/
int
STDCALL
GetRgnBox(
HRGN hrgn,
LPRECT lprc
)
{
return NtGdiGetRgnBox(hrgn, lprc);
}
/*
* @implemented
*/
BOOL
STDCALL
SetRectRgn(
HRGN hrgn,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect
)
{
return NtGdiSetRectRgn(hrgn, nLeftRect, nTopRect, nRightRect, nBottomRect);
}
/*
* @implemented
*/
int
STDCALL
CombineRgn(
HRGN hrgnDest,
HRGN hrgnSrc1,
HRGN hrgnSrc2,
int fnCombineMode
)
{
return NtGdiCombineRgn(hrgnDest, hrgnSrc1, hrgnSrc2, fnCombineMode);
}
/*
* @implemented
*/
DWORD
STDCALL
GetRegionData(
HRGN hRgn,
DWORD dwCount,
LPRGNDATA lpRgnData
)
{
return NtGdiGetRegionData(hRgn, dwCount, lpRgnData);
}
/*
* @implemented
*/
BOOL
STDCALL
PaintRgn(
HDC hdc,
HRGN hrgn
)
{
return NtGdiPaintRgn(hdc, hrgn);
}
/*
* @implemented
*/
BOOL
STDCALL
FillRgn(
HDC hdc,
HRGN hrgn,
HBRUSH hbr
)
{
return NtGdiFillRgn(hdc, hrgn, hbr);
}
/*
* @implemented
*/
BOOL
STDCALL
PtInRegion(
HRGN hrgn,
int X,
int Y
)
{
return NtGdiPtInRegion(hrgn, X, Y);
}
/*
* @implemented
*/
BOOL
STDCALL
RectInRegion(
HRGN hrgn,
CONST RECT *lprc
)
{
return NtGdiRectInRegion(hrgn, (CONST PRECT)lprc);
}
/*
* @implemented
*/
BOOL
STDCALL
InvertRgn(
HDC hdc,
HRGN hrgn
)
{
return NtGdiInvertRgn(hdc, hrgn);
}
/*
* @implemented
*/
BOOL
STDCALL
FrameRgn(
HDC hdc,
HRGN hrgn,
HBRUSH hbr,
int nWidth,
int nHeight
)
{
return NtGdiFrameRgn(hdc, hrgn, hbr, nWidth, nHeight);
}

View file

@ -1,20 +1,6 @@
#include "precomp.h"
/*
* @implemented
*/
UINT
STDCALL
SetTextAlign(
HDC hdc,
UINT fMode
)
{
return NtGdiSetTextAlign(hdc, fMode);
}
/*
* @implemented
*/
@ -60,16 +46,6 @@ TextOutW(
}
/*
* @implemented
*/
COLORREF STDCALL
SetTextColor(HDC hdc, COLORREF crColor)
{
return NtGdiSetTextColor(hdc, crColor);
}
/*
* @implemented
*/
@ -148,6 +124,60 @@ GetTextExtentPointW(
}
/*
* @implemented
*/
BOOL
APIENTRY
GetTextExtentExPointW(
HDC hdc,
LPCWSTR lpszStr,
int cchString,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize
)
{
return NtGdiGetTextExtentExPoint (
hdc, lpszStr, cchString, nMaxExtent, lpnFit, alpDx, lpSize );
}
/*
* @implemented
*/
BOOL
APIENTRY
GetTextExtentExPointA(
HDC hdc,
LPCSTR lpszStr,
int cchString,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize
)
{
NTSTATUS Status;
LPWSTR lpszStrW;
BOOL rc = 0;
Status = HEAP_strdupA2W ( &lpszStrW, lpszStr );
if (!NT_SUCCESS (Status))
SetLastError (RtlNtStatusToDosError(Status));
else
{
rc = NtGdiGetTextExtentExPoint (
hdc, lpszStrW, cchString, nMaxExtent, lpnFit, alpDx, lpSize );
HEAP_free ( lpszStrW );
}
return rc;
}
/*
* @implemented
*/
@ -245,94 +275,37 @@ ExtTextOutW(
/*
* @implemented
*/
HFONT
int
STDCALL
CreateFontIndirectA(
CONST LOGFONTA *lplf
GetTextFaceW(
HDC a0,
int a1,
LPWSTR a2
)
{
LOGFONTW tlf;
RosRtlLogFontA2W(&tlf, lplf);
return NtGdiCreateFontIndirect(&tlf);
return NtGdiGetTextFace(a0, a1, a2);
}
/*
* @implemented
*/
HFONT
int
STDCALL
CreateFontIndirectW(
CONST LOGFONTW *lplf
)
GetTextFaceA( HDC hdc, INT count, LPSTR name )
{
return NtGdiCreateFontIndirect((CONST LPLOGFONTW)lplf);
INT res = GetTextFaceW(hdc, 0, NULL);
LPWSTR nameW = HeapAlloc( GetProcessHeap(), 0, res * 2 );
GetTextFaceW( hdc, res, nameW );
if (name)
{
if (count && !WideCharToMultiByte( CP_ACP, 0, nameW, -1, name, count, NULL, NULL))
name[count-1] = 0;
res = strlen(name);
}
else
res = WideCharToMultiByte( CP_ACP, 0, nameW, -1, NULL, 0, NULL, NULL);
HeapFree( GetProcessHeap(), 0, nameW );
return res;
}
/*
* @implemented
*/
HFONT
STDCALL
CreateFontA(
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int fnWeight,
DWORD fdwItalic,
DWORD fdwUnderline,
DWORD fdwStrikeOut,
DWORD fdwCharSet,
DWORD fdwOutputPrecision,
DWORD fdwClipPrecision,
DWORD fdwQuality,
DWORD fdwPitchAndFamily,
LPCSTR lpszFace
)
{
ANSI_STRING StringA;
UNICODE_STRING StringU;
HFONT ret;
RtlInitAnsiString(&StringA, (LPSTR)lpszFace);
RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
ret = CreateFontW(nHeight, nWidth, nEscapement, nOrientation, fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut,
fdwCharSet, fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily, StringU.Buffer);
RtlFreeUnicodeString(&StringU);
return ret;
}
/*
* @implemented
*/
HFONT
STDCALL
CreateFontW(
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int nWeight,
DWORD fnItalic,
DWORD fdwUnderline,
DWORD fdwStrikeOut,
DWORD fdwCharSet,
DWORD fdwOutputPrecision,
DWORD fdwClipPrecision,
DWORD fdwQuality,
DWORD fdwPitchAndFamily,
LPCWSTR lpszFace
)
{
return NtGdiCreateFont(nHeight, nWidth, nEscapement, nOrientation, nWeight, fnItalic, fdwUnderline, fdwStrikeOut,
fdwCharSet, fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily, lpszFace);
}