00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 typedef struct _FONT_IMAGE {
00026 LIST_ENTRY
ImageList;
00027 COORD
FontSize;
00028 PBYTE ImageBits;
00029 }
FONT_IMAGE, *
PFONT_IMAGE;
00030
00031 typedef struct _FONT_LOW_OFFSET {
00032 PFONT_IMAGE FontOffsetLow[256];
00033 }
FONT_LOW_OFFSET, *
PFONT_LOW_OFFSET;
00034
00035 typedef struct _FONT_HIGHLOW_OFFSET {
00036 PFONT_LOW_OFFSET FontOffsetHighLow[16];
00037 }
FONT_HIGHLOW_OFFSET, *
PFONT_HIGHLOW_OFFSET;
00038
00039 typedef struct _FONT_HIGHHIGH_OFFSET {
00040 PFONT_HIGHLOW_OFFSET FontOffsetHighHigh[16];
00041 }
FONT_HIGHHIGH_OFFSET, *
PFONT_HIGHHIGH_OFFSET;
00042
00043
00044
00045 typedef struct _FONT_CACHE_INFORMATION {
00046 ULONG
FullScreenFontIndex;
00047 COORD
FullScreenFontSize;
00048 PBYTE BaseImageBits;
00049 FONT_HIGHHIGH_OFFSET FontTable;
00050 }
FONT_CACHE_INFORMATION, *
PFONT_CACHE_INFORMATION;
00051
00052
00053 #define FONT_MATCHED 1
00054 #define FONT_STRETCHED 2
00055
00056 #define ADD_IMAGE 1
00057 #define REPLACE_IMAGE 2
00058
00059 #define BITMAP_BITS_BYTE_ALIGN 8 // BYTE align is 8 bit
00060 #define BITMAP_BITS_WORD_ALIGN 16 // WORD align is 16 bit
00061 #define BITMAP_ARRAY_BYTE 3 // BYTE array is 8 bit (shift count = 3)
00062
00063
00064 typedef struct _FONT_CACHE_AREA {
00065 PFONT_IMAGE FontImage;
00066 DWORD Area;
00067 }
FONT_CACHE_AREA, *
PFONT_CACHE_AREA;
00068
00069
00070 #define BITMAP_PLANES 1
00071 #define BITMAP_BITS_PIXEL 1
00072
00073
00074 #define BYTE_ALIGN sizeof(BYTE)
00075 #define WORD_ALIGN sizeof(WORD)
00076
00077
00078
00079
00080 ULONG
00081
CreateFontCache(
00082 OUT PFONT_CACHE_INFORMATION *FontCache
00083 );
00084
00085 ULONG
00086
DestroyFontCache(
00087 IN PFONT_CACHE_INFORMATION FontCache
00088 );
00089
00090 ULONG
00091
GetFontImage(
00092 IN PFONT_CACHE_INFORMATION FontCache,
00093 IN WCHAR wChar,
00094 IN COORD FontSize,
00095 IN DWORD dwAlign,
00096 OUT VOID *ImageBits
00097 );
00098
00099 ULONG
00100
GetStretchedFontImage(
00101 IN PFONT_CACHE_INFORMATION FontCache,
00102 IN WCHAR wChar,
00103 IN COORD FontSize,
00104 IN DWORD dwAlign,
00105 OUT VOID *ImageBits
00106 );
00107
00108 ULONG
00109
GetFontImagePointer(
00110 IN PFONT_CACHE_INFORMATION FontCache,
00111 IN WCHAR wChar,
00112 IN COORD FontSize,
00113 OUT PFONT_IMAGE *FontImage
00114 );
00115
00116 ULONG
00117
SetFontImage(
00118 IN PFONT_CACHE_INFORMATION FontCache,
00119 IN WCHAR wChar,
00120 IN COORD FontSize,
00121 IN DWORD dwAlign,
00122 IN CONST VOID *ImageBits
00123 );
00124
00125
DWORD
00126
CalcBitmapBufferSize(
00127 IN COORD FontSize,
00128 IN DWORD dwAlign
00129 );
00130
00131
NTSTATUS
00132
GetExpandFontImage(
00133 PFONT_CACHE_INFORMATION FontCache,
00134 WCHAR wChar,
00135 COORD InputFontSize,
00136 COORD OutputFontSize,
00137 PWORD OutputFontImage
00138 );