PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::grafix::CGrafix Klassenreferenz

Hauptklasse für alle Grafik-Operationen. Mehr ...

Öffentliche Methoden

 CGrafix ()
 
 ~CGrafix ()
 
int AddFilter (CFilter *filter)
 Image-Filter registrieren. Mehr ...
 
int AddFontEngine (CFontEngine *engine)
 FontEngine hinzufügen. Mehr ...
 
bool CreateSurface (CSurface &surface)
 
bool CreateWindow (tk::Widget &widget)
 
CFilterFindFilter (const CString &name)
 Filter anhand seines Namens finden. Mehr ...
 
CFilterFindFilter (CFileObject &ff, IMAGE &img)
 Filter anhand des Inhalts einer geöffneten Datei finden. Mehr ...
 
CFilterFindFilter (CFileObject *ff, IMAGE &img)
 Filter anhand des Inhalts einer geöffneten Datei finden. Mehr ...
 
CFontFileFindFont (const CString &fontname)
 
CFontFileFindFont (const CFont &font)
 
GRAFIX_FUNCTIONSGetGrafixFunctions (const RGBFormat &format)
 
int LoadFont (const char *filename, const char *fontname=NULL)
 
int LoadFont (CFileObject *ff, const char *fontname=NULL)
 
int LoadFont (const CMemoryReference &memory, const char *fontname=NULL)
 
int UnloadFilter (CFilter *filter)
 Image-Filter entfernen. Mehr ...
 
int UnloadFont (const CString &fontname)
 
int UseEngine (GFXEngine *engine)
 

Öffentliche Attribute

CImageList ButtonSymbolsSmall
 
CImageList Icons32
 
CImageList Toolbar
 

Private Methoden

void InitAlphatab ()
 
int InitBlits (const RGBFormat &format, GRAFIX_FUNCTIONS *fn)
 Blitting-Funktionen initialisieren. Mehr ...
 
int InitColors (const RGBFormat &format, GRAFIX_FUNCTIONS *fn)
 
void InitErrors ()
 
int InitFunctions (const RGBFormat &format, GRAFIX_FUNCTIONS *fn)
 
int InitLines (const RGBFormat &format, GRAFIX_FUNCTIONS *fn)
 
int InitPixel (const RGBFormat &format, GRAFIX_FUNCTIONS *fn)
 
int InitShapes (const RGBFormat &format, GRAFIX_FUNCTIONS *fn)
 Initialisiert Funktionen zur Behandlung von Rechtecken. Mehr ...
 

Private Attribute

GFXEngineengine
 
CFilterfilter_bmp
 
CFilterfilter_gif
 
CFilterfilter_jpeg
 
CFilterfilter_png
 
CFilterfilter_ppm
 
CFilterfilter_tga
 
CList FontEngines
 
CTree FontList
 
CList ImageFilter
 
CMutex Mutex
 
RGBFormat PrimaryRGBFormat
 
GFXEngineSoftware software
 

Ausführliche Beschreibung

Diese Klasse wird für alle grafischen Funktionen benötigt und muß einmalig von der Anwendung instanziiert und Initialisiert werden. Beim Versuch eine zweite Instanz anzulegen, wird eine Exception geworfen.

Grafikengine
Ohne weiteres Zutun verwendet die PPL-Library nur Software-Routinen für die Grafik-Funktionen. Die Darstellung von Fenstern oder Vollbildanwendungen sind nicht möglich. Falls dies gewünscht ist, muss die Anwendung zunächst die gewünschte Grafik-Engine initialisieren und mit CGrafix::UseEngine anmelden. Siehe dazu auch die Basisklasse für Grafikengines GFXEngine, sowie die davon abgeleiteten Klassen GFXEngineDX9 und GFXEngineSDL.
Grafik-Filter
Ein Grafik-Filter ist eine von CFilter abgeleitete Klasse, mit der man ein bestimmtes Grafikformat lesen oder schreiben kann. Die PPL-Library bringt bereits Filter für die Format PNG, JPEG, GIF, BMP, PPM und TGA mit, die bei Initialisierung von CGrafix automatisch eingebunden werden. Bringt die Anwendung weitere Filter mit, müssen diese mit CGrafix::AddFilter registriert werden.
Fonts
Genau wie bei den Grafikfiltern gibt es auch Klassen für verschiedene Font-Formate. Die Basisklasse hierfür ist CFontEngine. PPL bringt bereits eine Engine für das eigene Font5-Format mit, sowie für die FreeType-Library, mit der unter anderem Fonts im TrueType oder OpenType Format dargestellt werden können. Um weitere Engines hinzuzufügen, muss die Funktion CGrafix::AddFontEngine aufgerufen werden.
Standardmäßig sind ist der freie Font "Liberation Sans" und "Liberation Mono" im Font5-Format in einigen Auflösungen enthalten. Um weitere Fonts zu laden muss die Funktion CGrafix::LoadFont verwendet werden.
Ausnahmebehandlung
Exception::ExistingCGrafixInstanceWird geworfen, wenn versucht wird eine zweite Instanz der Klasse zu erstellen

