- Add Font Embedding Dll (it is necessary for Iron and Chrome)
authorDmitry Chapyshev <dmitry@reactos.org>
Wed, 22 Apr 2009 08:51:09 +0000 (08:51 +0000)
committerDmitry Chapyshev <dmitry@reactos.org>
Wed, 22 Apr 2009 08:51:09 +0000 (08:51 +0000)
svn path=/trunk/; revision=40644

reactos/baseaddress.rbuild
reactos/boot/bootdata/packages/reactos.dff
reactos/dll/win32/t2embed/t2embed.c [new file with mode: 0644]
reactos/dll/win32/t2embed/t2embed.rbuild [new file with mode: 0644]
reactos/dll/win32/t2embed/t2embed.rc [new file with mode: 0644]
reactos/dll/win32/t2embed/t2embed.spec [new file with mode: 0644]
reactos/dll/win32/win32.rbuild
reactos/include/psdk/t2embapi.h [new file with mode: 0644]

index 0c3f246..f4913c9 100644 (file)
@@ -13,6 +13,7 @@
   <property name="BASEADDRESS_WLANAPI" value="0x470F0000" />
   <property name="BASEADDRESS_PIDGEN" value="0x473e0000" />
   <property name="BASEADDRESS_DWMAPI" value="0x4A3F0000" />
+  <property name="BASEADDRESS_T2EMBED" value="0x4b310000" />
   <property name="BASEADDRESS_LOADPERF" value="0x4B920000" />
   <property name="BASEADDRESS_MPRAPI" value="0x4C400000" />
   <property name="BASEADDRESS_MSFTEDIT" value="0x4b460000" />
index 6b306ec..89d4e8b 100644 (file)
@@ -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 (file)
index 0000000..4a1ef35
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ * PROJECT:         Font Embedding Dll
+ * FILE:            dll\win32\t2embed\t2embed.c
+ * PURPOSE:         Main file
+ * PROGRAMMERS:     Dmitry Chapyshev (dmitry@reactos.org)
+ */
+
+#include <windows.h>
+#include <t2embapi.h>
+#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 (file)
index 0000000..6c239eb
--- /dev/null
@@ -0,0 +1,13 @@
+<module name="t2embed" type="win32dll" baseaddress="${BASEADDRESS_T2EMBED}" installbase="system32" installname="t2embed.dll" unicode="yes">
+       <importlibrary definition="t2embed.spec" />
+       <include base="t2embed">.</include>
+       <include base="ReactOS">include/reactos/wine</include>
+       <library>kernel32</library>
+       <library>gdi32</library>
+       <library>user32</library>
+       <library>advapi32</library>
+       <library>version</library>
+       <library>wine</library>
+       <file>t2embed.c</file>
+       <file>t2embed.rc</file>
+</module>
\ 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 (file)
index 0000000..b5fa594
--- /dev/null
@@ -0,0 +1,7 @@
+#include <windows.h>
+
+#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 <reactos/version.rc>
diff --git a/reactos/dll/win32/t2embed/t2embed.spec b/reactos/dll/win32/t2embed/t2embed.spec
new file mode 100644 (file)
index 0000000..364f71b
--- /dev/null
@@ -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)
index 11b6b75..ca9ffdf 100644 (file)
 <directory name="syssetup">
        <xi:include href="syssetup/syssetup.rbuild" />
 </directory>
+<directory name="t2embed">
+       <xi:include href="t2embed/t2embed.rbuild" />
+</directory>
 <directory name="tapi32">
        <xi:include href="tapi32/tapi32.rbuild" />
 </directory>
diff --git a/reactos/include/psdk/t2embapi.h b/reactos/include/psdk/t2embapi.h
new file mode 100644 (file)
index 0000000..e584a12
--- /dev/null
@@ -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 */