Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultńt Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
    - Videos
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Module
    - Mailingliste
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * Aufgabe 1
          Dokumentation
       * Aufgabe 2
          Dokumentation
       * Aufgabe 3
          Dokumentation
       * Aufgabe 4
          Dokumentation
       * Aufgabe 5
          Dokumentation
       * Aufgabe 6
          Dokumentation
       * Aufgabe 7
          Dokumentation
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2011/12  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 7

VESAScreen Klassenreferenz

Abstraktion einer VESA Grafikkarte. Mehr ...

#include <vesascreen.h>

Klassendiagramm f├╝r VESAScreen:
Zusammengeh├Ârigkeiten von VESAScreen:

Aufstellung aller Elemente

├ľ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.
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_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.

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

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.

bool VESAScreen::set_mode ( VBEModeData_t *  mode  ) 

Setzt einen vorher per find_mode ausgew├Ąhlten Modus.

Parameter:
Zeiger auf den Modusdeskriptor

void VESAScreen::print_line ( const Point &  start,
const Point &  end,
const Color &  color 
) [inline]

Zeichnet eine Linie von start nach end.

Parameter:
start Startpunkt der Linie
end Endpunkt der Linie

void VESAScreen::print_rectangle ( const Point &  top_left,
const Point &  bottom_right,
const Color &  color,
bool  filled = true 
) [inline]

Zeichnet ein Rechteck.

Parameter:
top_left Obere, linke Ecke des Rechtecks
bottom_right Untere, rechte Ecke des Rechtecks Farbe, in der das Rechteck gezeichnet werden soll Gibt an, ob das Rechteck gef├╝llt gezeichnet werden soll, oder nur als Rahmen

void VESAScreen::set_font ( const Font &  new_font  )  [inline]

Ändern der Schriftart für Textausgabe im Grafikmodus.

Parameter:
new_font Schriftart, die bei nachfolgenden Aufrufen von print_text verwendet werden soll.

void VESAScreen::print_text ( char *  string,
int  len,
const Color &  color 
) [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

void VESAScreen::print_text ( char *  string,
int  len,
const Color &  color,
const Point &  pos 
) [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

void VESAScreen::print_sprite_alpha ( const Point &  p,
int  sprite_width,
int  sprite_height,
const SpritePixel *  sprite 
) [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


Die Dokumentation f├╝r diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2012-02-01 10:07   BO, DL