Beschreibung der Konstruktoren und Destruktoren

ppl6::grafix::CGrafix::CGrafix ( )
ppl6::grafix::CGrafix::~CGrafix ( )

Dokumentation der Elementfunktionen

int ppl6::grafix::CGrafix::AddFilter ( CFilter filter)
Beschreibung:
Mit dieser Funktion wird ein neuer Image-Filter registriert. Ein Image-Filter ist eine von CFilter abgeleitete Klasse, die in der Lage ist ein bestimmtes Grafikformat zu lesen und optional auch zu schreiben. Der Filter muss mit "new" angelegt worden sein. CGrafix übernimmt dessen Verwaltung, dass heisst die Klasse kümmert sich auch um das Löschen. Mit CGrafix::UnloadFilter kann ein Filter von der Anwendung manuell wieder entfernt werden.
Parameter
[in]filterPointer auf den zu registrierenden Filter
Rückgabe
Konnte der Filter erfolgreich registriert werden, liefert die Funktion 1 zurück, im Fehlerfall 0. Ein entsprechender Fehlercode wird gesetzt.
Siehe auch
int ppl6::grafix::CGrafix::AddFontEngine ( CFontEngine engine)

Mit dieser Funktion wird eine FontEngine der Grafikengine hinzugefügt. Darunter versteht man eine von CFontEngine abgeleitete Klasse, die in der Lage ist Fontdateien in einem bestimmten Format zu verarbeiten und darzustellen.

Die FontEngine muss von der Anwendung mit "new" erstellt werden und als Pointer an die CGrafix-Engine übergeben werden. CGrafix verwaltet die Engine ab diesem Moment und kümmert sich auch um deren Löschung bei Programmende. Die Anwendung darf die FontEngine nicht selbst löschen!

Parameter
enginePointer auf die Klasse mit der FontEngine
Rückgabe
Liefert true (1) zurück, wenn die Engine erfolgreich aufgenommen werden konnte, sonst false (0). Ein entsprechender Fehlercode wird gesetzt.
bool ppl6::grafix::CGrafix::CreateSurface ( CSurface surface)
bool ppl6::grafix::CGrafix::CreateWindow ( tk::Widget widget)
CFilter * ppl6::grafix::CGrafix::FindFilter ( const CString name)
Beschreibung:
Jeder Filter muss einen eindeutigen Namen haben. Mit dieser Funktion kann ein registrierter Filter anhand dieses Namens gefunden werden.
Parameter
[in]nameDer gesuchte Filter-Name
Rückgabe
Bei Erfolg liefert die Funktion einen Pointer auf den gefundenen Filter zurück, im Fehlerfall NULL.
CFilter * ppl6::grafix::CGrafix::FindFilter ( CFileObject ff,
IMAGE img 
)
Beschreibung:
Mit dieser Funktion kann ein registrierter Filter anhand des Inhalts einer bereits geöffneten Datei gefunden werden. Dazu wird die Funktion CFilter::Ident von jedem registrierten Filter aufgerufen, bis einer signalisiert, dass er das Format verarbeiten kann.
Parameter
[in]ffReferenz auf die geöffnete Datei
Rückgabe
Bei Erfolg liefert die Funktion einen Pointer auf den gefundenen Filter zurück, im Fehlerfall NULL.
CFilter * ppl6::grafix::CGrafix::FindFilter ( CFileObject ff,
IMAGE img 
)
Beschreibung:
Mit dieser Funktion kann ein registrierter Filter anhand des Inhalts einer bereits geöffneten Datei gefunden werden. Dazu wird die Funktion CFilter::Ident von jedem registrierten Filter aufgerufen, bis einer signalisiert, dass er das Format verarbeiten kann.
Parameter
[in]ffPointer auf die geöffnete Datei
Rückgabe
Bei Erfolg liefert die Funktion einen Pointer auf den gefundenen Filter zurück, im Fehlerfall NULL.
CFontFile * ppl6::grafix::CGrafix::FindFont ( const CString fontname)
CFontFile * ppl6::grafix::CGrafix::FindFont ( const CFont font)
GRAFIX_FUNCTIONS * ppl6::grafix::CGrafix::GetGrafixFunctions ( const RGBFormat format)
void ppl6::grafix::CGrafix::InitAlphatab ( )
private
int ppl6::grafix::CGrafix::InitBlits ( const RGBFormat format,
GRAFIX_FUNCTIONS fn 
)
private
Beschreibung:
Mit dieser Funktion werden die Blitting-Funktionen in Abhängigkeit des Farbformates der Oberfläche initialisiert.

Blitting-Funktionen (oder kurz "Blt") sind Funktionen, mit denen Rechteckige Grafiken - oder auch nur Teile davon - in eine andere Grafik kopiert werden. Dabei wird unterschieden, ob der Inhalt ohne Prüfung 1:1 kopiert wird (CSurface::Blt), ein bestimmte Farbe transparent sein soll (CSurface::BltColorKey), der Alphakanal der Quellgrafik verwendet werden soll (CSurface::AlphaBlt oder CSurface::DrawSprite) oder die Intensität eines Schwarz-Weiss-Bildes verwendet wird, um eine bestimmte Farbe zu zeichnen (CSurface::BltDiffuse).

Parameter
[in]sPointer auf die SURFACE-Struktur der Oberfläche.
Rückgabe
Liefert 1 zurück, wenn die Funktionen erfolgreich initialisiert wurden, 0, wenn das Farbformat nicht unterstützt wird.
Bemerkungen
Gegenwärtig werden nur Farbformate mit einer Tiefe von 32 Bit unterstützt, jedoch könnten andere Farbformate von der verwendeten Grafik-Engine unterstüzt werden.
int ppl6::grafix::CGrafix::InitColors ( const RGBFormat format,
GRAFIX_FUNCTIONS fn 
)
private
void ppl6::grafix::CGrafix::InitErrors ( )
private
int ppl6::grafix::CGrafix::InitFunctions ( const RGBFormat format,
GRAFIX_FUNCTIONS fn 
)
private
int ppl6::grafix::CGrafix::InitLines ( const RGBFormat format,
GRAFIX_FUNCTIONS fn 
)
private
int ppl6::grafix::CGrafix::InitPixel ( const RGBFormat format,
GRAFIX_FUNCTIONS fn 
)
private
int ppl6::grafix::CGrafix::InitShapes ( const RGBFormat format,
GRAFIX_FUNCTIONS fn 
)
private
Beschreibung:
Diese Funktion initialisiert eine Reihe von Funktionen zur Bearbeitung von Rechtecken. Dabei handelt es sich um die Funktionen:
  • CLS
  • Rect
  • FillRect
  • Xchange
  • Invert
  • Negativ
Parameter
[in]formatDas gewünschte Farbformat
[in]fnPointer auf die Struktur mit den Funktionen
Rückgabe
Liefert 1 zurück, wenn das Farbformat unterstützt wird, sonst 0
int ppl6::grafix::CGrafix::LoadFont ( const char *  filename,
const char *  fontname = NULL 
)
int ppl6::grafix::CGrafix::LoadFont ( CFileObject ff,
const char *  fontname = NULL 
)
int ppl6::grafix::CGrafix::LoadFont ( const CMemoryReference memory,
const char *  fontname = NULL 
)
int ppl6::grafix::CGrafix::UnloadFilter ( CFilter filter)
Beschreibung:
Mit dieser Funktion wird ein zuvor mit CGrafix::AddFilter registrierter Image-Filter aus der Grafik-Engine entfernt. Der Filter selbst wird jedoch nicht gelöscht, darum muss sich die Anwendung kümmern.
Parameter
[in]filterPointer auf den zu entfernenden Image-Filter
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::grafix::CGrafix::UnloadFont ( const CString fontname)
int ppl6::grafix::CGrafix::UseEngine ( GFXEngine engine)

Dokumentation der Datenelemente

CImageList ppl6::grafix::CGrafix::ButtonSymbolsSmall
GFXEngine* ppl6::grafix::CGrafix::engine
private
CFilter* ppl6::grafix::CGrafix::filter_bmp
private
CFilter* ppl6::grafix::CGrafix::filter_gif
private
CFilter* ppl6::grafix::CGrafix::filter_jpeg
private
CFilter* ppl6::grafix::CGrafix::filter_png
private
CFilter* ppl6::grafix::CGrafix::filter_ppm
private
CFilter* ppl6::grafix::CGrafix::filter_tga
private
CList ppl6::grafix::CGrafix::FontEngines
private
CTree ppl6::grafix::CGrafix::FontList
private
CImageList ppl6::grafix::CGrafix::Icons32
CList ppl6::grafix::CGrafix::ImageFilter
private
CMutex ppl6::grafix::CGrafix::Mutex
private
RGBFormat ppl6::grafix::CGrafix::PrimaryRGBFormat
private
GFXEngineSoftware ppl6::grafix::CGrafix::software
private
CImageList ppl6::grafix::CGrafix::Toolbar

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