Windows2000/private/ntos/w32/ntcon/inc/foncache.h

139 lines
2.9 KiB
C
Raw Normal View History

2001-01-01 00:00:00 +01:00
/*++
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 <i.e LOBYTE(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 <i.e LO4BIT(HIBYTE(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 <i.e HI4BIT(HIBYTE(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
);