1 /* $Id: stubs.c 28533 2007-08-24 22:44:36Z greatlrd $
3 * reactos/lib/gdi32/misc/eng.c
17 EngAcquireSemaphore ( IN HSEMAPHORE hsem
)
19 RtlEnterCriticalSection((PRTL_CRITICAL_SECTION
)hsem
);
27 copy_my_glyphset( FD_GLYPHSET
*dst_glyphset
, FD_GLYPHSET
* src_glyphset
, ULONG Size
)
29 BOOL retValue
= FALSE
;
31 memcpy(src_glyphset
, dst_glyphset
, Size
);
32 if (src_glyphset
->cRuns
== 0)
46 EngComputeGlyphSet(INT nCodePage
,INT nFirstChar
,INT cChars
)
48 FD_GLYPHSET
* ntfd_glyphset
;
49 FD_GLYPHSET
* myfd_glyphset
= NULL
;
51 ntfd_glyphset
= NtGdiEngComputeGlyphSet(nCodePage
,nFirstChar
,cChars
);
55 if (ntfd_glyphset
->cjThis
)
57 myfd_glyphset
= GlobalAlloc(0,ntfd_glyphset
->cjThis
);
60 if (copy_my_glyphset(myfd_glyphset
,ntfd_glyphset
,ntfd_glyphset
->cjThis
) == FALSE
)
62 GlobalFree(myfd_glyphset
);
76 EngCreateSemaphore ( VOID
)
78 PRTL_CRITICAL_SECTION CritSect
= RtlAllocateHeap(GetProcessHeap(), 0, sizeof(RTL_CRITICAL_SECTION
));
84 RtlInitializeCriticalSection( CritSect
);
85 return (HSEMAPHORE
)CritSect
;
93 EngDeleteSemaphore ( IN HSEMAPHORE hsem
)
97 RtlDeleteCriticalSection( (PRTL_CRITICAL_SECTION
) hsem
);
98 RtlFreeHeap( GetProcessHeap(), 0, hsem
);
106 EngFindResource(HANDLE h
,
116 if ((HRSrc
= FindResourceW( (HMODULE
) h
, MAKEINTRESOURCEW(iName
), MAKEINTRESOURCEW(iType
))))
118 if ((Size
= SizeofResource( (HMODULE
) h
, HRSrc
)))
120 if ((Hg
= LoadResource( (HMODULE
) h
, HRSrc
)))
122 Lock
= LockResource( Hg
);
135 EngFreeModule(HANDLE h
)
145 EngGetCurrentCodePage( OUT PUSHORT OemCodePage
,
146 OUT PUSHORT AnsiCodePage
)
148 *OemCodePage
= GetOEMCP();
149 *AnsiCodePage
= GetACP();
157 EngGetDriverName(HDEV hdev
)
159 // DHPDEV from NtGdiGetDhpdev must be from print driver.
160 PUMPDEV pPDev
= (PUMPDEV
)NtGdiGetDhpdev(hdev
);
162 if (!pPDev
) return NULL
;
164 if (pPDev
->Sig
!= PDEV_UMPD_ID
)
166 pPDev
= (PUMPDEV
)pPDev
->Sig
;
168 return pPDev
->pdi5Info
->pDriverPath
;
175 EngGetPrinterDataFileName(HDEV hdev
)
177 PUMPDEV pPDev
= (PUMPDEV
)NtGdiGetDhpdev(hdev
);
179 if (!pPDev
) return NULL
;
181 if (pPDev
->Sig
!= PDEV_UMPD_ID
)
183 pPDev
= (PUMPDEV
)pPDev
->Sig
;
185 return pPDev
->pdi5Info
->pDataFile
;
192 EngLoadModule(LPWSTR pwsz
)
194 return LoadLibraryExW ( pwsz
, NULL
, LOAD_LIBRARY_AS_DATAFILE
);
201 EngMultiByteToWideChar(UINT CodePage
,
202 LPWSTR WideCharString
,
203 INT BytesInWideCharString
,
204 LPSTR MultiByteString
,
205 INT BytesInMultiByteString
)
207 return MultiByteToWideChar(CodePage
,0,MultiByteString
,BytesInMultiByteString
,WideCharString
,BytesInWideCharString
/ sizeof(WCHAR
));
214 EngQueryLocalTime(PENG_TIME_FIELDS etf
)
216 SYSTEMTIME SystemTime
;
217 GetLocalTime( &SystemTime
);
218 etf
->usYear
= SystemTime
.wYear
;
219 etf
->usMonth
= SystemTime
.wMonth
;
220 etf
->usWeekday
= SystemTime
.wDayOfWeek
;
221 etf
->usDay
= SystemTime
.wDay
;
222 etf
->usHour
= SystemTime
.wHour
;
223 etf
->usMinute
= SystemTime
.wMinute
;
224 etf
->usSecond
= SystemTime
.wSecond
;
225 etf
->usMilliseconds
= SystemTime
.wMilliseconds
;
233 EngReleaseSemaphore ( IN HSEMAPHORE hsem
)
235 RtlLeaveCriticalSection( (PRTL_CRITICAL_SECTION
) hsem
);
246 EngWideCharToMultiByte( UINT CodePage
,
247 LPWSTR WideCharString
,
248 INT BytesInWideCharString
,
249 LPSTR MultiByteString
,
250 INT BytesInMultiByteString
)
252 return WideCharToMultiByte(CodePage
, 0, WideCharString
, (BytesInWideCharString
/sizeof(WCHAR
)),
253 MultiByteString
, BytesInMultiByteString
, NULL
, NULL
);