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

Übungen zu BS - Dokumentation Aufgabe 7 (WS 2014/15)

VESAGraphics Klassenreferenz

Treiber für die VESAGrafikkarte. Mehr ...

#include <vesagraphics.h>

Klassendiagramm für VESAGraphics:
Zusammengehörigkeiten von VESAGraphics:

Öffentliche Methoden

 VESAGraphics (void *frontbuffer, void *backbuffer)
 Konstruktor; bekommt zwei Puffer im Hauptspeicher als Parameter.
void switch_buffers ()
 Tauscht Frontbuffer und Backbuffer aus.
void scanout_frontbuffer ()
 Kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte.
- Öffentliche Methoden geerbt von VESAScreen
 VESAScreen (void *backbuffer)
void init ()
 Initalisiert das Grafiksubsystem; Aufruf am besten in der Main-Funktion.
VBEModeData_tfind_mode (unsigned int width, unsigned int height, unsigned char bpp)
 Sucht einen Modus aus der Modustabelle.
bool set_mode (VBEModeData_t *mode)
 Setzt einen vorher per find_mode ausgewählten Modus.
void clear_screen ()
 Setzt sämtliche Pixel im aktuellen Puffer auf schwarz.
void print_pixel (const Point &p, const Color &color)
 Zeichnet einen Pixel an Punkt p.
void print_line (const Point &start, const Point &end, const Color &color)
 Zeichnet eine Linie von start nach end.
void print_rectangle (const Point &top_left, const Point &bottom_right, const Color &color, bool filled=true)
 Zeichnet ein Rechteck.
void set_font (const Font &new_font)
 Ändern der Schriftart für Textausgabe im Grafikmodus.
void print_text (char *string, int len, const Color &color)
 Gibt Text an der globalen Cursorposition (analog CGA_Screen) auch mit Zeilenumbruch aus(allerdings ohne scrollen.
void print_text (char *string, int len, const Color &color, const Point &pos)
 Ausgabe von Text an der Position pos (ohne automatischen Zeilenumbruch)
void print_sprite_alpha (const Point &p, int sprite_width, int sprite_height, const SpritePixel *sprite)
 Ausgabe eines Sprites mit Alpha-Blending.

Weitere Geerbte Elemente

- Geschützte Attribute geerbt von VESAScreen
VBEModeData_tcurrent_mode
AbstractGraphicsPrinterprinter
unsigned char bytes_pp
void * lfb
void * backbuffer

Ausführliche Beschreibung

Treiber für die VESAGrafikkarte.

Erweitert VESAScreen um die beiden Methoden switch_buffers() und scanout_frontbuffer(). Mit deren Hilfe ist es möglich eine Art Triplebuffering "per Hand" zu implementieren. Da diese beiden Methoden unter gegenseitigem Ausschluss ausgeführt werden müssen (während scanout_frontbuffer läuft, soll nicht der Puffer umgeschaltet werden) sind sie entweder in der guarded Variante oder im Epilog zu verwenden.

Die Benutzung des Graphikmodus sieht dann grob ungefähr so aus:

while(true) {
//Puffer mit Inhalt füllen
//Umschalten mit switch_buffers()
}

Den Aufruf von scanout_frontbuffer kann man nun auf zwei Arten durchführen. Zum einen ist es möglich ihn einfach die Schleife zu integrieren. Es ist aber auch möglich den Puffer mit einer festen Frequenz neu zu befüllen. Dazu ruft man scanout_frontbuffer sinnigerweise im Epilog des Timers auf.

Beschreibung der Konstruktoren und Destruktoren

VESAGraphics::VESAGraphics ( void *  frontbuffer,
void *  backbuffer 
)

Konstruktor; bekommt zwei Puffer im Hauptspeicher als Parameter.

Dokumentation der Elementfunktionen

void VESAGraphics::scanout_frontbuffer ( )

Kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte.

Erneute Implementation in Guarded_VESAGraphics.

void VESAGraphics::switch_buffers ( )

Tauscht Frontbuffer und Backbuffer aus.

Zeichenoperationen über die Methoden von VESAScreen gehen immer in den aktuellen Backbuffer; scanout_frontbuffer kopiert immer den aktuellen Frontbuffer in den Speicher der Grafikkarte.

Erneute Implementation in Guarded_VESAGraphics.


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