Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

Abstraktion des CGA-Textmodus. Mehr ...

#include <machine/cga_window.h>

Klassendiagramm für CGA_Window:

Klassen

struct  Attribute
 Struktur für [Farb]Attribute eines Zeichens. Mehr ...
 

Öffentliche Typen

enum  Color {
  BLACK, BLUE, GREEN, CYAN,
  RED, MAGENTA, BROWN, LIGHT_GREY,
  DARK_GREY, LIGHT_BLUE, LIGHT_GREEN, LIGHT_CYAN,
  LIGHT_RED, LIGHT_MAGENTA, YELLOW, WHITE
}
 CGA-Farben. Mehr ...
 

Öffentliche Methoden

 CGA_Window (int from_col, int to_col, int from_row, int to_row, bool use_cursor=false)
 Konstruktor. Mehr ...
 
void setpos (int x, int y)
 Setzen des Cursors im Fenster auf Spalte x und Zeile y. Mehr ...
 
void getpos (int &x, int &y)
 Abfragen der Cursorpostion. Mehr ...
 
void print (const char *string, int length, Attribute attrib=Attribute())
 Anzeige mehrerer Zeichen im Fenster ab der aktuellen Cursorposition. Mehr ...
 
void reset (char character=' ', Attribute attrib=Attribute())
 Löschen des Inhalts und Zurücksetzen des Cursors. Mehr ...
 

Öffentliche, statische Methoden

static void show (int x, int y, char character, Attribute attrib=Attribute())
 Grundlegende Anzeige eines Zeichens mit Attribut an einer bestimmten Stelle auf dem kompletten CGA-Bildschirm. Mehr ...
 

Statische öffentliche Attribute

static const int ROWS = 25
 Groesse des kompletten CGA-Bildschirms.
 
static const int COLUMNS = 80
 

Geschützte Attribute

int x_pos
 
int y_pos
 
int from_col
 
int to_col
 
int from_row
 
int to_row
 
bool use_cursor
 

Ausführliche Beschreibung

Abstraktion des CGA-Textmodus.

Mit Hilfe dieser Klasse kann man auf den Bildschirm des PCs zugreifen. Der Zugriff erfolgt direkt auf der Hardwareebene, d.h. über den Bildschirmspeicher bzw. die I/O-Ports der Grafikkarte.

Die Implementierung soll es dabei ermöglichen die Ausgaben des CGA_Windows nur auf einem Teil des kompletten CGA-Bildschirms darzustellen, einem in seiner Position und Größe festgelegtem Fenster (mit eigenem Cursor). Dadurch ist es möglich die Ausgaben des Programms und etwaige Debugausgaben auf dem Bildschirm zu trennen, ohne synchronisieren zu müssen.

Dokumentation der Aufzählungstypen

◆ Color

CGA-Farben.

Konstanten fuer die moeglichen Farben im Attribut-Byte. Für die Hintergrundfarbe ist nur BLACK bis LIGHT_GREY moeglich.

Beschreibung der Konstruktoren und Destruktoren

◆ CGA_Window()

CGA_Window::CGA_Window ( int  from_col,
int  to_col,
int  from_row,
int  to_row,
bool  use_cursor = false 
)

Konstruktor.

Das CGA_Window spannt ein Fenster auf der CGA-Bildschirmfläche auf, dass durch das Rechteck colums*rows beschrieben wird.

Parameter
from_colFensterrechteck beginnt in Spalte from_col
to_colFensterrechteck erstreckt sich bis Spalte to_col (inklusive)
from_rowFensterrechteck beginn in Zeile from_row
to_rowFensterrechteck erstreckt sich bis Zeile to_row (inklusive)
use_cursorGibt an, ob der CGA Hardwarecursor verwendet werden soll. Defaultmässig ist dies nicht der Fall.

Dokumentation der Elementfunktionen

◆ getpos()

void CGA_Window::getpos ( int &  x,
int &  y 
)

Abfragen der Cursorpostion.

Abhängig vom Konstruktorparameter use_cursor wird hier der CGA Hardwarecursor oder die intern gespeicherte Position verwendet.

Parameter
xSpalte im Fenster
yZeile im Fenster

◆ print()

void CGA_Window::print ( const char *  string,
int  length,
Attribute  attrib = Attribute() 
)

Anzeige mehrerer Zeichen im Fenster ab der aktuellen Cursorposition.

Mit dieser Methode kann eine Zeichenkette string ausgegeben werden, wobei an der aktuellen Position des Cursors begonnen wird. Da die Zeichenkette anders als sonst bei C üblich keine Nullterminierung zu enthalten braucht, wird der Parameter length benötigt, der angeben muss, aus wievielen Zeichen string besteht. Nach Abschluss der Ausgabe soll der Cursor hinter dem zuletzt ausgegebenen Zeichen stehen. Der gesamte Text soll einheitlich mit den durch attrib gewählten Farben dargestellt werden.

Wenn bis zum Ende der Zeile nicht mehr genügend Platz ist, soll die Ausgabe auf der folgenden Zeile fortgesetzt werden. Sobald die letzte Fensterzeile gefüllt ist, soll der gesamte Fensterbereich um eine Zeile nach oben geschoben werden. Dadurch verschwindet die erste Zeile. Dafür kann nun die letzte Zeile erst gelöscht und dann die Ausgabe dort fortgesetzt werden.

Ein Zeilenumbruch muss auch erfolgen, wann immer das Zeichen \n im auszugebenden Text enthalten ist.

Parameter
stringAuszugebende Zeichenkette
lengthLänge der Zeichenkette
attribFarbattribut zur Darstellung

◆ reset()

void CGA_Window::reset ( char  character = ' ',
Attribute  attrib = Attribute() 
)

Löschen des Inhalts und Zurücksetzen des Cursors.

Parameter
characterFüllzeichen
attribZeichenattribut

◆ setpos()

void CGA_Window::setpos ( int  x,
int  y 
)

Setzen des Cursors im Fenster auf Spalte x und Zeile y.

Abhängig vom Konstruktorparameter use_cursor wird hier entweder der CGA Hardwarecursor verwendet, oder die Position intern im Objekt gespeichert.

Parameter
xSpalte im Fenster
yZeile im Fenster

◆ show()

void CGA_Window::show ( int  x,
int  y,
char  character,
Attribute  attrib = Attribute() 
)
static

Grundlegende Anzeige eines Zeichens mit Attribut an einer bestimmten Stelle auf dem kompletten CGA-Bildschirm.

Diese Methode gibt das Zeichen character an der absoluten Position (x, y) mit dem angegebenen Farbattribut attrib aus. Dabei gibt x die Spalte und y die Zeile der gewünschten Position an, wobei gilt: 0 <= x <= 79 und 0 <= y <= 24. Die Position (0,0) bezeichnet die linke obere Ecke des Bildschirms. Mit attrib lassen sich Merkmale wie Hintergrundfarbe, Vordergrundfarbe und Blinken festlegen.

Parameter
xBildschirmspalte, in der das Zeichen dargestellt werden soll
yBildschirmzeile, in der das Zeichen dargestellt werden soll
characterZeichen, welches dargestellt werden soll
attribFarbattribut zur Darstellung

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: