mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 01:15:43 +00:00
* Create a branch for USB experiments.
svn path=/branches/usb-experiments/; revision=72629
This commit is contained in:
parent
28d8ba0d3e
commit
0ee830d7a4
23049 changed files with 0 additions and 1313991 deletions
264
win32ss/gdi/gdi32/objects/eng.c
Normal file
264
win32ss/gdi/gdi32/objects/eng.c
Normal file
|
@ -0,0 +1,264 @@
|
|||
/*
|
||||
* reactos/lib/gdi32/misc/eng.c
|
||||
*
|
||||
* GDI32.DLL eng part
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include <precomp.h>
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
WINAPI
|
||||
EngAcquireSemaphore ( IN HSEMAPHORE hsem )
|
||||
{
|
||||
RtlEnterCriticalSection((PRTL_CRITICAL_SECTION)hsem);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
copy_my_glyphset( FD_GLYPHSET *dst_glyphset , FD_GLYPHSET * src_glyphset, ULONG Size)
|
||||
{
|
||||
BOOL retValue = FALSE;
|
||||
|
||||
memcpy(src_glyphset, dst_glyphset, Size);
|
||||
if (src_glyphset->cRuns == 0)
|
||||
{
|
||||
retValue = TRUE;
|
||||
}
|
||||
|
||||
/* FIXME copy wrun */
|
||||
return retValue;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
FD_GLYPHSET*
|
||||
WINAPI
|
||||
EngComputeGlyphSet(INT nCodePage,INT nFirstChar,INT cChars)
|
||||
{
|
||||
FD_GLYPHSET * ntfd_glyphset;
|
||||
FD_GLYPHSET * myfd_glyphset = NULL;
|
||||
|
||||
ntfd_glyphset = NtGdiEngComputeGlyphSet(nCodePage,nFirstChar,cChars);
|
||||
|
||||
if (ntfd_glyphset)
|
||||
{
|
||||
if (ntfd_glyphset->cjThis)
|
||||
{
|
||||
myfd_glyphset = GlobalAlloc(0,ntfd_glyphset->cjThis);
|
||||
if (myfd_glyphset)
|
||||
{
|
||||
if (copy_my_glyphset(myfd_glyphset,ntfd_glyphset,ntfd_glyphset->cjThis) == FALSE)
|
||||
{
|
||||
GlobalFree(myfd_glyphset);
|
||||
myfd_glyphset = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return myfd_glyphset;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
HSEMAPHORE
|
||||
WINAPI
|
||||
EngCreateSemaphore ( VOID )
|
||||
{
|
||||
PRTL_CRITICAL_SECTION CritSect = RtlAllocateHeap(GetProcessHeap(), 0, sizeof(RTL_CRITICAL_SECTION));
|
||||
if (!CritSect)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
RtlInitializeCriticalSection( CritSect );
|
||||
return (HSEMAPHORE)CritSect;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
WINAPI
|
||||
EngDeleteSemaphore ( IN HSEMAPHORE hsem )
|
||||
{
|
||||
if (hsem)
|
||||
{
|
||||
RtlDeleteCriticalSection( (PRTL_CRITICAL_SECTION) hsem );
|
||||
RtlFreeHeap( GetProcessHeap(), 0, hsem );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
PVOID WINAPI
|
||||
EngFindResource(HANDLE h,
|
||||
int iName,
|
||||
int iType,
|
||||
PULONG pulSize)
|
||||
{
|
||||
HRSRC HRSrc;
|
||||
DWORD Size = 0;
|
||||
HGLOBAL Hg;
|
||||
LPVOID Lock = NULL;
|
||||
|
||||
HRSrc = FindResourceW((HMODULE)h, MAKEINTRESOURCEW(iName), MAKEINTRESOURCEW(iType));
|
||||
if (HRSrc != NULL)
|
||||
{
|
||||
Size = SizeofResource((HMODULE)h, HRSrc);
|
||||
if (Size != 0)
|
||||
{
|
||||
Hg = LoadResource((HMODULE)h, HRSrc);
|
||||
if (Hg != NULL)
|
||||
{
|
||||
Lock = LockResource( Hg );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*pulSize = Size;
|
||||
return (PVOID) Lock;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID WINAPI
|
||||
EngFreeModule(HANDLE h)
|
||||
{
|
||||
FreeLibrary(h);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
||||
VOID WINAPI
|
||||
EngGetCurrentCodePage( OUT PUSHORT OemCodePage,
|
||||
OUT PUSHORT AnsiCodePage)
|
||||
{
|
||||
*OemCodePage = GetOEMCP();
|
||||
*AnsiCodePage = GetACP();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
LPWSTR WINAPI
|
||||
EngGetDriverName(HDEV hdev)
|
||||
{
|
||||
// DHPDEV from NtGdiGetDhpdev must be from print driver.
|
||||
PUMPDEV pPDev = (PUMPDEV)NtGdiGetDhpdev(hdev);
|
||||
|
||||
if (!pPDev) return NULL;
|
||||
|
||||
if (pPDev->Sig != PDEV_UMPD_ID)
|
||||
{
|
||||
pPDev = (PUMPDEV)pPDev->Sig;
|
||||
}
|
||||
return pPDev->pdi5Info->pDriverPath;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
LPWSTR WINAPI
|
||||
EngGetPrinterDataFileName(HDEV hdev)
|
||||
{
|
||||
PUMPDEV pPDev = (PUMPDEV)NtGdiGetDhpdev(hdev);
|
||||
|
||||
if (!pPDev) return NULL;
|
||||
|
||||
if (pPDev->Sig != PDEV_UMPD_ID)
|
||||
{
|
||||
pPDev = (PUMPDEV)pPDev->Sig;
|
||||
}
|
||||
return pPDev->pdi5Info->pDataFile;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
HANDLE WINAPI
|
||||
EngLoadModule(LPWSTR pwsz)
|
||||
{
|
||||
return LoadLibraryExW ( pwsz, NULL, LOAD_LIBRARY_AS_DATAFILE);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
INT WINAPI
|
||||
EngMultiByteToWideChar(UINT CodePage,
|
||||
LPWSTR WideCharString,
|
||||
INT BytesInWideCharString,
|
||||
LPSTR MultiByteString,
|
||||
INT BytesInMultiByteString)
|
||||
{
|
||||
return MultiByteToWideChar(CodePage,0,MultiByteString,BytesInMultiByteString,WideCharString,BytesInWideCharString / sizeof(WCHAR));
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID WINAPI
|
||||
EngQueryLocalTime(PENG_TIME_FIELDS etf)
|
||||
{
|
||||
SYSTEMTIME SystemTime;
|
||||
GetLocalTime( &SystemTime );
|
||||
etf->usYear = SystemTime.wYear;
|
||||
etf->usMonth = SystemTime.wMonth;
|
||||
etf->usWeekday = SystemTime.wDayOfWeek;
|
||||
etf->usDay = SystemTime.wDay;
|
||||
etf->usHour = SystemTime.wHour;
|
||||
etf->usMinute = SystemTime.wMinute;
|
||||
etf->usSecond = SystemTime.wSecond;
|
||||
etf->usMilliseconds = SystemTime.wMilliseconds;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
WINAPI
|
||||
EngReleaseSemaphore ( IN HSEMAPHORE hsem )
|
||||
{
|
||||
RtlLeaveCriticalSection( (PRTL_CRITICAL_SECTION) hsem);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
INT
|
||||
WINAPI
|
||||
EngWideCharToMultiByte( UINT CodePage,
|
||||
LPWSTR WideCharString,
|
||||
INT BytesInWideCharString,
|
||||
LPSTR MultiByteString,
|
||||
INT BytesInMultiByteString)
|
||||
{
|
||||
return WideCharToMultiByte(CodePage, 0, WideCharString, (BytesInWideCharString/sizeof(WCHAR)),
|
||||
MultiByteString, BytesInMultiByteString, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
ULONG *
|
||||
WINAPI
|
||||
XLATEOBJ_piVector(XLATEOBJ *XlateObj)
|
||||
{
|
||||
return XlateObj->pulXlate;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue