|
|
/*++
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_
|