[T2EMBED] Sync with Wine Staging 1.9.11. CORE-11368

svn path=/trunk/; revision=71739
This commit is contained in:
Amine Khaldi 2016-07-02 13:14:52 +00:00
parent 4db199664d
commit 4c898721f4
5 changed files with 101 additions and 22 deletions

View file

@ -19,9 +19,13 @@
#define WIN32_NO_STATUS
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <winreg.h>
#include <t2embapi.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(t2embed);
@ -70,16 +74,100 @@ LONG WINAPI TTEmbedFont(HDC hDC, ULONG ulFlags, ULONG ulCharSet, ULONG *pulPrivS
LONG WINAPI TTGetEmbeddingType(HDC hDC, ULONG *status)
{
FIXME("(%p %p) stub\n", hDC, status);
if (status) *status = EMBED_NOEMBEDDING;
return E_API_NOTIMPL;
OUTLINETEXTMETRICW otm;
TRACE("(%p %p)\n", hDC, status);
if (!hDC)
return E_HDCINVALID;
otm.otmSize = sizeof(otm);
if (!GetOutlineTextMetricsW(hDC, otm.otmSize, &otm))
return E_NOTATRUETYPEFONT;
if (!status)
return E_PERMISSIONSINVALID;
if (otm.otmfsType == LICENSE_INSTALLABLE)
*status = EMBED_INSTALLABLE;
else if (otm.otmfsType & LICENSE_NOEMBEDDING)
*status = EMBED_NOEMBEDDING;
else if (otm.otmfsType & LICENSE_PREVIEWPRINT)
*status = EMBED_PREVIEWPRINT;
else if (otm.otmfsType & LICENSE_EDITABLE)
*status = EMBED_EDITABLE;
return E_NONE;
}
LONG WINAPI TTIsEmbeddingEnabledForFacename(LPCSTR facename, BOOL *enabled)
{
static const WCHAR exclusionlistW[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
'S','h','a','r','e','d',' ','T','o','o','l','s','\\','t','2','e','m','b','e','d',0};
DWORD index;
HKEY hkey;
LONG ret;
TRACE("(%s %p)\n", debugstr_a(facename), enabled);
if (!facename)
return E_FACENAMEINVALID;
if (!enabled)
return E_PBENABLEDINVALID;
*enabled = TRUE;
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, exclusionlistW, 0, GENERIC_READ, &hkey))
return E_NONE;
*enabled = TRUE;
ret = ERROR_SUCCESS;
index = 0;
while (ret != ERROR_NO_MORE_ITEMS)
{
DWORD name_len, value_len, value, type;
CHAR name[LF_FACESIZE];
name_len = sizeof(name)/sizeof(*name);
value_len = sizeof(value);
ret = RegEnumValueA(hkey, index++, name, &name_len, NULL, &type, (BYTE*)&value, &value_len);
if (ret || type != REG_DWORD)
continue;
if (!lstrcmpiA(name, facename))
{
*enabled = !!value;
break;
}
}
RegCloseKey(hkey);
return E_NONE;
}
LONG WINAPI TTIsEmbeddingEnabled(HDC hDC, BOOL *enabled)
{
FIXME("(%p %p) stub\n", hDC, enabled);
if (enabled) *enabled = FALSE;
return E_API_NOTIMPL;
OUTLINETEXTMETRICA *otm;
LONG ret;
UINT len;
TRACE("(%p %p)\n", hDC, enabled);
if (!hDC)
return E_HDCINVALID;
len = GetOutlineTextMetricsA(hDC, 0, NULL);
if (!len)
return E_ERRORACCESSINGFACENAME;
otm = HeapAlloc(GetProcessHeap(), 0, len);
if (!otm)
return E_NOFREEMEMORY;
GetOutlineTextMetricsA(hDC, len, otm);
ret = TTIsEmbeddingEnabledForFacename(otm->otmpFaceName, enabled);
HeapFree(GetProcessHeap(), 0, otm);
return ret;
}
LONG WINAPI TTDeleteEmbeddedFont(HANDLE hFontReference, ULONG flags, ULONG *status)

View file

@ -66,15 +66,6 @@ TTGetEmbeddedFontInfo(ULONG ulFlags,
return E_NONE;
}
LONG
WINAPI
TTIsEmbeddingEnabledForFacename(LPSTR lpszFacename,
BOOL* pbEnabled)
{
UNIMPLEMENTED;
return E_NONE;
}
LONG
WINAPI
TTRunValidationTests(HDC hDC,

View file

@ -1,11 +1,11 @@
@ stdcall TTCharToUnicode(ptr ptr long ptr long long)
@ stdcall TTDeleteEmbeddedFont(ptr long ptr)
@ stdcall TTEmbedFont(ptr long long ptr ptr ptr ptr ptr long long ptr)
@ stdcall TTDeleteEmbeddedFont(long long ptr)
@ stdcall TTEmbedFont(long long long ptr ptr ptr ptr ptr long long ptr)
@ stdcall TTEmbedFontFromFileA(ptr str long long long ptr ptr ptr ptr ptr long long ptr)
@ stdcall TTEnableEmbeddingForFacename(str long)
@ stdcall TTGetEmbeddedFontInfo(long ptr long ptr ptr ptr ptr)
@ stdcall TTGetEmbeddingType(ptr ptr)
@ stdcall TTIsEmbeddingEnabled(ptr ptr)
@ stdcall TTGetEmbeddingType(long ptr)
@ stdcall TTIsEmbeddingEnabled(long ptr)
@ stdcall TTIsEmbeddingEnabledForFacename(str ptr)
@ stdcall TTLoadEmbeddedFont(ptr long ptr long ptr ptr ptr wstr str ptr)
@ stdcall TTRunValidationTests(ptr ptr)
@ -17,7 +17,7 @@
@ stub _TTGetEmbeddedFontInfo@28
@ stdcall _TTGetEmbeddingType@8(long ptr) TTGetEmbeddingType
@ stdcall _TTIsEmbeddingEnabled@8(long ptr) TTIsEmbeddingEnabled
@ stub _TTIsEmbeddingEnabledForFacename@8
@ stdcall _TTIsEmbeddingEnabledForFacename@8(str ptr) TTIsEmbeddingEnabledForFacename
@ stdcall _TTLoadEmbeddedFont@40(ptr long ptr long ptr ptr ptr wstr str ptr) TTLoadEmbeddedFont
@ stub _TTRunValidationTests@8
@ stdcall TTEmbedFontEx(ptr long long ptr ptr ptr ptr ptr long long ptr)

View file

@ -186,7 +186,7 @@ reactos/dll/win32/stdole2.tlb # Synced to WineStaging-1.9.4
reactos/dll/win32/stdole32.tlb # Synced to WineStaging-1.9.4
reactos/dll/win32/sti # Synced to WineStaging-1.9.4
reactos/dll/win32/sxs # Synced to WineStaging-1.9.4
reactos/dll/win32/t2embed # Synced to WineStaging-1.9.4
reactos/dll/win32/t2embed # Synced to WineStaging-1.9.11
reactos/dll/win32/tapi32 # Synced to WineStaging-1.9.4
reactos/dll/win32/traffic # Synced to WineStaging-1.9.4
reactos/dll/win32/twain_32 # Synced to WineStaging-1.9.4

View file

@ -233,7 +233,7 @@ TTIsEmbeddingEnabled(HDC hDC,
LONG
WINAPI
TTIsEmbeddingEnabledForFacename(LPSTR lpszFacename,
TTIsEmbeddingEnabledForFacename(LPCSTR lpszFacename,
BOOL* pbEnabled);
LONG