1 /* $Id: stubsa.c,v 1.16 2003/07/21 19:05:52 royce Exp $
3 * reactos/lib/gdi32/misc/stubs.c
5 * GDI32.DLL Stubs for ANSI functions
7 * When you implement one of these functions,
8 * remove its stub from this file.
15 #undef WIN32_LEAN_AND_MEAN
17 #include <ddk/ntddk.h>
18 #include <win32k/text.h>
19 #include <win32k/metafile.h>
20 #include <win32k/dc.h>
21 #include <rosrtl/devmode.h>
22 #include <rosrtl/logfont.h>
29 AddFontResourceExA ( LPCSTR lpszFilename
, DWORD fl
, PVOID pvReserved
)
32 UNICODE_STRING FilenameU
;
35 Status
= RtlCreateUnicodeStringFromAsciiz ( &FilenameU
,
37 if (!NT_SUCCESS (Status
))
39 SetLastError (RtlNtStatusToDosError(Status
));
43 rc
= AddFontResourceExW ( FilenameU
.Buffer
, fl
, pvReserved
);
45 RtlFreeUnicodeString ( &FilenameU
);
55 AddFontResourceA ( LPCSTR lpszFilename
)
57 return AddFontResourceExA ( lpszFilename
, 0, 0 );
75 Status
= RtlCreateUnicodeStringFromAsciiz ( &FileU
,
77 if (!NT_SUCCESS (Status
))
79 SetLastError (RtlNtStatusToDosError(Status
));
83 rc
= W32kCopyMetaFile ( Src
, FileU
.Buffer
);
85 RtlFreeUnicodeString ( &FileU
);
100 CONST DEVMODEA
* lpdvmInit
104 UNICODE_STRING Driver
, Device
, Output
;
108 Status
= RtlCreateUnicodeStringFromAsciiz ( &Driver
,
110 if (!NT_SUCCESS (Status
))
112 SetLastError (RtlNtStatusToDosError(Status
));
116 Status
= RtlCreateUnicodeStringFromAsciiz ( &Device
,
118 if (!NT_SUCCESS (Status
))
120 SetLastError (RtlNtStatusToDosError(Status
));
124 Status
= RtlCreateUnicodeStringFromAsciiz ( &Output
,
126 if (!NT_SUCCESS (Status
))
128 SetLastError (RtlNtStatusToDosError(Status
));
133 RosRtlDevModeA2W ( &dvmInitW
, (const LPDEVMODEA
)lpdvmInit
);
135 rc
= W32kCreateIC ( Driver
.Buffer
,
138 lpdvmInit
? &dvmInitW
: NULL
);
140 RtlFreeUnicodeString ( &Output
);
141 RtlFreeUnicodeString ( &Device
);
142 RtlFreeUnicodeString ( &Driver
);
161 Status
= RtlCreateUnicodeStringFromAsciiz ( &File
,
163 if (!NT_SUCCESS (Status
))
165 SetLastError (RtlNtStatusToDosError(Status
));
169 rc
= W32kCreateMetaFile ( File
.Buffer
);
171 RtlFreeUnicodeString ( &File
);
182 CreateScalableFontResourceA(
186 LPCSTR lpszCurrentPath
190 UNICODE_STRING FontRes
, FontFile
, CurrentPath
;
193 Status
= RtlCreateUnicodeStringFromAsciiz ( &FontRes
,
195 if (!NT_SUCCESS (Status
))
197 SetLastError (RtlNtStatusToDosError(Status
));
201 Status
= RtlCreateUnicodeStringFromAsciiz ( &FontFile
,
202 (PCSZ
)lpszFontFile
);
203 if (!NT_SUCCESS (Status
))
205 SetLastError (RtlNtStatusToDosError(Status
));
209 Status
= RtlCreateUnicodeStringFromAsciiz ( &CurrentPath
,
210 (PCSZ
)lpszCurrentPath
);
211 if (!NT_SUCCESS (Status
))
213 SetLastError (RtlNtStatusToDosError(Status
));
217 return W32kCreateScalableFontResource ( fdwHidden
,
220 CurrentPath
.Buffer
);
222 RtlFreeUnicodeString ( &FontRes
);
223 RtlFreeUnicodeString ( &FontFile
);
224 RtlFreeUnicodeString ( &CurrentPath
);
235 DeviceCapabilitiesExA(
240 CONST DEVMODEA
*pDevMode
245 UNICODE_STRING Device
, Port
, Output
;
249 Status
= RtlCreateUnicodeStringFromAsciiz ( &Device
,
251 if (!NT_SUCCESS (Status
))
253 SetLastError (RtlNtStatusToDosError(Status
));
257 Status
= RtlCreateUnicodeStringFromAsciiz ( &Port
,
259 if (!NT_SUCCESS (Status
))
261 SetLastError (RtlNtStatusToDosError(Status
));
265 Status
= RtlCreateUnicodeStringFromAsciiz ( &Output
,
267 if (!NT_SUCCESS (Status
))
269 SetLastError (RtlNtStatusToDosError(Status
));
274 RosRtlDevModeA2W ( &DevModeW
, (const LPDEVMODEA
)pDevMode
);
276 /* FIXME no W32kDeviceCapabilities???? */
277 rc
= W32kDeviceCapabilities ( Device
.Buffer
,
281 pDevMode
? &DevModeW
: NULL
);
283 RtlFreeUnicodeString ( &Device
);
284 RtlFreeUnicodeString ( &Port
);
285 RtlFreeUnicodeString ( &Output
);
289 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
302 LPLOGFONTA lpLogFont
,
303 FONTENUMEXPROC lpEnumFontFamProc
,
310 RosRtlLogFontA2W ( &LogFontW
, lpLogFont
);
312 /* no need to convert LogFontW back to lpLogFont b/c it's an [in] parameter only */
313 return W32kEnumFontFamiliesEx ( hdc
, &LogFontW
, lpEnumFontFamProc
, lParam
, dwFlags
);
325 FONTENUMPROC lpEnumFontFamProc
,
330 UNICODE_STRING Family
;
333 Status
= RtlCreateUnicodeStringFromAsciiz ( &Family
,
335 if (!NT_SUCCESS (Status
))
337 SetLastError (RtlNtStatusToDosError(Status
));
341 rc
= W32kEnumFontFamilies ( hdc
, Family
.Buffer
, lpEnumFontFamProc
, lParam
);
343 RtlFreeUnicodeString ( &Family
);
357 FONTENUMPROC FontFunc
,
362 UNICODE_STRING FaceName
;
365 Status
= RtlCreateUnicodeStringFromAsciiz ( &FaceName
,
367 if (!NT_SUCCESS (Status
))
369 SetLastError (RtlNtStatusToDosError(Status
));
373 rc
= W32kEnumFonts ( hDC
, FaceName
.Buffer
, FontFunc
, lParam
);
375 RtlFreeUnicodeString ( &FaceName
);
393 return W32kGetCharWidth ( hdc
, iFirstChar
, iLastChar
, lpBuffer
);
409 return W32kGetCharWidth32 ( hdc
, iFirstChar
, iLastChar
, lpBuffer
);
425 return W32kGetCharWidthFloat ( hdc
, iFirstChar
, iLastChar
, pxBuffer
);
441 return W32kGetCharABCWidths ( hdc
, uFirstChar
, uLastChar
, lpabc
);
450 GetCharABCWidthsFloatA(
457 return W32kGetCharABCWidthsFloat ( hdc
, iFirstChar
, iLastChar
, lpABCF
);
476 return W32kGetGlyphOutline ( hdc
, uChar
, uFormat
, lpgm
, cbBuffer
, lpvBuffer
, (CONST LPMAT2
)lpmat2
);
490 UNICODE_STRING MetaFile
;
493 Status
= RtlCreateUnicodeStringFromAsciiz ( &MetaFile
,
494 (PCSZ
)lpszMetaFile
);
495 if (!NT_SUCCESS (Status
))
497 SetLastError (RtlNtStatusToDosError(Status
));
501 rc
= W32kGetMetaFile ( MetaFile
.Buffer
);
503 RtlFreeUnicodeString ( &MetaFile
);
514 GetOutlineTextMetricsA(
517 LPOUTLINETEXTMETRICA lpOTM
520 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
530 GetTextExtentExPointA(
544 Status
= RtlCreateUnicodeStringFromAsciiz ( &Str
,
546 if (!NT_SUCCESS (Status
))
548 SetLastError (RtlNtStatusToDosError(Status
));
552 rc
= W32kGetTextExtentExPoint (
553 hdc
, Str
.Buffer
, cchString
, nMaxExtent
, lpnFit
, alpDx
, lpSize
);
555 RtlFreeUnicodeString ( &Str
);
566 GetCharacterPlacementA(
575 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
587 CONST DEVMODEA
*lpInitData
592 RosRtlDevModeA2W ( &InitDataW
, (CONST LPDEVMODEA
)lpInitData
);
594 return W32kResetDC ( hdc
, &InitDataW
);
608 UNICODE_STRING FileName
;
611 Status
= RtlCreateUnicodeStringFromAsciiz ( &FileName
,
613 if (!NT_SUCCESS (Status
))
615 SetLastError (RtlNtStatusToDosError(Status
));
619 rc
= W32kRemoveFontResource ( FileName
.Buffer
);
621 RtlFreeUnicodeString ( &FileName
);
633 HENHMETAFILE hemfSrc
,
641 Status
= RtlCreateUnicodeStringFromAsciiz ( &File
,
643 if (!NT_SUCCESS (Status
))
645 SetLastError (RtlNtStatusToDosError(Status
));
649 rc
= W32kCopyEnhMetaFile ( hemfSrc
, File
.Buffer
);
651 RtlFreeUnicodeString ( &File
);
670 UNICODE_STRING FileName
, Description
;
673 Status
= RtlCreateUnicodeStringFromAsciiz ( &FileName
,
675 if (!NT_SUCCESS (Status
))
677 SetLastError (RtlNtStatusToDosError(Status
));
681 Status
= RtlCreateUnicodeStringFromAsciiz ( &Description
,
682 (PCSZ
)lpDescription
);
683 if (!NT_SUCCESS (Status
))
685 SetLastError (RtlNtStatusToDosError(Status
));
689 rc
= W32kCreateEnhMetaFile ( hdc
, FileName
.Buffer
, (CONST LPRECT
)lpRect
, Description
.Buffer
);
691 RtlFreeUnicodeString ( &FileName
);
692 RtlFreeUnicodeString ( &Description
);
708 UNICODE_STRING MetaFile
;
711 Status
= RtlCreateUnicodeStringFromAsciiz ( &MetaFile
,
712 (PCSZ
)lpszMetaFile
);
713 if (!NT_SUCCESS (Status
))
715 SetLastError (RtlNtStatusToDosError(Status
));
719 rc
= W32kGetEnhMetaFile ( MetaFile
.Buffer
);
721 RtlFreeUnicodeString ( &MetaFile
);
732 GetEnhMetaFileDescriptionA(
735 LPSTR lpszDescription
740 LPWSTR lpszDescriptionW
;
743 if ( lpszDescription
&& cchBuffer
)
745 hHeap
= RtlGetProcessHeap();
746 lpszDescriptionW
= RtlAllocateHeap ( hHeap
, 0, cchBuffer
);
749 rc
= W32kGetEnhMetaFileDescription ( hemf
, cchBuffer
, lpszDescriptionW
);
751 if ( lpszDescription
&& cchBuffer
)
753 Status
= RtlUnicodeToMultiByteN ( lpszDescription
,
758 RtlFreeHeap ( hHeap
, 0, lpszDescriptionW
);
759 if ( !NT_SUCCESS(Status
) )
761 SetLastError (RtlNtStatusToDosError(Status
));
780 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
796 return W32kGetObject ( a0
, a1
, a2
);
811 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
827 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
843 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
859 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
873 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
885 DWORD a1
, /* MS says LPDWORD! */
889 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
904 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
920 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
937 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
955 LPGLYPHMETRICSFLOAT a7
958 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
975 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);