2 * dll/win32/gdi32/misc/stubs.c
6 * When you implement one of these functions,
7 * remove its stub from this file.
14 #define SIZEOF_DEVMODEA_300 124
15 #define SIZEOF_DEVMODEA_400 148
16 #define SIZEOF_DEVMODEA_500 156
17 #define SIZEOF_DEVMODEW_300 188
18 #define SIZEOF_DEVMODEW_400 212
19 #define SIZEOF_DEVMODEW_500 220
29 /* FIXME Sharememory */
30 return NtGdiRestoreDC(hdc
, iLevel
);
40 /* FIXME Sharememory */
41 return NtGdiSaveDC(hdc
);
53 if (GDI_HANDLE_GET_TYPE(hDC
) != GDI_OBJECT_TYPE_DC
&&
54 GDI_HANDLE_GET_TYPE(hDC
) != GDI_OBJECT_TYPE_METADC
)
56 PLDC pLDC
= GdiGetLDC(hDC
);
59 SetLastError(ERROR_INVALID_HANDLE
);
62 /* If a document has started set it to die. */
63 if (pLDC
->Flags
& LDC_INIT_DOCUMENT
) pLDC
->Flags
|= LDC_KILL_DOCUMENT
;
65 return NtGdiCancelDC(hDC
);
68 if (GdiGetHandleUserData((HGDIOBJ
) hDC
, GDI_OBJECT_TYPE_DC
, (PVOID
) &pDc_Attr
))
70 pDc_Attr
->ulDirty_
&= ~DC_PLAYMETAFILE
;
88 if (GDI_HANDLE_GET_TYPE(hDC
) == GDI_OBJECT_TYPE_DC
)
89 return NtGdiDrawEscape(hDC
, nEscape
, cbInput
, (LPSTR
) lpszInData
);
91 if (GDI_HANDLE_GET_TYPE(hDC
) != GDI_OBJECT_TYPE_METADC
)
93 PLDC pLDC
= GdiGetLDC(hDC
);
96 if (pLDC
->Flags
& LDC_META_PRINT
)
98 // if (nEscape != QUERYESCSUPPORT)
99 // return EMFDRV_WriteEscape(hDC, nEscape, cbInput, lpszInData, EMR_DRAWESCAPE);
101 return NtGdiDrawEscape(hDC
, nEscape
, cbInput
, (LPSTR
) lpszInData
);
104 SetLastError(ERROR_INVALID_HANDLE
);
117 GOBJENUMPROC lpObjectFunc
,
123 DWORD_PTR EndOfBuffer
;
129 Size
= sizeof(LOGBRUSH
);
133 Size
= sizeof(LOGPEN
);
137 SetLastError(ERROR_INVALID_PARAMETER
);
141 ObjectsCount
= NtGdiEnumObjects(hdc
, nObjectType
, 0, NULL
);
142 if (!ObjectsCount
) return 0;
144 Buffer
= HeapAlloc(GetProcessHeap(), 0, ObjectsCount
* Size
);
147 SetLastError(ERROR_NOT_ENOUGH_MEMORY
);
151 if (!NtGdiEnumObjects(hdc
, nObjectType
, ObjectsCount
* Size
, Buffer
))
153 HeapFree(GetProcessHeap(), 0, Buffer
);
157 EndOfBuffer
= (DWORD_PTR
)Buffer
+ (ObjectsCount
* Size
);
158 while ((DWORD_PTR
)Buffer
< EndOfBuffer
)
160 Result
= lpObjectFunc(Buffer
, lParam
);
162 Buffer
= (PVOID
)((DWORD_PTR
)Buffer
+ Size
);
165 HeapFree(GetProcessHeap(), 0, Buffer
);
180 return NtGdiGetBoundsRect(hdc
,lprcBounds
,flags
& DCB_RESET
);
195 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
210 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
219 SetBoundsRect(HDC hdc
,
223 /* FIXME add check for validate the flags */
224 return NtGdiSetBoundsRect(hdc
, (LPRECT
)prc
, flags
);
237 const METAHEADER
*mh_in
= (const METAHEADER
*)lpData
;
239 if (size
& 1) return 0;
241 if (!size
|| mh_in
->mtType
!= METAFILE_MEMORY
|| mh_in
->mtVersion
!= 0x300 ||
242 mh_in
->mtHeaderSize
!= sizeof(METAHEADER
) / 2)
244 SetLastError(ERROR_INVALID_DATA
);
249 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
266 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
284 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
298 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
310 ENHMFENUMPROC callback
,
317 SetLastError(ERROR_INVALID_PARAMETER
);
322 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
338 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
348 GetEnhMetaFileHeader(
355 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
364 GetEnhMetaFilePaletteEntries(
371 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
389 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
406 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
416 PlayEnhMetaFileRecord(
419 CONST ENHMETARECORD
*a2
,
424 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
440 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
454 CONST METAFILEPICT
*a3
)
457 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
474 if (GDI_HANDLE_GET_TYPE(hDC
) == GDI_OBJECT_TYPE_EMF
)
476 PLDC pLDC
= GdiGetLDC(hDC
);
479 SetLastError(ERROR_INVALID_HANDLE
);
482 if (pLDC
->iType
== LDC_EMFLDC
)
485 return EMFDRV_GdiComment( hDC
, bytes
, buffer
);
500 CONST COLORADJUSTMENT
*a1
504 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
513 UnrealizeObject(HGDIOBJ hgdiobj
)
515 BOOL retValue
= TRUE
;
517 Win 2k Graphics API, Black Book. by coriolis.com
518 Page 62, Note that Steps 3, 5, and 6 are not required for Windows NT(tm)
519 and Windows 2000(tm).
521 Step 5. UnrealizeObject(hTrackBrush);
525 "Windows 2000/XP: If hgdiobj is a brush, UnrealizeObject does nothing,
526 and the function returns TRUE. Use SetBrushOrgEx to set the origin of
529 if (GDI_HANDLE_GET_TYPE(hgdiobj
) != GDI_OBJECT_TYPE_BRUSH
)
531 retValue
= NtGdiUnrealizeObject(hgdiobj
);
560 /*FIXME: Assume that ICM is always off, and cannot be turned on */
561 if (iEnableICM
== ICM_OFF
) return ICM_OFF
;
562 if (iEnableICM
== ICM_ON
) return 0;
563 if (iEnableICM
== ICM_QUERY
) return ICM_OFF
;
566 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
584 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
594 GetDeviceGammaRamp( HDC hdc
,
597 BOOL retValue
= FALSE
;
598 if (lpGammaRamp
== NULL
)
600 SetLastError(ERROR_INVALID_PARAMETER
);
604 retValue
= NtGdiGetDeviceGammaRamp(hdc
,lpGammaRamp
);
615 SetDeviceGammaRamp(HDC hdc
,
618 BOOL retValue
= FALSE
;
622 retValue
= NtGdiSetDeviceGammaRamp(hdc
, lpGammaRamp
);
626 SetLastError(ERROR_INVALID_PARAMETER
);
645 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
649 /* === AFTER THIS POINT I GUESS... =========
650 * (based on stack size in Norlander's .def)
651 * === WHERE ARE THEY DEFINED? =============
659 IsValidEnhMetaRecord(
665 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
675 IsValidEnhMetaRecordOffExt(
683 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
704 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
723 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
732 AddFontMemResourceEx(
739 if ( pbFont
&& cbFont
&& pcFonts
)
741 return NtGdiAddFontMemResourceEx(pbFont
, cbFont
, NULL
, 0, pcFonts
);
743 SetLastError(ERROR_INVALID_PARAMETER
);
752 AddFontResourceTracking(
758 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
769 ClearBitmapAttributes(HBITMAP hbm
, DWORD dwFlags
)
772 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
781 ClearBrushAttributes(HBRUSH hbm
, DWORD dwFlags
)
784 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
793 ColorCorrectPalette(HDC hDC
,HPALETTE hPalette
,DWORD dwFirstEntry
,DWORD dwNumOfEntries
)
796 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
805 GdiArtificialDecrementDriver(LPWSTR pDriverName
,BOOL unknown
)
808 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
817 GdiCleanCacheDC(HDC hdc
)
819 if (GDI_HANDLE_GET_TYPE(hdc
) == GDILoObjType_LO_DC_TYPE
)
821 SetLastError(ERROR_INVALID_HANDLE
);
830 GdiConvertAndCheckDC(HDC hdc
)
833 ULONG hType
= GDI_HANDLE_GET_TYPE(hdc
);
834 if (hType
== GDILoObjType_LO_DC_TYPE
|| hType
== GDILoObjType_LO_METADC16_TYPE
)
836 pldc
= GdiGetLDC(hdc
);
839 if (pldc
->Flags
& LDC_SAPCALLBACK
) GdiSAPCallback(pldc
);
840 if (pldc
->Flags
& LDC_KILL_DOCUMENT
) return NULL
;
841 if (pldc
->Flags
& LDC_STARTPAGE
) StartPage(hdc
);
844 SetLastError(ERROR_INVALID_HANDLE
);
853 GdiConvertEnhMetaFile(HENHMETAFILE hmf
)
856 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
865 GdiDrawStream(HDC dc
, ULONG l
, VOID
*v
) // See Bug 4784
868 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
877 GdiIsMetaFileDC(HDC hDC
)
879 if (GDI_HANDLE_GET_TYPE(hDC
) != GDI_OBJECT_TYPE_DC
)
881 if (GDI_HANDLE_GET_TYPE(hDC
) == GDI_OBJECT_TYPE_METADC
)
885 PLDC pLDC
= GdiGetLDC(hDC
);
888 SetLastError(ERROR_INVALID_HANDLE
);
891 if ( pLDC
->iType
== LDC_EMFLDC
) return TRUE
;
902 GdiIsMetaPrintDC(HDC hDC
)
905 if (GDI_HANDLE_GET_TYPE(hDC
) != GDI_OBJECT_TYPE_DC
)
907 if (GDI_HANDLE_GET_TYPE(hDC
) == GDI_OBJECT_TYPE_METADC
)
911 PLDC pLDC
= GdiGetLDC(hDC
);
914 SetLastError(ERROR_INVALID_HANDLE
);
917 if ( pLDC
->Flags
& LDC_META_PRINT
) return TRUE
;
928 GdiIsPlayMetafileDC(HDC hDC
)
930 PLDC pLDC
= GdiGetLDC(hDC
);
933 if ( pLDC
->Flags
& LDC_PLAY_MFDC
) return TRUE
;
943 GdiValidateHandle(HGDIOBJ hobj
)
945 PGDI_TABLE_ENTRY Entry
= GdiHandleTable
+ GDI_HANDLE_GET_INDEX(hobj
);
946 if ( (Entry
->Type
& GDI_ENTRY_BASETYPE_MASK
) != 0 &&
947 ( (Entry
->Type
<< GDI_ENTRY_UPPER_SHIFT
) & GDI_HANDLE_TYPE_MASK
) ==
948 GDI_HANDLE_GET_TYPE(hobj
) )
950 HANDLE pid
= (HANDLE
)((ULONG_PTR
)Entry
->ProcessId
& ~0x1);
951 if(pid
== NULL
|| pid
== CurrentProcessId
)
965 GetBitmapAttributes(HBITMAP hbm
)
968 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
977 GetBrushAttributes(HBRUSH hbr
)
980 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
989 GetEUDCTimeStamp(VOID
)
991 return NtGdiGetEudcTimeStampEx(NULL
,0,TRUE
);
999 GetFontAssocStatus(HDC hdc
)
1005 retValue
= NtGdiQueryFontAssocInfo(hdc
);
1016 GetTextExtentExPointWPri(HDC hdc
,
1024 return NtGdiGetTextExtentExW(hdc
,lpwsz
,cwc
,dxMax
,pcCh
,pdxOut
,psize
,0);
1032 QueryFontAssocStatus(VOID
)
1035 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1044 RemoveFontMemResourceEx(HANDLE fh
)
1048 return NtGdiRemoveFontMemResourceEx(fh
);
1050 SetLastError(ERROR_INVALID_PARAMETER
);
1059 RemoveFontResourceTracking(LPCSTR lpString
,int unknown
)
1062 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1071 SetBitmapAttributes(HBITMAP hbm
, DWORD dwFlags
)
1074 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1083 SetBrushAttributes(HBRUSH hbm
, DWORD dwFlags
)
1086 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1095 StartFormPage(HDC hdc
)
1097 return StartPage(hdc
);
1105 UnloadNetworkFonts(DWORD unknown
)
1108 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1116 GdiRealizationInfo(HDC hdc
,
1117 PREALIZATION_INFO pri
)
1119 // ATM we do not support local font data and Language Pack.
1120 return NtGdiGetRealizationInfo(hdc
, pri
, (HFONT
) NULL
);
1129 EXTTEXTMETRIC
*petm
)
1131 BOOL Ret
= NtGdiGetETM(hdc
, petm
);
1134 petm
->emKernPairs
= GetKerningPairsA(hdc
, 0, 0);
1144 Escape(HDC hdc
, INT nEscape
, INT cbInput
, LPCSTR lpvInData
, LPVOID lpvOutData
)
1146 int retValue
= SP_ERROR
;
1147 HGDIOBJ hObject
= hdc
;
1149 LPVOID pUserData
= NULL
;
1151 Type
= GDI_HANDLE_GET_TYPE(hObject
);
1153 if (Type
== GDI_OBJECT_TYPE_METADC
)
1155 /* FIXME we do not support metafile */
1157 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1164 /* Note Winodws check see if the handle have any user data for ABORTDOC command
1165 * ReactOS copy this behavior to be compatible with windows 2003
1167 if ( (!GdiGetHandleUserData(hObject
, (DWORD
)Type
, (PVOID
) &pUserData
)) ||
1168 (pUserData
== NULL
) )
1170 GdiSetLastError(ERROR_INVALID_HANDLE
);
1175 retValue
= AbortDoc(hdc
);
1182 /* Note 1: DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE is outdated and been replace with other api */
1183 /* Note 2: Winodws check see if the handle have any user data for DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE command
1184 * ReactOS copy this behavior to be compatible with windows 2003
1186 if ( (!GdiGetHandleUserData(hObject
, (DWORD
)Type
, (PVOID
) &pUserData
)) ||
1187 (pUserData
== NULL
) )
1189 GdiSetLastError(ERROR_INVALID_HANDLE
);
1195 /* Note : Winodws check see if the handle have any user data for DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE command
1196 * ReactOS copy this behavior to be compatible with windows 2003
1198 if ( (!GdiGetHandleUserData(hObject
, (DWORD
)Type
, (PVOID
) &pUserData
)) ||
1199 (pUserData
== NULL
) )
1201 GdiSetLastError(ERROR_INVALID_HANDLE
);
1204 retValue
= SetAbortProc(hdc
, (ABORTPROC
)lpvInData
);
1208 retValue
= GetSystemPaletteEntries(hdc
, (UINT
)*lpvInData
, 1, (LPPALETTEENTRY
)lpvOutData
);
1211 retValue
= SP_ERROR
;
1216 /* Note : Winodws check see if the handle have any user data for DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE command
1217 * ReactOS copy this behavior to be compatible with windows 2003
1219 if ( (!GdiGetHandleUserData(hObject
, (DWORD
)Type
, (PVOID
) &pUserData
)) ||
1220 (pUserData
== NULL
) )
1222 GdiSetLastError(ERROR_INVALID_HANDLE
);
1225 retValue
= EndDoc(hdc
);
1229 case GETSCALINGFACTOR
:
1230 /* Note GETSCALINGFACTOR is outdated have been replace by GetDeviceCaps */
1231 if ( Type
== GDI_OBJECT_TYPE_DC
)
1235 PPOINT ptr
= (PPOINT
) lpvOutData
;
1243 case GETEXTENDEDTEXTMETRICS
:
1244 retValue
= (int) GetETM( hdc
, (EXTTEXTMETRIC
*) lpvOutData
) != 0;
1249 DOCINFOA
*pUserDatalpdi
;
1252 /* Note : Winodws check see if the handle have any user data for STARTDOC command
1253 * ReactOS copy this behavior to be compatible with windows 2003
1255 if ( (!GdiGetHandleUserData(hObject
, (DWORD
)Type
, (PVOID
) &pUserDatalpdi
)) ||
1256 (pUserData
== NULL
) )
1258 GdiSetLastError(ERROR_INVALID_HANDLE
);
1262 lpdi
.cbSize
= sizeof(DOCINFOA
);
1264 /* NOTE lpszOutput will be store in handle userdata */
1265 lpdi
.lpszOutput
= 0;
1267 lpdi
.lpszDatatype
= 0;
1269 lpdi
.lpszDocName
= lpvInData
;
1271 /* NOTE : doc for StartDocA/W at msdn http://msdn2.microsoft.com/en-us/library/ms535793(VS.85).aspx */
1272 retValue
= StartDocA(hdc
, &lpdi
);
1274 /* StartDocA fail */
1277 /* check see if outbuffer contain any data, if it does abort */
1278 if ( (pUserDatalpdi
->lpszOutput
!= 0) &&
1279 ( (*(WCHAR
*)pUserDatalpdi
->lpszOutput
) != UNICODE_NULL
) )
1281 retValue
= SP_APPABORT
;
1285 retValue
= GetLastError();
1287 /* Translate StartDocA error code to STARTDOC error code
1288 * see msdn http://msdn2.microsoft.com/en-us/library/ms535472.aspx
1292 case ERROR_NOT_ENOUGH_MEMORY
:
1293 retValue
= SP_OUTOFMEMORY
;
1296 case ERROR_PRINT_CANCELLED
:
1297 retValue
= SP_USERABORT
;
1300 case ERROR_DISK_FULL
:
1301 retValue
= SP_OUTOFDISK
;
1305 retValue
= SP_ERROR
;
1318 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1330 GdiAddGlsRecord(HDC hdc
,
1336 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1345 GdiConvertMetaFilePict(HGLOBAL hMem
)
1348 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1357 GdiConvertToDevmodeW(const DEVMODEA
*dmA
)
1360 WORD dmW_size
, dmA_size
;
1362 dmA_size
= dmA
->dmSize
;
1364 /* this is the minimal dmSize that XP accepts */
1365 if (dmA_size
< FIELD_OFFSET(DEVMODEA
, dmFields
))
1368 if (dmA_size
> sizeof(DEVMODEA
))
1369 dmA_size
= sizeof(DEVMODEA
);
1371 dmW_size
= dmA_size
+ CCHDEVICENAME
;
1372 if (dmA_size
>= FIELD_OFFSET(DEVMODEA
, dmFormName
) + CCHFORMNAME
)
1373 dmW_size
+= CCHFORMNAME
;
1375 dmW
= HeapAlloc(GetProcessHeap(), 0, dmW_size
+ dmA
->dmDriverExtra
);
1376 if (!dmW
) return NULL
;
1378 MultiByteToWideChar(CP_ACP
, 0, (const char*) dmA
->dmDeviceName
, CCHDEVICENAME
,
1379 dmW
->dmDeviceName
, CCHDEVICENAME
);
1380 /* copy slightly more, to avoid long computations */
1381 memcpy(&dmW
->dmSpecVersion
, &dmA
->dmSpecVersion
, dmA_size
- CCHDEVICENAME
);
1383 if (dmA_size
>= FIELD_OFFSET(DEVMODEA
, dmFormName
) + CCHFORMNAME
)
1385 MultiByteToWideChar(CP_ACP
, 0, (const char*) dmA
->dmFormName
, CCHFORMNAME
,
1386 dmW
->dmFormName
, CCHFORMNAME
);
1387 if (dmA_size
> FIELD_OFFSET(DEVMODEA
, dmLogPixels
))
1388 memcpy(&dmW
->dmLogPixels
, &dmA
->dmLogPixels
, dmA_size
- FIELD_OFFSET(DEVMODEA
, dmLogPixels
));
1391 if (dmA
->dmDriverExtra
)
1392 memcpy((char *)dmW
+ dmW_size
, (const char *)dmA
+ dmA_size
, dmA
->dmDriverExtra
);
1394 dmW
->dmSize
= dmW_size
;
1404 GdiCreateLocalEnhMetaFile(HENHMETAFILE hmo
)
1407 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1416 GdiCreateLocalMetaFilePict(HENHMETAFILE hmo
)
1419 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1428 GdiGetDC(HANDLE SpoolFileHandle
)
1431 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1440 GdiGetPageHandle(HANDLE SpoolFileHandle
,
1442 LPDWORD pdwPageType
)
1445 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1454 GdiStartDocEMF(HANDLE SpoolFileHandle
,
1458 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1467 GdiStartPageEMF(HANDLE SpoolFileHandle
)
1470 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1479 GdiPlayPageEMF(HANDLE SpoolFileHandle
,
1481 RECT
*prectDocument
,
1486 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1495 GdiEndPageEMF(HANDLE SpoolFileHandle
,
1496 DWORD dwOptimization
)
1499 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1508 GdiEndDocEMF(HANDLE SpoolFileHandle
)
1511 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1520 GdiGetDevmodeForPage(HANDLE SpoolFileHandle
,
1526 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1535 GdiResetDCEMF(HANDLE SpoolFileHandle
,
1539 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1548 XLATEOBJ_piVector(XLATEOBJ
*XlateObj
)
1550 return XlateObj
->pulXlate
;
1558 GdiPlayEMF(LPWSTR pwszPrinterName
,
1559 LPDEVMODEW pDevmode
,
1561 EMFPLAYPROC pfnEMFPlayFn
,
1566 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1575 GdiPlayPrivatePageEMF(HANDLE SpoolFileHandle
,
1577 RECT
*prectDocument
)
1580 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1587 VOID WINAPI
GdiInitializeLanguagePack(DWORD InitParam
)
1590 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
1600 IN PTRIVERTEX pVertex
,
1606 /* FIXME some part need be done in user mode */
1607 return NtGdiGradientFill(hdc
, pVertex
, nVertex
, pMesh
, nMesh
, ulMode
);
1615 GdiTransparentBlt(IN HDC hdcDst
,
1628 /* FIXME some part need be done in user mode */
1629 return NtGdiTransparentBlt(hdcDst
, xDst
, yDst
, cxDst
, cyDst
, hdcSrc
, xSrc
, ySrc
, cxSrc
, cySrc
, (COLORREF
)TransColor
);
1642 /* FIXME figout the protypes, the HUMPD are a STRUCT or COM object */
1643 /* status contain some form of return value that being save, what it is I do not known */
1644 /* unsue seam have zero effect, what it is for I do not known */
1646 // ? return NtGdiSetPUMPDOBJ(humpd->0x10,TRUE, humpd, ?) <- blackbox, OpenRCE info, and api hooks for anylaysing;
1657 HBITMAP in_format_BitMap
,
1662 /* FIXME guessing the prototypes */
1665 * it have create a new bitmap with desired in format,
1666 * then convert it src_bitmap to new format
1667 * and return it as HBITMAP
1682 return NtGdiGetAppClipBox(hdc
, lprc
);
1691 GetFontData(HDC hdc
,
1701 return NtGdiGetFontData(hdc
, dwTable
, dwOffset
, lpvBuffer
, cbData
);
1706 NamedEscape(HDC hdc
,
1714 /* FIXME metadc, metadc are done most in user mode, and we do not support it
1715 * Windows 2000/XP/Vista ignore the current hdc, that are being pass and always set hdc to NULL
1716 * when it calls to NtGdiExtEscape from NamedEscape
1718 return NtGdiExtEscape(NULL
,pDriver
,wcslen(pDriver
),iEsc
,cjIn
,pjIn
,cjOut
,pjOut
);
1725 /* FIXME wrong protypes, it is a fastcall api */
1728 cGetTTFFromFOT(DWORD x1
,DWORD x2
,DWORD x3
, DWORD x4
, DWORD x5
, DWORD x6
, DWORD x7
)
1731 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);