source: trunk/src/gdi32/ft2supp.h@ 10564

Last change on this file since 10564 was 10391, checked in by sandervl, 22 years ago

KOM: Misc DBCS related text fixes

File size: 4.7 KB
Line 
1/*
2 * GDI32 FreeType2 Support Class
3 *
4 * Copyright 2003 Innotek Systemberatung GmbH (stauff@innotek.de)
5 *
6 * Project Odin Software License can be found in LICENSE.TXT
7 *
8 */
9
10#ifndef __FT2SUPP_H__
11#define __FT2SUPP_H__
12
13#include <odin.h>
14#include "oslibgpi.h"
15#include <winconst.h>
16#include <win32type.h>
17
18#ifndef GDI_ERROR
19#define GDI_ERROR 0xffffffff
20#endif
21
22typedef int ( SYSTEM _FT2FN) ();
23typedef _FT2FN *PFT2FN;
24
25#define FT2LIBNAME "ft2lib.dll"
26#define FT2LIB_MAJOR_VERSION 2
27#define FT2LIB_MINOR_VERSION 1
28
29// Add here function pointer typedefs to funcs that we will use
30typedef ULONG (* SYSTEM PFN_FT2GETGLYPHINDICES)(HPS, WCHAR *, int, ULONG *, ULONG );
31
32typedef BOOL (* SYSTEM PFN_FT2GETTEXTEXTENTW)(HPS hps, LONG lCount1,LPCWSTR pchString,LONG lCount2,PPOINTLOS2 aptlPoints);
33typedef BOOL (* SYSTEM PFN_FT2CHARSTRINGPOSATA)(HPS hps,PPOINTLOS2 ptl,PRECTLOS2 rct,ULONG flOptions,LONG lCount,LPCSTR pchString,CONST INT *alAdx, ULONG fuWin32Options);
34typedef BOOL (* SYSTEM PFN_FT2CHARSTRINGPOSATW)(HPS hps,PPOINTLOS2 ptl,PRECTLOS2 rct,ULONG flOptions,LONG lCount,LPCWSTR pchString,CONST INT *alAdx, ULONG fuWin32Options);
35typedef DWORD (* SYSTEM PFN_FT2GETGLYPHOUTLINE)(HPS hps, UINT glyph, UINT format, LPGLYPHMETRICS lpgm, DWORD buflen, LPVOID buf, const MAT2* lpmat);
36typedef DWORD (* SYSTEM PFN_FT2GETFONTDATA)(HPS hps, DWORD dwTable, DWORD dwOffset, LPVOID lpvBuffer, DWORD cbData);
37typedef DWORD (* SYSTEM PFN_FT2QUERYFONTTYPE)(HPS hps, LPCSTR lpszFontName);
38typedef BOOL (* SYSTEM PFN_FT2QUERYSTRINGWIDTHW)(HPS hps, LPWSTR lpszString, UINT cbString, LONG *pWidthArray);
39typedef DWORD (* SYSTEM PFN_FT2GETCHARACTERPLACEMENTW)(HDC hdc, LPCWSTR lpString, int uCount,
40 int nMaxExtent, GCP_RESULTSW *lpResults,
41 DWORD dwFlags);
42
43typedef INT (* WIN32API PFN_MULTIBYTETOWIDECHAR)(UINT page, DWORD flags, LPCSTR src, INT srclen,
44 LPWSTR dst, INT dstlen);
45typedef INT (* WIN32API PFN_WIDECHARTOMULTIBYTE)(UINT page, DWORD flags, LPCWSTR src, INT srclen,
46 LPSTR dst, INT dstlen, LPCSTR defchar, BOOL *used);
47typedef void (* SYSTEM PFN_FT2REGISTERUCONV)(PFN_WIDECHARTOMULTIBYTE pfnWideCharToMultiByte, PFN_MULTIBYTETOWIDECHAR pfnMultiByteToWideChar);
48
49typedef BOOL (* SYSTEM PFN_FT2ENABLEFONTENGINE)(BOOL fEnable);
50
51typedef VOID (* SYSTEM PFN_FT2GETVERSION)(LONG *plMajor, LONG *plMinor, LONG *plBuildNumber);
52
53#define FT2_FONTTYPE_UNKNOWN 0
54#define FT2_FONTTYPE_TRUETYPE 1
55#define FT2_FONTTYPE_TYPE1 2
56#define FT2_FONTTYPE_BITMAP 3
57
58class CFT2Module {
59 private:
60 // Handle for our module
61 HMODULE hftModule;
62 char *pszModuleName;
63
64 PFN_FT2GETGLYPHINDICES pfnGetGlyphIndices;
65 PFN_FT2GETTEXTEXTENTW pfnFt2GetTextExtentW;
66 PFN_FT2CHARSTRINGPOSATA pfnFt2CharStringPosAtA;
67 PFN_FT2CHARSTRINGPOSATW pfnFt2CharStringPosAtW;
68 PFN_FT2GETGLYPHOUTLINE pfnFt2GetGlyphOutline;
69 PFN_FT2GETFONTDATA pfnFt2GetFontData;
70 PFN_FT2QUERYFONTTYPE pfnFt2QueryFontType;
71 PFN_FT2REGISTERUCONV pfnFt2RegisterUconv;
72 PFN_FT2QUERYSTRINGWIDTHW pfnFt2QueryStringWidthW;
73 PFN_FT2GETCHARACTERPLACEMENTW pfnFt2GetCharacterPlacementW;
74 PFN_FT2ENABLEFONTENGINE pfnFt2EnableFontEngine;
75 PFN_FT2GETVERSION pfnFt2GetVersion;
76
77 // Indicator of enabled state
78 BOOL bEnabled;
79 PFT2FN QueryProcAddress( int );
80 PFT2FN QueryProcAddress( char* );
81
82 public:
83 // Constructor
84 CFT2Module( char* modulename = FT2LIBNAME );
85 ~CFT2Module();
86 void init();
87
88
89 // Functions we may call
90
91 BOOL isEnabled() { return bEnabled; };
92
93 DWORD Ft2GetGlyphIndices(HPS hps, LPCWSTR str, int c, LPWORD pgi, DWORD fl);
94 DWORD Ft2GetGlyphOutline(HPS hps, UINT glyph, UINT format, LPGLYPHMETRICS lpgm, DWORD buflen, LPVOID buf, const MAT2* lpmat);
95
96 BOOL Ft2GetTextExtentW(HPS hps, LONG lCount1,LPCWSTR pchString, PPOINTLOS2 pwidthHeight);
97 BOOL Ft2CharStringPosAtA(HPS hps,PPOINTLOS2 ptl,PRECTLOS2 rct,ULONG flOptions,LONG lCount,LPCSTR pchString,CONST INT *alAdx, ULONG fuWin32Options);
98 BOOL Ft2CharStringPosAtW(HPS hps,PPOINTLOS2 ptl,PRECTLOS2 rct,ULONG flOptions,LONG lCount,LPCWSTR pchString,CONST INT *alAdx, ULONG fuWin32Options);
99
100 BOOL Ft2GetStringWidthW(HDC hdc, LPWSTR lpszString, UINT cbString, PINT pWidthArray);
101
102 DWORD Ft2GetCharacterPlacementW(HDC hdc, LPCWSTR lpString, int uCount,
103 int nMaxExtent, GCP_RESULTSW *lpResults,
104 DWORD dwFlags);
105
106 DWORD Ft2GetFontData(HPS hps, DWORD dwTable, DWORD dwOffset, LPVOID lpvBuffer, DWORD cbData);
107
108 DWORD Ft2QueryFontType(HPS hps, LPCSTR lpszFontName);
109
110};
111
112extern CFT2Module FT2Module;
113
114#endif // __FT2SUPP_H__
Note: See TracBrowser for help on using the repository browser.