
Treiber für die Grafikkarte. Mehr ...
#include <device/graphics.h>
Öffentliche Methoden | |
Graphics (unsigned size, void *frontbuffer, void *backbuffer) | |
Konstruktor; bekommt zwei Puffer im Hauptspeicher als Parameter. Mehr ... | |
bool | init (bool force=false) |
Initialisiere auf aktuellen Modus. Mehr ... | |
bool | switch_buffers () |
Tauscht Frontbuffer und Backbuffer aus (sofern der Frontbuffer bereits gezeichnet wurde) Mehr ... | |
void | scanout_frontbuffer () |
Kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte. Mehr ... | |
void | clear () |
Setzt sämtliche Pixel im aktuellen Puffer auf schwarz. Mehr ... | |
bool | valid (const Point &p) |
Prüfen ob ein Punkt bei der aktuellen Auflösung angezeigt werden kann. Mehr ... | |
unsigned | height () |
Anzahl der vertikalen Pixel in der aktuellen Auflösung. Mehr ... | |
unsigned | width () |
Anzahl der horizontalen Pixel in der aktuellen Auflösung. Mehr ... | |
void | pixel (const Point &p, const Color &color) |
Zeichnet einen Pixel an Punkt p. Mehr ... | |
void | line (const Point &start, const Point &end, const Color &color) |
Zeichnet eine Linie von start nach end. Mehr ... | |
void | rectangle (const Point &top_left, const Point &bottom_right, const Color &color, bool filled=true) |
Zeichnet ein Rechteck. Mehr ... | |
void | font (const Font &new_font) |
Ändern der Schriftart für Textausgabe im Grafikmodus. Mehr ... | |
void | text (const Point &p, const char *string, unsigned len, const Color &color, const Font *font=nullptr) |
Ausgabe von Text an der Position pos (ohne automatischen Zeilenumbruch) Mehr ... | |
void | image (const Point &p, PNG &image, unsigned width=-1, unsigned height=-1, unsigned offset_x=0, unsigned offset_y=0) |
Ausgabe eines PNG Bild[auschnitt]es. Mehr ... | |
void | image (const Point &p, const GIMP &image, unsigned width=-1, unsigned height=-1, unsigned offset_x=0, unsigned offset_y=0) |
Ausgabe eines mit GIMP erzeugten Bild[auschnitt]es TEXT 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. Mehr ... | |
void | image (const Point &p, const Color *image, unsigned width, unsigned height, unsigned offset_x=0, unsigned offset_y=0) |
Ausgabe eines farbigen Sprites. Mehr ... | |
void | image (const Point &p, const ColorAlpha *image, unsigned width, unsigned height, unsigned offset_x=0, unsigned offset_y=0) |
Ausgabe eines farbigen Sprites mit Alpha-Blending. Mehr ... | |
Treiber für die Grafikkarte.
: Modus muss via multiboot gesetzt werden (beschreibung) 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:
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.
Graphics::Graphics | ( | unsigned | size, |
void * | frontbuffer, | ||
void * | backbuffer | ||
) |
Konstruktor; bekommt zwei Puffer im Hauptspeicher als Parameter.
size | Größe eines Puffers |
frontbuffer | Speicher mit ausreichender Größe für die übertragung an den Bildschirmspeicher |
backbuffer | Speicher mit ausreichender Größe für das Vorbereitende Zeichnen für den Bildschirmspeicher |
|
inline |
Setzt sämtliche Pixel im aktuellen Puffer auf schwarz.
|
inline |
Ändern der Schriftart für Textausgabe im Grafikmodus.
new_font | Schriftart, die bei nachfolgenden Aufrufen von print_text verwendet werden soll. |
|
inline |
Anzahl der vertikalen Pixel in der aktuellen Auflösung.
|
inline |
Ausgabe eines PNG Bild[auschnitt]es.
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.
p | Linke, obere Ecke des Sprites auf den Bildschirm |
image | Sprite als PNG Objekt |
width | Breite des Sprites (automatisch ganze Breite, falls keine Angabe) |
height | Höhe des Sprites (automatisch ganze Höhe, falls keine Angabe) |
offset_x | Absatz rechts (keiner per Default) |
offset_y | Absatz oben (keiner per Default) |
|
inline |
Ausgabe eines mit GIMP erzeugten Bild[auschnitt]es TEXT 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.
p | Linke, obere Ecke des Sprites auf den Bildschirm |
image | Sprite als PNG Objekt |
width | Breite des Sprites (automatisch ganze Breite, falls keine Angabe) |
height | Höhe des Sprites (automatisch ganze Höhe, falls keine Angabe) |
offset_x | Absatz rechts (keiner per Default) |
offset_y | Absatz oben (keiner per Default) |
|
inline |
Ausgabe eines farbigen Sprites.
Gibt eine Spritebitmap ohne Transparenz aus (d.h. es übermalt den bestehenden 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.
p | Linke, obere Ecke des Sprites auf den Bildschirm |
image | Zeiger auf die Binärdaten des Sprites |
width | Breite des Sprites |
height | Höhe des Sprites |
offset_x | Absatz rechts (keiner per Default) |
offset_y | Absatz oben (keiner per Default) |
|
inline |
Ausgabe eines farbigen 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.
p | Linke, obere Ecke des Sprites auf den Bildschirm |
image | Zeiger auf die Binärdaten des Sprites |
width | Breite des Sprites |
height | Höhe des Sprites |
offset_x | Absatz rechts (keiner per Default) |
offset_y | Absatz oben (keiner per Default) |
bool Graphics::init | ( | bool | force = false | ) |
Initialisiere auf aktuellen Modus.
force | Verwende den Grafikmodus auch wenn Attribute behaupten er sei nicht verfügbar (auf den Testrechnern notwendig) |
Zeichnet eine Linie von start nach end.
start | Startpunkt der Linie |
end | Endpunkt der Linie |
color | Farbe, in der die Linie gezeichnet werden soll |
Zeichnet einen Pixel an Punkt p.
p | Position des Pixels |
color | Farbe, in der der Punkt gezeichnet werden soll |
|
inline |
Zeichnet ein Rechteck.
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 |
void Graphics::scanout_frontbuffer | ( | ) |
Kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte.
bool Graphics::switch_buffers | ( | ) |
Tauscht Frontbuffer und Backbuffer aus (sofern der Frontbuffer bereits gezeichnet wurde)
Zeichenoperationen über die Methoden von VESAScreen gehen in den aktuellen Backbuffer; scanout_frontbuffer kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte.
true
wenn der vorherige Frontbuffer in den Speicher der Graphikkarte übergeben wurde wurde
|
inline |
Ausgabe von Text an der Position pos (ohne automatischen Zeilenumbruch)
p | Position, an der der String angezeigt werden soll |
string | Zeiger auf den String, der ausgegeben werden soll |
len | Länge des auszugebenden Strings |
color | Farbe, in der der String ausgegeben werden soll |
font | Schriftart für die Darstellung (oder nullptr für Standardschriftart) |
|
inline |
Prüfen ob ein Punkt bei der aktuellen Auflösung angezeigt werden kann.
p | zu prüfender Punkt |
|
inline |
Anzahl der horizontalen Pixel in der aktuellen Auflösung.