/*++ Copyright (c) 1985 - 1999, Microsoft Corporation Module Name: foncache.h Abstract: This file is definition of fullscreen dll Author: Kazuhiko Matsubara 21-June-1994 Revision History: Notes: */ typedef struct _FONT_IMAGE { LIST_ENTRY ImageList; // link list of other font size. COORD FontSize; PBYTE ImageBits; // WORD aligned. } FONT_IMAGE, *PFONT_IMAGE; typedef struct _FONT_LOW_OFFSET { PFONT_IMAGE FontOffsetLow[256]; // array is low order of Unicode } FONT_LOW_OFFSET, *PFONT_LOW_OFFSET; typedef struct _FONT_HIGHLOW_OFFSET { PFONT_LOW_OFFSET FontOffsetHighLow[16]; // array is high (3-0bit) order of Unicode } FONT_HIGHLOW_OFFSET, *PFONT_HIGHLOW_OFFSET; typedef struct _FONT_HIGHHIGH_OFFSET { PFONT_HIGHLOW_OFFSET FontOffsetHighHigh[16]; // array is high (7-4bit) order of Unicode } FONT_HIGHHIGH_OFFSET, *PFONT_HIGHHIGH_OFFSET; typedef struct _FONT_CACHE_INFORMATION { ULONG FullScreenFontIndex; COORD FullScreenFontSize; PBYTE BaseImageBits; FONT_HIGHHIGH_OFFSET FontTable; } FONT_CACHE_INFORMATION, *PFONT_CACHE_INFORMATION; #define FONT_MATCHED 1 #define FONT_STRETCHED 2 #define ADD_IMAGE 1 #define REPLACE_IMAGE 2 #define BITMAP_BITS_BYTE_ALIGN 8 // BYTE align is 8 bit #define BITMAP_BITS_WORD_ALIGN 16 // WORD align is 16 bit #define BITMAP_ARRAY_BYTE 3 // BYTE array is 8 bit (shift count = 3) typedef struct _FONT_CACHE_AREA { PFONT_IMAGE FontImage; DWORD Area; } FONT_CACHE_AREA, *PFONT_CACHE_AREA; #define BITMAP_PLANES 1 #define BITMAP_BITS_PIXEL 1 #define BYTE_ALIGN sizeof(BYTE) #define WORD_ALIGN sizeof(WORD) // Font cache manager ULONG CreateFontCache( OUT PFONT_CACHE_INFORMATION *FontCache ); ULONG DestroyFontCache( IN PFONT_CACHE_INFORMATION FontCache ); ULONG GetFontImage( IN PFONT_CACHE_INFORMATION FontCache, IN WCHAR wChar, IN COORD FontSize, IN DWORD dwAlign, OUT VOID *ImageBits ); ULONG GetStretchedFontImage( IN PFONT_CACHE_INFORMATION FontCache, IN WCHAR wChar, IN COORD FontSize, IN DWORD dwAlign, OUT VOID *ImageBits ); ULONG GetFontImagePointer( IN PFONT_CACHE_INFORMATION FontCache, IN WCHAR wChar, IN COORD FontSize, OUT PFONT_IMAGE *FontImage ); ULONG SetFontImage( IN PFONT_CACHE_INFORMATION FontCache, IN WCHAR wChar, IN COORD FontSize, IN DWORD dwAlign, IN CONST VOID *ImageBits ); DWORD CalcBitmapBufferSize( IN COORD FontSize, IN DWORD dwAlign ); NTSTATUS GetExpandFontImage( PFONT_CACHE_INFORMATION FontCache, WCHAR wChar, COORD InputFontSize, COORD OutputFontSize, PWORD OutputFontImage );