# Screen subsystem

The screen subsystem represents a Plane (gr/plane) drawn on a physical screen
device. The screen can be activated and deactivated to switch between graphical
and text modes, if the underlying hardware supports this.

This subsystem rests on a hardware specific driver that takes care of the gory
details. The screen subsystem doesn't handle configuration of the display, which
has to be done directly through the driver.

The screen subsystem defines the Screen structure as well as a "screen"
structbind to it. During initialization, what you'll want to do is create an
instance of the Screen from the driver and bind it to "screen".

## Driver implementation

To implement the screen, we need an underlying driver to extend it and implement
its methods, namely:

:activate ( self -- )
  Enable the graphics mode. We expect this word to set appropriate Plane fields
  such as width, height, encoding, pitch and buffer.

:deactivate ( self -- )
  If the hardware supports it, bring back the display to text mode.

:activated? ( self -- f )
  Yields whether the graphical mode is activated.

## API

The Screen, except for driver method, has no additional API compared to Plane.
