From 7699f9cb0500f53c16758b3b8d202787f5fc4450 Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Wed, 22 Apr 2009 08:51:09 +0000 Subject: [PATCH] - Add Font Embedding Dll (it is necessary for Iron and Chrome) svn path=/trunk/; revision=40644 --- reactos/baseaddress.rbuild | 1 + reactos/boot/bootdata/packages/reactos.dff | 1 + reactos/dll/win32/t2embed/t2embed.c | 205 +++++++++++++++ reactos/dll/win32/t2embed/t2embed.rbuild | 13 + reactos/dll/win32/t2embed/t2embed.rc | 7 + reactos/dll/win32/t2embed/t2embed.spec | 25 ++ reactos/dll/win32/win32.rbuild | 3 + reactos/include/psdk/t2embapi.h | 286 +++++++++++++++++++++ 8 files changed, 541 insertions(+) create mode 100644 reactos/dll/win32/t2embed/t2embed.c create mode 100644 reactos/dll/win32/t2embed/t2embed.rbuild create mode 100644 reactos/dll/win32/t2embed/t2embed.rc create mode 100644 reactos/dll/win32/t2embed/t2embed.spec create mode 100644 reactos/include/psdk/t2embapi.h diff --git a/reactos/baseaddress.rbuild b/reactos/baseaddress.rbuild index 0c3f2465446..f4913c9a91e 100644 --- a/reactos/baseaddress.rbuild +++ b/reactos/baseaddress.rbuild @@ -13,6 +13,7 @@ + diff --git a/reactos/boot/bootdata/packages/reactos.dff b/reactos/boot/bootdata/packages/reactos.dff index 6b306ec33c6..89d4e8b90af 100644 --- a/reactos/boot/bootdata/packages/reactos.dff +++ b/reactos/boot/bootdata/packages/reactos.dff @@ -412,6 +412,7 @@ dll\win32\stdole32.tlb\stdole32.tlb 1 dll\win32\sti\sti.dll 1 dll\win32\sxs\sxs.dll 1 dll\win32\syssetup\syssetup.dll 1 +dll\win32\t2embed\t2embed.dll 1 dll\win32\tapi32\tapi32.dll 1 dll\win32\tapiui\tapiui.dll 1 dll\win32\traffic\traffic.dll 1 diff --git a/reactos/dll/win32/t2embed/t2embed.c b/reactos/dll/win32/t2embed/t2embed.c new file mode 100644 index 00000000000..4a1ef35f024 --- /dev/null +++ b/reactos/dll/win32/t2embed/t2embed.c @@ -0,0 +1,205 @@ +/* + * PROJECT: Font Embedding Dll + * FILE: dll\win32\t2embed\t2embed.c + * PURPOSE: Main file + * PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org) + */ + +#include +#include +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(t2embed); + +LONG +WINAPI +TTCharToUnicode(HDC hDC, + UCHAR* pucCharCodes, + ULONG ulCharCodeSize, + USHORT* pusShortCodes, + ULONG ulShortCodeSize, + ULONG ulFlags) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTDeleteEmbeddedFont(HANDLE hFontReference, + ULONG ulFlags, + ULONG* pulStatus) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTEmbedFont(HDC hDC, + ULONG ulFlags, + ULONG ulCharSet, + ULONG* pulPrivStatus, + ULONG* pulStatus, + WRITEEMBEDPROC lpfnWriteToStream, + LPVOID lpvWriteStream, + USHORT* pusCharCodeSet, + USHORT usCharCodeCount, + USHORT usLanguage, + TTEMBEDINFO* pTTEmbedInfo) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTEmbedFontFromFileA(HDC hDC, + LPCSTR szFontFileName, + USHORT usTTCIndex, + ULONG ulFlags, + ULONG ulCharSet, + ULONG* pulPrivStatus, + ULONG* pulStatus, + WRITEEMBEDPROC lpfnWriteToStream, + LPVOID lpvWriteStream, + USHORT* pusCharCodeSet, + USHORT usCharCodeCount, + USHORT usLanguage, + TTEMBEDINFO* pTTEmbedInfo) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTEnableEmbeddingForFacename(LPSTR lpszFacename, + BOOL bEnable) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTGetEmbeddedFontInfo(ULONG ulFlags, + ULONG* pulPrivStatus, + ULONG ulPrivs, + ULONG* pulStatus, + READEMBEDPROC lpfnReadFromStream, + LPVOID lpvReadStream, + TTLOADINFO* pTTLoadInfo) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTGetEmbeddingType(HDC hDC, + ULONG* pulPrivStatus) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTIsEmbeddingEnabled(HDC hDC, + BOOL* pbEnabled) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTIsEmbeddingEnabledForFacename(LPSTR lpszFacename, + BOOL* pbEnabled) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTLoadEmbeddedFont(HANDLE *phFontReference, + ULONG ulFlags, + ULONG* pulPrivStatus, + ULONG ulPrivs, + ULONG* pulStatus, + READEMBEDPROC lpfnReadFromStream, + LPVOID lpvReadStream, + LPWSTR szWinFamilyName, + LPSTR szMacFamilyName, + TTLOADINFO* pTTLoadInfo) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTRunValidationTests(HDC hDC, + TTVALIDATIONTESTPARAMS* pTestParam) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTEmbedFontEx(HDC hDC, + ULONG ulFlags, + ULONG ulCharSet, + ULONG* pulPrivStatus, + ULONG* pulStatus, + WRITEEMBEDPROC lpfnWriteToStream, + LPVOID lpvWriteStream, + ULONG* pulCharCodeSet, + USHORT usCharCodeCount, + USHORT usLanguage, + TTEMBEDINFO* pTTEmbedInfo) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTRunValidationTestsEx(HDC hDC, + TTVALIDATIONTESTPARAMSEX* pTestParam) +{ + UNIMPLEMENTED; + return E_NONE; +} + +LONG +WINAPI +TTGetNewFontName(HANDLE* phFontReference, + LPWSTR szWinFamilyName, + long cchMaxWinName, + LPSTR szMacFamilyName, + long cchMaxMacName) +{ + UNIMPLEMENTED; + return E_NONE; +} + + +BOOL +WINAPI +DllMain(IN HINSTANCE hinstDLL, + IN DWORD dwReason, + IN LPVOID lpvReserved) +{ + switch (dwReason) + { + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hinstDLL); + break; + } + + return TRUE; +} diff --git a/reactos/dll/win32/t2embed/t2embed.rbuild b/reactos/dll/win32/t2embed/t2embed.rbuild new file mode 100644 index 00000000000..6c239ebb5cd --- /dev/null +++ b/reactos/dll/win32/t2embed/t2embed.rbuild @@ -0,0 +1,13 @@ + + + . + include/reactos/wine + kernel32 + gdi32 + user32 + advapi32 + version + wine + t2embed.c + t2embed.rc + \ No newline at end of file diff --git a/reactos/dll/win32/t2embed/t2embed.rc b/reactos/dll/win32/t2embed/t2embed.rc new file mode 100644 index 00000000000..b5fa5940d17 --- /dev/null +++ b/reactos/dll/win32/t2embed/t2embed.rc @@ -0,0 +1,7 @@ +#include + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "Font Embedding Dll\0" +#define REACTOS_STR_INTERNAL_NAME "t2embed\0" +#define REACTOS_STR_ORIGINAL_FILENAME "t2embed.dll\0" +#include diff --git a/reactos/dll/win32/t2embed/t2embed.spec b/reactos/dll/win32/t2embed/t2embed.spec new file mode 100644 index 00000000000..364f71b5cdd --- /dev/null +++ b/reactos/dll/win32/t2embed/t2embed.spec @@ -0,0 +1,25 @@ +@ 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 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 TTIsEmbeddingEnabledForFacename(str ptr) +@ stdcall TTLoadEmbeddedFont(ptr long ptr long ptr ptr ptr wstr str ptr) +@ stdcall TTRunValidationTests(ptr ptr) +@ stub _TTCharToUnicode@24 +@ stub _TTDeleteEmbeddedFont@12 +@ stub _TTEmbedFont@44 +@ stub _TTEmbedFontFromFileA@52 +@ stub _TTEnableEmbeddingForFacename@8 +@ stub _TTGetEmbeddedFontInfo@28 +@ stub _TTGetEmbeddingType@8 +@ stub _TTIsEmbeddingEnabled@8 +@ stub _TTIsEmbeddingEnabledForFacename@8 +@ stub _TTLoadEmbeddedFont@40 +@ stub _TTRunValidationTests@8 +@ stdcall TTEmbedFontEx(ptr long long ptr ptr ptr ptr ptr long long ptr) +@ stdcall TTRunValidationTestsEx(ptr ptr) +@ stdcall TTGetNewFontName(ptr wstr long str long) diff --git a/reactos/dll/win32/win32.rbuild b/reactos/dll/win32/win32.rbuild index 11b6b7594a6..ca9ffdfc1b9 100644 --- a/reactos/dll/win32/win32.rbuild +++ b/reactos/dll/win32/win32.rbuild @@ -511,6 +511,9 @@ + + + diff --git a/reactos/include/psdk/t2embapi.h b/reactos/include/psdk/t2embapi.h new file mode 100644 index 00000000000..e584a1239a6 --- /dev/null +++ b/reactos/include/psdk/t2embapi.h @@ -0,0 +1,286 @@ +#ifndef __T2EMBED_API_H +#define __T2EMBED_API_H + +#ifndef CHARSET_UNICODE +#define CHARSET_UNICODE 1 +#define CHARSET_DEFAULT 1 +#define CHARSET_SYMBOL 2 +#define CHARSET_GLYPHIDX 3 +#endif + +#ifndef EMBED_PREVIEWPRINT +#define EMBED_PREVIEWPRINT 1 +#define EMBED_EDITABLE 2 +#define EMBED_INSTALLABLE 3 +#define EMBED_NOEMBEDDING 4 +#endif + +#ifndef LICENSE_INSTALLABLE +#define LICENSE_INSTALLABLE 0x0 +#define LICENSE_DEFAULT 0x0 +#define LICENSE_NOEMBEDDING 0x2 +#define LICENSE_PREVIEWPRINT 0x4 +#define LICENSE_EDITABLE 0x8 +#endif + +#ifndef TTEMBED_RAW +#define TTEMBED_RAW 0x0 +#define TTEMBED_SUBSET 0x1 +#define TTEMBED_TTCOMPRESSED 0x4 +#define TTEMBED_FAILIFVARIATIONSIMULATED 0x10 +#define TTEMBED_EMBEDEUDC 0x20 +#define TTEMBED_VALIDATIONTESTS 0x40 +#define TTEMBED_WEBOBJECT 0x80 +#define TTEMBED_ENCRYPTDATA 0x10000000 +#endif + +#ifndef E_NONE +#define E_NONE 0x0 +#endif + +#ifndef E_CHARCODECOUNTINVALID +#define E_CHARCODECOUNTINVALID 0x2 +#define E_CHARCODESETINVALID 0x3 +#define E_DEVICETRUETYPEFONT 0x4 +#define E_HDCINVALID 0x6 +#define E_NOFREEMEMORY 0x7 +#define E_FONTREFERENCEINVALID 0x8 +#define E_NOTATRUETYPEFONT 0xA +#define E_ERRORACCESSINGFONTDATA 0xC +#define E_ERRORACCESSINGFACENAME 0xD +#define E_ERRORUNICODECONVERSION 0x11 +#define E_ERRORCONVERTINGCHARS 0x12 +#define E_EXCEPTION 0x13 +#define E_RESERVEDPARAMNOTNULL 0x14 +#define E_CHARSETINVALID 0x15 +#define E_WIN32S_NOTSUPPORTED 0x16 +#define E_FILE_NOT_FOUND 0x17 +#define E_TTC_INDEX_OUT_OF_RANGE 0x18 +#define E_INPUTPARAMINVALID 0x19 +#endif + +#ifndef E_ERRORCOMPRESSINGFONTDATA +#define E_ERRORCOMPRESSINGFONTDATA 0x100 +#define E_FONTDATAINVALID 0x102 +#define E_NAMECHANGEFAILED 0x103 +#define E_FONTNOTEMBEDDABLE 0x104 +#define E_PRIVSINVALID 0x105 +#define E_SUBSETTINGFAILED 0x106 +#define E_READFROMSTREAMFAILED 0x107 +#define E_SAVETOSTREAMFAILED 0x108 +#define E_NOOS2 0x109 +#define E_T2NOFREEMEMORY 0x10A +#define E_ERRORREADINGFONTDATA 0x10B +#define E_FLAGSINVALID 0x10C +#define E_ERRORCREATINGFONTFILE 0x10D +#define E_FONTALREADYEXISTS 0x10E +#define E_FONTNAMEALREADYEXISTS 0x10F +#define E_FONTINSTALLFAILED 0x110 +#define E_ERRORDECOMPRESSINGFONTDATA 0x111 +#define E_ERRORACCESSINGEXCLUDELIST 0x112 +#define E_FACENAMEINVALID 0x113 +#define E_STREAMINVALID 0x114 +#define E_STATUSINVALID 0x115 +#define E_PRIVSTATUSINVALID 0x116 +#define E_PERMISSIONSINVALID 0x117 +#define E_PBENABLEDINVALID 0x118 +#define E_SUBSETTINGEXCEPTION 0x119 +#define E_SUBSTRING_TEST_FAIL 0x11A +#define E_FONTVARIATIONSIMULATED 0x11B +#define E_FONTVALIDATEFAIL 0x11C +#define E_FONTFAMILYNAMENOTINFULL 0x11D +#endif + +#ifndef E_ADDFONTFAILED +#define E_ADDFONTFAILED 0x200 +#define E_COULDNTCREATETEMPFILE 0x201 +#define E_FONTFILECREATEFAILED 0x203 +#define E_WINDOWSAPI 0x204 +#define E_FONTFILENOTFOUND 0x205 +#define E_RESOURCEFILECREATEFAILED 0x206 +#define E_ERROREXPANDINGFONTDATA 0x207 +#define E_ERRORGETTINGDC 0x208 +#define E_EXCEPTIONINDECOMPRESSION 0x209 +#define E_EXCEPTIONINCOMPRESSION 0x20A +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned long(WINAPIV *WRITEEMBEDPROC) +( + void* lpvWriteStream, + const void* lpvBuffer, + const unsigned long cbBuffer +); + +typedef unsigned long(WINAPIV *READEMBEDPROC) +( + void* lpvReadStream, + void* lpvBuffer, + const unsigned long cbBuffer +); + + +typedef struct +{ + unsigned long ulStructSize; + long lTestFromSize; + long lTestToSize; + unsigned long ulCharSet; + unsigned short usReserved1; + unsigned short usCharCodeCount; + unsigned short* pusCharCodeSet; +} TTVALIDATIONTESTPARAMS; + +typedef struct +{ + unsigned long ulStructSize; + long lTestFromSize; + long lTestToSize; + unsigned long ulCharSet; + unsigned short usReserved1; + unsigned short usCharCodeCount; + unsigned long* pulCharCodeSet; +} TTVALIDATIONTESTPARAMSEX; + +typedef struct +{ + unsigned short usStructSize; + unsigned short usRootStrSize; + unsigned short *pusRootStr; +} TTEMBEDINFO; + +typedef struct +{ + unsigned short usStructSize; + unsigned short usRefStrSize; + unsigned short *pusRefStr; +} TTLOADINFO; + +LONG +WINAPI +TTCharToUnicode(HDC hDC, + UCHAR* pucCharCodes, + ULONG ulCharCodeSize, + USHORT* pusShortCodes, + ULONG ulShortCodeSize, + ULONG ulFlags); + +LONG +WINAPI +TTDeleteEmbeddedFont(HANDLE hFontReference, + ULONG ulFlags, + ULONG* pulStatus); + +LONG +WINAPI +TTEmbedFont(HDC hDC, + ULONG ulFlags, + ULONG ulCharSet, + ULONG* pulPrivStatus, + ULONG* pulStatus, + WRITEEMBEDPROC lpfnWriteToStream, + LPVOID lpvWriteStream, + USHORT* pusCharCodeSet, + USHORT usCharCodeCount, + USHORT usLanguage, + TTEMBEDINFO* pTTEmbedInfo); + +LONG +WINAPI +TTEmbedFontFromFileA(HDC hDC, + LPCSTR szFontFileName, + USHORT usTTCIndex, + ULONG ulFlags, + ULONG ulCharSet, + ULONG* pulPrivStatus, + ULONG* pulStatus, + WRITEEMBEDPROC lpfnWriteToStream, + LPVOID lpvWriteStream, + USHORT* pusCharCodeSet, + USHORT usCharCodeCount, + USHORT usLanguage, + TTEMBEDINFO* pTTEmbedInfo); + +LONG +WINAPI +TTEnableEmbeddingForFacename(LPSTR lpszFacename, + BOOL bEnable); + +LONG +WINAPI +TTGetEmbeddedFontInfo(ULONG ulFlags, + ULONG* pulPrivStatus, + ULONG ulPrivs, + ULONG* pulStatus, + READEMBEDPROC lpfnReadFromStream, + LPVOID lpvReadStream, + TTLOADINFO* pTTLoadInfo); + +LONG +WINAPI +TTGetEmbeddingType(HDC hDC, + ULONG* pulPrivStatus); + +LONG +WINAPI +TTIsEmbeddingEnabled(HDC hDC, + BOOL* pbEnabled); + +LONG +WINAPI +TTIsEmbeddingEnabledForFacename(LPSTR lpszFacename, + BOOL* pbEnabled); + +LONG +WINAPI +TTLoadEmbeddedFont(HANDLE *phFontReference, + ULONG ulFlags, + ULONG* pulPrivStatus, + ULONG ulPrivs, + ULONG* pulStatus, + READEMBEDPROC lpfnReadFromStream, + LPVOID lpvReadStream, + LPWSTR szWinFamilyName, + LPSTR szMacFamilyName, + TTLOADINFO* pTTLoadInfo); + +LONG +WINAPI +TTRunValidationTests(HDC hDC, + TTVALIDATIONTESTPARAMS* pTestParam); + +LONG +WINAPI +TTEmbedFontEx(HDC hDC, + ULONG ulFlags, + ULONG ulCharSet, + ULONG* pulPrivStatus, + ULONG* pulStatus, + WRITEEMBEDPROC lpfnWriteToStream, + LPVOID lpvWriteStream, + ULONG* pulCharCodeSet, + USHORT usCharCodeCount, + USHORT usLanguage, + TTEMBEDINFO* pTTEmbedInfo); + +LONG +WINAPI +TTRunValidationTestsEx(HDC hDC, + TTVALIDATIONTESTPARAMSEX* pTestParam); + +LONG +WINAPI +TTGetNewFontName(HANDLE* phFontReference, + LPWSTR szWinFamilyName, + long cchMaxWinName, + LPSTR szMacFamilyName, + long cchMaxMacName); + +#ifdef __cplusplus + } +#endif + +#endif /* __T2EMBED_API_H */