485 lines
6.6 KiB
C++
485 lines
6.6 KiB
C++
/*++
|
||
|
||
Copyright (c) 1991 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
screen.hxx
|
||
|
||
Abstract:
|
||
|
||
This module contains the declaration for the SCREEN class.
|
||
The SCREEN class provides methods that models the stream
|
||
of bytes, with write access.
|
||
Read operations from a SCREEN are not allowed.
|
||
End of stream in a SCREEN object means that the cursor is
|
||
in the last column of the last row.
|
||
|
||
|
||
Author:
|
||
|
||
Jaime Sasson (jaimes) 21-Mar-1991
|
||
|
||
Environment:
|
||
|
||
ULIB, User Mode
|
||
|
||
|
||
--*/
|
||
|
||
|
||
#if !defined( _SCREEN_ )
|
||
|
||
#define _SCREEN_
|
||
|
||
#include "stream.hxx"
|
||
|
||
|
||
enum SCROLL_DIRECTION {
|
||
SCROLL_UP,
|
||
SCROLL_DOWN,
|
||
SCROLL_LEFT,
|
||
SCROLL_RIGHT
|
||
};
|
||
|
||
DECLARE_CLASS( SCREEN );
|
||
|
||
|
||
class SCREEN : public STREAM {
|
||
|
||
public:
|
||
|
||
ULIB_EXPORT
|
||
DECLARE_CONSTRUCTOR( SCREEN );
|
||
|
||
ULIB_EXPORT
|
||
DECLARE_CAST_MEMBER_FUNCTION( SCREEN );
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
~SCREEN (
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
Initialize(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
Initialize(
|
||
IN BOOLEAN CurrentActiveScreen,
|
||
IN USHORT NumberOfRows,
|
||
IN USHORT NumberOfColumns,
|
||
IN USHORT TextAttribute,
|
||
IN BOOLEAN ExpandAsciiControlSequence DEFAULT TRUE,
|
||
IN BOOLEAN WrapAtEndOfLine DEFAULT TRUE
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
ChangeScreenSize(
|
||
IN USHORT NumberOfRows,
|
||
IN USHORT NumberOfColumns,
|
||
OUT PBOOLEAN IsFullScreen DEFAULT NULL
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
ChangeTextAttribute(
|
||
IN USHORT Attribute
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
DisableAsciiControlSequence(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
DisableWrapMode(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
EnableAsciiControlSequence(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
EnableWrapMode(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
EraseLine(
|
||
IN USHORT LineNumber
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
EraseScreen(
|
||
);
|
||
|
||
|
||
#ifdef FE_SB
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
EraseScreenAndResetAttribute(
|
||
);
|
||
#endif
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
EraseToEndOfLine(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
FillRectangularRegionAttribute(
|
||
IN USHORT TopLeftRow,
|
||
IN USHORT TopLeftColumn,
|
||
IN USHORT BottomRightRow,
|
||
IN USHORT BottomRightColumn,
|
||
IN USHORT Attribute
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
FillRegionAttribute(
|
||
IN USHORT StartRow,
|
||
IN USHORT StartColumn,
|
||
IN USHORT EndRow,
|
||
IN USHORT EndColumn,
|
||
IN USHORT Attribute
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
FillRectangularRegionCharacter(
|
||
IN USHORT TopLeftRow,
|
||
IN USHORT TopLeftColumn,
|
||
IN USHORT BottomRightRow,
|
||
IN USHORT BottomRightColumn,
|
||
IN CHAR Character
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
FillRegionCharacter(
|
||
IN USHORT StartRow,
|
||
IN USHORT StartColumn,
|
||
IN USHORT EndRow,
|
||
IN USHORT EndColumn,
|
||
IN CHAR Character
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
IsAsciiControlSequenceEnabled(
|
||
) CONST;
|
||
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
IsAtEnd(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
IsWrapModeEnabled(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
MoveCursorDown(
|
||
IN USHORT Rows
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
MoveCursorLeft(
|
||
IN USHORT Columns
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
MoveCursorRight(
|
||
IN USHORT Columns
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
MoveCursorTo(
|
||
IN USHORT Row,
|
||
IN USHORT Column
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
MoveCursorUp(
|
||
IN USHORT Rows
|
||
);
|
||
|
||
|
||
VIRTUAL
|
||
STREAMACCESS
|
||
QueryAccess(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
DWORD
|
||
QueryCodePage (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
QueryCursorPosition(
|
||
OUT PUSHORT Row,
|
||
OUT PUSHORT Column
|
||
);
|
||
|
||
|
||
VIRTUAL
|
||
HANDLE
|
||
QueryHandle(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
DWORD
|
||
QueryOutputCodePage (
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
VOID
|
||
QueryScreenSize(
|
||
OUT PUSHORT NumberOfRows,
|
||
OUT PUSHORT NumberOfColumns,
|
||
OUT PUSHORT WindowRows DEFAULT NULL,
|
||
OUT PUSHORT WindowColumns DEFAULT NULL
|
||
) CONST;
|
||
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
Read(
|
||
OUT PBYTE Buffer,
|
||
IN ULONG BytesToRead,
|
||
OUT PULONG BytesRead
|
||
);
|
||
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
ReadChar(
|
||
OUT PWCHAR Char,
|
||
IN BOOLEAN Unicode DEFAULT FALSE
|
||
);
|
||
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
ReadMbString(
|
||
IN PSTR String,
|
||
IN DWORD BufferSize,
|
||
INOUT PDWORD StringSize,
|
||
IN PSTR Delimiters,
|
||
IN BOOLEAN ExpandTabs DEFAULT FALSE,
|
||
IN DWORD TabExp DEFAULT 8
|
||
);
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
ReadWString(
|
||
IN PWSTR String,
|
||
IN DWORD BufferSize,
|
||
INOUT PDWORD StringSize,
|
||
IN PWSTR Delimiters,
|
||
IN BOOLEAN ExpandTabs DEFAULT FALSE,
|
||
IN DWORD TabExp DEFAULT 8
|
||
);
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
ReadString(
|
||
OUT PWSTRING String,
|
||
IN PWSTRING Delimiter,
|
||
IN BOOLEAN Unicode DEFAULT FALSE
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
ScrollScreen(
|
||
USHORT Amount,
|
||
SCROLL_DIRECTION Direction
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
SetCodePage(
|
||
IN DWORD CodePage
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetCursorOff(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetCursorOn(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetCursorSize(
|
||
IN ULONG Size
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
SetOutputCodePage(
|
||
IN DWORD CodePage
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetScreenActive(
|
||
);
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
WriteString(
|
||
IN PCWSTRING String,
|
||
IN CHNUM Position DEFAULT 0,
|
||
IN CHNUM Length DEFAULT TO_END,
|
||
IN CHNUM Granularity DEFAULT 0
|
||
);
|
||
|
||
VIRTUAL
|
||
BOOLEAN
|
||
WriteChar(
|
||
IN WCHAR Char
|
||
);
|
||
|
||
private:
|
||
|
||
HANDLE _ScreenHandle;
|
||
// USHORT _Rows;
|
||
// USHORT _Columns;
|
||
USHORT _TextAttribute;
|
||
ULONG _ScreenMode;
|
||
|
||
|
||
};
|
||
|
||
|
||
INLINE
|
||
BOOLEAN
|
||
SCREEN::IsAsciiControlSequenceEnabled(
|
||
) CONST
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Determines if expansion of ASCII control sequences are currently
|
||
allowed.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
BOOLEAN - Indicates if ASCII control sequences are allowed.
|
||
|
||
|
||
--*/
|
||
|
||
|
||
{
|
||
if( ( _ScreenMode & ENABLE_PROCESSED_OUTPUT ) ) {
|
||
return( TRUE );
|
||
} else {
|
||
return( FALSE );
|
||
}
|
||
}
|
||
|
||
|
||
|
||
INLINE
|
||
BOOLEAN
|
||
SCREEN::IsWrapModeEnabled(
|
||
) CONST
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Determines if twrap is allowed in the screen.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
BOOLEAN - Indicates if the screen is in the wrap mode.
|
||
|
||
|
||
--*/
|
||
|
||
|
||
{
|
||
if( ( _ScreenMode & ENABLE_WRAP_AT_EOL_OUTPUT ) ) {
|
||
return( TRUE );
|
||
} else {
|
||
return( FALSE );
|
||
}
|
||
}
|
||
|
||
|
||
|
||
#endif // _SCREEN_
|