Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

455 lines
7.8 KiB

/*++
Copyright (c) 1985 - 1999, Microsoft Corporation
Module Name:
dbcs.h
Abstract:
Author:
Revision History:
--*/
#define UNICODE_DBCS_PADDING 0xffff
#define DEFAULT_FONTSIZE 256
#define DEFAULT_EUDCSIZE 1
#define VDM_EUDC_FONT_SIZE_X 16
#define VDM_EUDC_FONT_SIZE_Y 16
#define USACP 1252
#define KOREAN_CP 949
#define JAPAN_CP 932
#if defined(FE_SB)
#define MIN_SCRBUF_WIDTH 12 // for suport display IME status
#define MIN_SCRBUF_HEIGHT 2 // for suport display IME status
#define MIN_WINDOW_HEIGHT 1
#endif
#if defined(i386)
extern ULONG gdwMachineId;
#endif
extern ULONG DefaultFontIndex;
extern COORD DefaultFontSize;
extern BYTE DefaultFontFamily;
typedef struct _MODE_FONT_PAIR {
DWORD Mode;
#define FS_MODE_TEXT 0x0001
#define FS_MODE_GRAPHICS 0x0002
#define FS_MODE_FIND 0x8000
#define FS_TEXT (FS_MODE_FIND+FS_MODE_TEXT)
#define FS_GRAPHICS (FS_MODE_FIND+FS_MODE_GRAPHICS)
COORD ScreenSize;
COORD Resolution;
COORD FontSize;
} MODE_FONT_PAIR, *PMODE_FONT_PAIR;
typedef struct _FS_CODEPAGE {
SINGLE_LIST_ENTRY List;
UINT CodePage;
} FS_CODEPAGE, *PFS_CODEPAGE;
extern PUSHORT RegInitialPalette;
extern PUCHAR RegColorBuffer;
extern PUCHAR RegColorBufferNoTranslate;
extern DWORD NUMBER_OF_MODE_FONT_PAIRS;
extern PMODE_FONT_PAIR RegModeFontPairs;
extern SINGLE_LIST_ENTRY gRegFullScreenCodePage; // This list contain FS_CODEPAGE data.
typedef struct tagSTRINGBITMAP
{
UINT uiWidth;
UINT uiHeight;
BYTE ajBits[1];
} STRINGBITMAP, *LPSTRINGBITMAP;
UINT
GetStringBitmapW(
HDC hdc,
LPWSTR pwc,
UINT cwc,
UINT cbData,
BYTE *pSB
);
//
// dbcs.c
//
#if defined(FE_IME)
#if defined(i386)
NTSTATUS
ImeWmFullScreen(
IN BOOL Foreground,
IN PCONSOLE_INFORMATION Console,
IN PSCREEN_INFORMATION ScreenInfo
);
#endif // i386
NTSTATUS
GetImeKeyState(
IN PCONSOLE_INFORMATION Console,
IN PDWORD pdwConversion
);
NTSTATUS
SetImeKeyState(
IN PCONSOLE_INFORMATION Console,
IN DWORD fdwConversion
);
NTSTATUS
SetImeCodePage(
IN PCONSOLE_INFORMATION Console
);
NTSTATUS
SetImeOutputCodePage(
IN PCONSOLE_INFORMATION Console,
IN PSCREEN_INFORMATION ScreenInfo,
IN DWORD CodePage
);
#endif // FE_IME
VOID
SetLineChar(
IN PSCREEN_INFORMATION ScreenInfo
);
BOOL
CheckBisectStringA(
IN DWORD CodePage,
IN PCHAR Buffer,
IN DWORD NumBytes,
IN LPCPINFO lpCPInfo
);
VOID
BisectWrite(
IN SHORT StringLength,
IN COORD TargetPoint,
IN PSCREEN_INFORMATION ScreenInfo
);
VOID
BisectClipbrd(
IN SHORT StringLength,
IN COORD TargetPoint,
IN PSCREEN_INFORMATION ScreenInfo,
OUT PSMALL_RECT SmallRect
);
VOID
BisectWriteAttr(
IN SHORT StringLength,
IN COORD TargetPoint,
IN PSCREEN_INFORMATION ScreenInfo
);
DWORD
RemoveDbcsMark(
IN PWCHAR Dst,
IN PWCHAR Src,
IN DWORD NumBytes,
IN PCHAR SrcA,
IN BOOL OS2OemFormat
);
DWORD
RemoveDbcsMarkCell(
IN PCHAR_INFO Dst,
IN PCHAR_INFO Src,
IN DWORD NumBytes
);
DWORD
RemoveDbcsMarkAll(
IN PSCREEN_INFORMATION ScreenInfo,
IN PROW Row,
IN PSHORT LeftChar,
IN PRECT TextRect,
IN int *TextLeft,
IN PWCHAR Buffer,
IN SHORT NumberOfChars
);
BOOL
IsDBCSLeadByteConsole(
IN BYTE AsciiChar,
IN LPCPINFO lpCPInfo
);
NTSTATUS
AdjustFont(
IN PCONSOLE_INFORMATION Console,
IN UINT CodePage
);
NTSTATUS
ConvertToCodePage(
IN PCONSOLE_INFORMATION Console,
IN UINT PrevCodePage
);
NTSTATUS
ConvertOutputOemToNonOemUnicode(
IN OUT LPWSTR Source,
IN OUT PBYTE KAttrRows,
IN int SourceLength, // in chars
IN UINT Codepage
);
VOID
TextOutEverything(
IN PCONSOLE_INFORMATION Console,
IN PSCREEN_INFORMATION ScreenInfo,
IN SHORT LeftWindowPos,
IN OUT PSHORT RightWindowPos,
IN OUT PSHORT CountOfAttr,
IN SHORT CountOfAttrOriginal,
IN OUT PBOOL DoubleColorDBCS,
IN BOOL LocalEUDCFlag,
IN PROW Row,
IN PATTR_PAIR Attr,
IN SHORT LeftTextPos,
IN SHORT RightTextPos,
IN int WindowRectLeft,
IN RECT WindowRect,
IN SHORT NumberOfChars
);
VOID
TextOutCommonLVB(
IN PCONSOLE_INFORMATION Console,
IN WORD Attributes,
IN RECT CommonLVBRect
);
NTSTATUS
MakeAltRasterFont(
UINT CodePage,
COORD DefaultFontSize,
COORD *AltFontSize,
BYTE *AltFontFamily,
ULONG *AltFontIndex,
LPWSTR AltFaceName
);
NTSTATUS
InitializeDbcsMisc(
VOID
);
#if defined(i386)
NTSTATUS
RealUnicodeToNEC_OS2_Unicode(
IN OUT LPWSTR Source,
IN int SourceLength // in chars
);
BOOL
InitializeNEC_OS2_CP(
VOID
);
#endif
BYTE
CodePageToCharSet(
UINT CodePage
);
BOOL
IsAvailableFarEastCodePage(
UINT CodePage
);
LPTTFONTLIST
SearchTTFont(
LPWSTR pwszFace,
BOOL fCodePage,
UINT CodePage
);
BOOL
IsAvailableTTFont(
LPWSTR pwszFace
);
BOOL
IsAvailableTTFontCP(
LPWSTR pwszFace,
UINT CodePage
);
LPWSTR
GetAltFaceName(
LPWSTR pwszFace
);
BOOL
IsAvailableFsCodePage(
UINT CodePage
);
#if defined(FE_IME)
VOID
ProcessCreateConsoleIME(
IN LPMSG lpMsg,
DWORD dwConsoleThreadId
);
NTSTATUS
InitConsoleIMEStuff(
HDESK hDesktop,
DWORD dwConsoleThreadId,
PCONSOLE_INFORMATION Console
);
NTSTATUS
WaitConsoleIMEStuff(
HDESK hDesktop,
HANDLE hThread
);
NTSTATUS
ConSrvRegisterConsoleIME(
PCSR_PROCESS Process,
HDESK hDesktop,
HWINSTA hWinSta,
HWND hWndConsoleIME,
DWORD dwConsoleIMEThreadId,
DWORD dwAction,
DWORD *dwConsoleThreadId
);
VOID
RemoveConsoleIME(
PCSR_PROCESS Process,
DWORD dwConsoleIMEThreadId
);
NTSTATUS
ConsoleImeMessagePumpWorker(
PCONSOLE_INFORMATION Console,
UINT Message,
WPARAM wParam,
LPARAM lParam,
LRESULT* lplResult);
NTSTATUS
ConsoleImeMessagePump(
PCONSOLE_INFORMATION Console,
UINT Message,
WPARAM wParam,
LPARAM lParam
);
#endif // FE_IME
BOOL
RegisterKeisenOfTTFont(
IN PSCREEN_INFORMATION ScreenInfo
);
ULONG
TranslateUnicodeToOem(
IN PCONSOLE_INFORMATION Console,
IN PWCHAR UnicodeBuffer,
IN ULONG UnicodeCharCount,
OUT PCHAR AnsiBuffer,
IN ULONG AnsiByteCount,
OUT PINPUT_RECORD DbcsLeadInpRec
);
DWORD
ImmConversionToConsole(
DWORD fdwConversion
);
DWORD
ImmConversionFromConsole(
DWORD dwNlsMode
);
//#define DBG_KAZUM
//#define DBG_KATTR
#if defined(DBG) && defined(DBG_KATTR)
VOID
BeginKAttrCheck(
IN PSCREEN_INFORMATION ScreenInfo
);
#endif
//
// output.c
//
BOOL
CreateDbcsScreenBuffer(
IN PCONSOLE_INFORMATION Console,
IN COORD dwScreenBufferSize,
OUT PDBCS_SCREEN_BUFFER DbcsScreenBuffer
);
BOOL
DeleteDbcsScreenBuffer(
IN PDBCS_SCREEN_BUFFER DbcsScreenBuffer
);
BOOL
ReCreateDbcsScreenBuffer(
IN PCONSOLE_INFORMATION Console,
IN UINT OldCodePage
);
BOOL
FE_PolyTextOutCandidate(
IN PSCREEN_INFORMATION ScreenInfo,
IN PSMALL_RECT Region
);
VOID
FE_ConsolePolyTextOut(
IN PSCREEN_INFORMATION ScreenInfo,
IN PSMALL_RECT Region
);
//
// private.c
//
NTSTATUS
SetRAMFontCodePage(
IN PSCREEN_INFORMATION ScreenInfo
);
NTSTATUS
SetRAMFont(
IN PSCREEN_INFORMATION ScreenInfo,
IN PCHAR_INFO ScreenBufPtr,
IN DWORD Length
);