OOStuBS/MPStuBS
|
Abstraktion des CGA-Textmodus. Mehr ...
#include <cgascr.h>
Klassen | |
struct | Attribute |
Struktur für [Farb]Attribute eines Zeichens. Mehr ... | |
struct | Cell |
Struktur für ein Zeichen im CGA Textmodus. Mehr ... | |
Öffentliche Typen | |
enum | color |
CGA-Farben. Mehr ... | |
Öffentliche Methoden | |
CGA_Screen (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 (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. | |
Statische, private Attribute | |
static Cell *const | CGA_START = (CGA_Screen::Cell *)(0xb8000) |
Startadresse des CGA-Bildschirmspeichers. | |
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_Screens 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.
enum CGA_Screen::color |
CGA-Farben.
Konstanten fuer die moeglichen Farben im Attribut-Byte. Für die Hintergrundfarbe ist nur BLACK
bis LIGHT_GREY
moeglich.
CGA_Screen::CGA_Screen | ( | int | from_col, |
int | to_col, | ||
int | from_row, | ||
int | to_row, | ||
bool | use_cursor = false |
||
) |
Konstruktor.
Der CGA_Screen spannt ein Fenster auf der CGA-Bildschirmfläche auf, dass durch das Rechteck colums*rows beschrieben wird.
from_col | Fensterrechteck beginnt in Spalte from_col |
to_col | Fensterrechteck erstreckt sich bis Spalte to_col (inklusive) |
from_row | Fensterrechteck beginn in Zeile from_row |
to_row | Fensterrechteck erstreckt sich bis Zeile to_row (inklusive) |
use_cursor | Gibt an, ob der CGA Hardwarecursor verwendet werden soll. Defaultmässig ist dies nicht der Fall. |
void CGA_Screen::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.
x | Spalte im Fenster |
y | Zeile im Fenster |
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.
string | Auszugebende Zeichenkette |
length | Länge der Zeichenkette |
attrib | Farbattribut zur Darstellung |
Löschen des Inhalts und Zurücksetzen des Cursors.
character | Füllzeichen |
attrib | Zeichenattribut |
void CGA_Screen::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.
x | Spalte im Fenster |
y | Zeile im Fenster |
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.
x | Bildschirmspalte, in der das Zeichen dargestellt werden soll |
y | Bildschirmzeile, in der das Zeichen dargestellt werden soll |
character | Zeichen, welches dargestellt werden soll |
attrib | Farbattribut zur Darstellung |