Abstraktion einer VESA Grafikkarte. Mehr ...
#include <vesascreen.h>


Öffentliche Methoden | |
VESAScreen (void *backbuffer) | |
void | init () |
Initalisiert das Grafiksubsystem; Aufruf am besten in der Main-Funktion. | |
VBEModeData_t * | find_mode (unsigned int width, unsigned int height, unsigned char bpp) |
Sucht einen Modus aus der Modustabelle. Mehr ... | |
bool | set_mode (VBEModeData_t *mode) |
Setzt einen vorher per find_mode ausgewählten Modus. Mehr ... | |
void | clear_screen () |
Setzt sämtliche Pixel im aktuellen Puffer auf schwarz. Mehr ... | |
void | print_pixel (const Point &p, const Color &color) |
Zeichnet einen Pixel an Punkt p. Mehr ... | |
void | print_line (const Point &start, const Point &end, const Color &color) |
Zeichnet eine Linie von start nach end. Mehr ... | |
void | print_rectangle (const Point &top_left, const Point &bottom_right, const Color &color, bool filled=true) |
Zeichnet ein Rechteck. Mehr ... | |
void | set_font (const Font &new_font) |
Ändern der Schriftart für Textausgabe im Grafikmodus. Mehr ... | |
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. Mehr ... | |
void | print_text (char *string, int len, const Color &color, const Point &pos) |
Ausgabe von Text an der Position pos (ohne automatischen Zeilenumbruch) Mehr ... | |
void | print_sprite_alpha (const Point &p, int sprite_width, int sprite_height, const SpritePixel *sprite) |
Ausgabe eines Sprites mit Alpha-Blending. Mehr ... | |
Geschützte Attribute | |
VBEModeData_t * | current_mode |
AbstractGraphicsPrinter * | printer |
unsigned char | bytes_pp |
void * | lfb |
void * | backbuffer |
Ausführliche Beschreibung
Abstraktion einer VESA Grafikkarte.
Die Klasse VESAScreen bietet die Möglichkeit VESA Grafikmodi zu setzen. In diesen kann man dann direkt den in den Adressraum gemappten Framebuffer schreiben. Die Klasse GraphicsPrinter wird dann dazu verwendet, um einige primitive Zeichenoperationen durchführen zu können.
Die Verwendung sieht folgendermassen aus: Zuerst muss die Methode VESAScreen::init() aufgerufen werden, um Informationen, über die von der Grafikkarte unterstützen Modi zu erhalten. Danach kann man mit VESAScreen::find_mode() nach einem geeigneten Modus suchen. (Je nach Grafikkarte kann es auch passieren, dass kein passender Modus gefunden wird). Mit Aufruf von VESAScreen::set_mode() kann man dann den vorher gefundenen Modus setzen. Wenn ihr eine Übersicht über die von der aktuellen Grafikkarte unterstützen Modi haben wollt, dann ruft einfach VESAScreen::init() auf, ohne dann nachher in den Grafikmodus umzuschalten.
Dokumentation der Elementfunktionen
|
inline |
Setzt sämtliche Pixel im aktuellen Puffer auf schwarz.
VBEModeData_t * VESAScreen::find_mode | ( | unsigned int | width, |
unsigned int | height, | ||
unsigned char | bpp | ||
) |
Sucht einen Modus aus der Modustabelle.
Nachdem init() ausgeführt wurde, kann man die von der Grafikkarte unterstützten Modi nach gewissen Kritieren durchsuchen, um einen geeigneten Modus zu finden.
- Parameter
-
width Breite in Pixel des gewünschen Grafikmodus height Höhe in Pixel des gewünschen Grafikmodus bpp Untere Schranke für die Farbtiefe des gewünschten Grafikmodus (Achtung: qemu kann kein 32bpp, sondern nur 24bpp, bei den Testrechnern ist dies genau invers(32bpp aber kein 24bpp).
- Rückgabe
- Modus, der am Besten zu den gewählten Parametern passt.
Zeichnet eine Linie von start nach end.
- Parameter
-
start Startpunkt der Linie end Endpunkt der Linie color Farbe, in der die Linie gezeichnet werden soll
Zeichnet einen Pixel an Punkt p.
- Parameter
-
p Position des Pixels color Farbe, in der der Punkt gezeichnet werden soll
|
inline |
Zeichnet ein Rechteck.
- Parameter
-
top_left Obere, linke Ecke des Rechtecks bottom_right Untere, rechte Ecke des Rechtecks color Farbe, in der das Rechteck gezeichnet werden soll filled Gibt an, ob das Rechteck gefüllt gezeichnet werden soll, oder nur als Rahmen
|
inline |
Ausgabe eines Sprites mit Alpha-Blending.
Gibt eine Spritebitmap aus, und überblendet sie mit Hilfe von Alpha-blending anhand des Alpha-Kanals mit dem schon im Framebuffer vorhanden Hintergrund. Das Layout eines Pixels ist RGBA. Funktioniert bis jetzt nur in 24/32bpp Modi. In GIMP lassen sich Bitmaps als C-Source exportieren. Diese kann mann dann hiermit verwenden.
- Parameter
-
p Linke, obere Ecke des Sprites auf den Bildschrim sprite_width Breite des Sprites sprite_height Höhe des Sprites sprite Zeiger auf die Binärdaten des Sprites
|
inline |
Gibt Text an der globalen Cursorposition (analog CGA_Screen) auch mit Zeilenumbruch aus(allerdings ohne scrollen.
- Parameter
-
string Zeiger auf den String, der ausgegeben werden soll len Länge des auszugebenden Strings color Farbe, in der der String ausgegeben werden soll
|
inline |
Ausgabe von Text an der Position pos (ohne automatischen Zeilenumbruch)
- Parameter
-
string Zeiger auf den String, der ausgegeben werden soll len Länge des auszugebenden Strings color Farbe, in der der String ausgegeben werden soll pos Position, an der der String angezeigt werden soll
|
inline |
Ändern der Schriftart für Textausgabe im Grafikmodus.
- Parameter
-
new_font Schriftart, die bei nachfolgenden Aufrufen von print_text verwendet werden soll.
bool VESAScreen::set_mode | ( | VBEModeData_t * | mode | ) |
Setzt einen vorher per find_mode ausgewählten Modus.
- Rückgabe
- Zeiger auf den Modusdeskriptor
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
- machine/vesascreen.h
- machine/vesascreen.cc