NAME

TUI::Drivers::Screen - global screen and video mode management

SYNOPSIS

use TUI::Drivers::Screen;
use TUI::Drivers::Const qw( smCO80 smFont8x8 );

# Initialize driver-side screen state.
TScreen->resume();

# Select an 80x50 style text mode (platform-adjusted by fixCrtMode).
TScreen->setVideoMode( smCO80 | smFont8x8 );

# Optional explicit clear.
TScreen->clearScreen();

# Restore startup mode/cursor on shutdown.
TScreen->suspend();

DESCRIPTION

TScreen provides global screen and video mode management facilities used by the TUI::Vision driver layer.

The module maintains global state describing the current screen configuration and provides class-level routines to suspend, resume, and reinitialize the video subsystem.

TScreen is not an object-oriented class. It is not instantiated and does not represent a view. All interaction is performed through class method calls of the form TScreen->method().

Commonly Used Features

In normal application flow, TScreen is primarily used to coordinate screen lifecycle transitions ("resume" and "suspend") and to switch video mode via "setVideoMode".

When a mode change occurs, the module refreshes shared screen state such as "$screenWidth", "$screenHeight", and "$hiResScreen", and updates mouse range through TMouse when mouse support is available.

VARIABLES

$startupMode

Stores the screen mode (PositiveOrZeroInt) that was active before TUI::Vision initialized the video system.

This value is used to restore the original screen mode when TUI::Vision suspends or terminates.

$startupCursor

Stores the initial cursor shape (PositiveOrZeroInt) before TUI::Vision modifies the cursor.

$screenMode

Holds the current screen mode (PositiveOrZeroInt) requested by the application.

$screenWidth

Contains the current screen width in character columns (PositiveOrZeroInt).

Typical values are 80 or similar.

$screenHeight

Contains the current screen height in text rows (PositiveOrZeroInt).

Typical values are 25, 43, or 50 depending on the selected video mode.

$hiResScreen

Indicates whether a high-resolution text mode is active (Bool).

$checkSnow

Controls CGA snow checking behavior (Bool).

If true, TUI::Vision performs additional checks to avoid display artifacts on older CGA adapters. This variable should not be modified before application initialization has completed.

$screenBuffer

Reference to the internal screen buffer (ArrayRef).

This variable is initialized during screen setup and tracks the location of the video memory buffer.

$cursorLines

Encodes the current cursor shape (PositiveOrZeroInt).

The high nibble represents the top scan line, and the low nibble represents the bottom scan line of the cursor.

$clearOnSuspend

Controls whether the screen is cleared when the video subsystem is suspended (Bool).

METHODS

clearScreen

TScreen->clearScreen();

Clears the screen after the video subsystem has been resumed.

Most applications do not need to call this method explicitly.

fixCrtMode

my $mode = TScreen->fixCrtMode($mode);

Adjusts the supplied screen mode value to match hardware constraints.

setVideoMode

TScreen->setVideoMode($mode);

Selects a new screen mode.

This method changes the screen color mode and optionally the screen height. Typically, applications should call TProgram->setScreenMode() instead, which performs additional updates such as palette and mouse repositioning.

suspend

TScreen->suspend();

Suspends TUI::Vision video support and restores the original screen state.

This method is called automatically during application shutdown.

resume

TScreen->resume();

Initializes the TUI::Vision video subsystem and switches the display to the mode specified by $screenMode.

This method initializes $screenWidth, $screenHeight, $hiResScreen, $checkSnow, $screenBuffer, and $cursorLines.

SEE ALSO

TProgram, TDisplay, THardwareInfo

AUTHORS

  • Borland International (original Turbo Vision design)

  • J. Schneider <brickpool@cpan.org> (Perl implementation and maintenance)

CONTRIBUTORS

Contributors are documented in the POD of the respective framework modules.

COPYRIGHT AND LICENSE

Copyright (c) 1990-1994, 1997 by Borland International

Copyright (c) 2021-2026 the "AUTHORS" as listed above.

This software is licensed under the MIT license (see the LICENSE file, which is part of the distribution).