123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- #ifndef Bild_H
- #define Bild_H
- #include "Array.h"
- #include "Zeichnung.h"
- #include "Punkt.h"
- namespace Framework
- {
- class Bild; // aus dieser Datei
- #ifdef WIN32
- class VScrollBar; // Scroll.h
- class HScrollBar; // Scroll.h
- class Rahmen; // Rahmen.h
- struct MausEreignis; // Mausereignis.h
- class Text; // Text.h
- #endif
- // Verwaltet ein Bild als Array von Pixel Farben im A8R8G8B8 Format, in den gezeichnet werden kann
- class Bild
- {
- private:
- int *fc;
- bool delFc;
- Punkt size;
- int ref;
- Punkt *drawOff;
- Punkt *dPosA;
- Punkt *dSizeA;
- int doa;
- unsigned char *alpha;
- int alphaAnzahl;
- bool rend;
- bool alpha3D;
- // privat
- inline void alphaPixelP( int x, int y, int f );
- inline void alphaPixelP3D( int x, int y, int f );
- inline void alphaPixelP( int &fc, int f );
- inline void alphaPixelP3D( int &fc, int f );
- inline void alphaPixelAssozP( int &fc, int f );
- inline char getOutCode( Punkt p ) const;
- void drawFlatDreieck( int y1, int y2, float m1, float b1, float m2, float b2, int farbe );
- void drawFlatDreieckTextur( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
- double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur );
- void drawFlatDreieckAlpha( int y1, int y2, float m1, float b1, float m2, float b2, int farbe );
- void drawFlatDreieckTexturAlpha( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
- double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur );
- void drawLinieHTextur( Vec2< double > p, double length, Vec2< double > ta, Vec2< double > tb, double txo, double tyo, Bild &textur );
- void drawLinieHTexturAlpha( Vec2< double > p, double length, Vec2< double > ta, Vec2< double > tb, double txo, double tyo, Bild &textur );
- public:
- // Konstruktor
- // options: 1, wenn das Bild Buffer zum Zeichnen anlegen soll, wie zum Beispiel für temporäre Zeichnenflächen Begrenzungen und Transparenz Filter
- // Verbraucht etwa 50 kb mehr Arbeitsspeicher pro Bild
- __declspec( dllexport ) Bild( bool options = 0 );
- // Destruktor
- __declspec( dllexport ) ~Bild();
- // Prüft ob ein Rechteck vollständig oder teilweise in der Zeichen Fläche liegt.
- // return 0, falls das Rechteck nicht in der Zeichenfläche liegt, 1 sonst
- __declspec( dllexport ) bool isAreaDrawable( int x, int y, int width, int height );
- // Wird dieser Flag gesetzt, so wird beim Alpha Blending wenn die vorheriege Farbe 0 ist nur die neue mit ihrem Alpha Wert kopiert.
- // Das ist sinnvoll für die Verwendung im 3DBildschirm, wo das Gezeichnette Bild später mittels Alpha Blending angezeigt wird.
- // Der Flag wird im 3DBildschirm automatisch gesetzt
- __declspec( dllexport ) void setAlpha3D( bool erlaubt );
- // Setzt die mindest Transparenz von allem was als nächstes gezeichnet wird, bis der zugehörige releaseAlpha() aufruf erfolgt.
- __declspec( dllexport ) void setAlpha( unsigned char alpha );
- // Entfernt die als letztes mit setAlpha() gesetzte Alpha grenze
- __declspec( dllexport ) void releaseAlpha();
- // Setzt einen Zeiger auf die Pixel, in die gezeichnet werden soll
- // buffer: Ein Array mit den A8R8G8B8 Farbwerten
- // deleteBuffer: 1, fals der Array vom Bild gelöscht werden soll
- // breite: Die Breite in Pixeln
- // height: Die Höhe in Pixeln
- __declspec( dllexport ) void setPixelBuffer( int *buffer, bool deleteBuffer, int breite, int height );
- // Erstellt ein neues Bild
- // breite: Die Breite des Bildes in Pixeln
- // höhe: Die Höhe des Bildes in Pixeln
- // fillColor: Die startfarbe, auf die alle Pixel gesetzt werden
- __declspec( dllexport ) void neuBild( int breite, int height, int fillColor );
- // Blendet mittels Alphablending eine Farbe auf einen bestimmten Pixel
- // Beachtet nicht die begrenzung der Zeichnenfläche und das Skroll Offset
- // x: Die X Koordinate des Pixels
- // y: Die Y Koordinate des Pixels
- // f: Die Farbe in A8R8G8B8 Format, die geblendet werden soll
- __declspec( dllexport ) void alphaPixel2D( int x, int y, int f );
- __declspec( dllexport ) void alphaPixel3D( int x, int y, int f );
- // Blendet mittels Alphablending eine Farbe auf einen bestimmten Pixel
- // Beachtet nicht die begrenzung der Zeichnenfläche und das Skroll Offset
- // i: Der Index des Pixels im Pixel Array
- // f: Die Farbe in A8R8G8B8 Format, die geblendet werden soll
- __declspec( dllexport ) void alphaPixel2D( int i, int f );
- __declspec( dllexport ) void alphaPixel3D( int i, int f );
- // Blendet mittels Alphablending eine Farbe auf einen bestimmten Pixel
- // x: Die X Koordinate des Pixels
- // y: Die Y Koordinate des Pixels
- // f: Die Farbe in A8R8G8B8 Format, die geblendet werden soll
- __declspec( dllexport ) void alphaPixelDP2D( int x, int y, int f );
- __declspec( dllexport ) void alphaPixelDP3D( int x, int y, int f );
- // Blendet mittels Alphablending eine Farbe auf einen bestimmten Pixel
- // i: Der Index des Pixels im Pixel Array
- // f: Die Farbe in A8R8G8B8 Format, die geblendet werden soll
- __declspec( dllexport ) void alphaPixelDP2D( int i, int f );
- __declspec( dllexport ) void alphaPixelDP3D( int i, int f );
- // Setzt die Farbe eines besimmten Pixels
- // x: Die X Koordinate des Pixels
- // y: Die Y Koordinate des Pixels
- // f: Die neue Farbe in A8R8G8B8 Format
- __declspec( dllexport ) void setPixelDP( int x, int y, int f );
- // Setzt die Farbe eines besimmten Pixels
- // i: Der Index des Pixels im Pixel Array
- // f: Die neue Farbe in A8R8G8B8 Format
- __declspec( dllexport ) void setPixelDP( int i, int f );
- // Setzt die Farbe aller Pixel des Bildes
- // f: Die neue Farbe
- __declspec( dllexport ) void setFarbe( int f );
- // Setzt die Farben aller Pixel in einem Rechteck
- // x: Die X Koordinate
- // y: Die Y Koordinate
- // b: Die Breite des Rechtecks
- // h: Die Höhe des Rechtecks
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void fillRegion( int x, int y, int b, int h, int fc );
- // Blendet eine Farbe mit Alphablending in einem Rechteck
- // x: Die X Koordinate
- // y: Die Y Koordinate
- // b: Die Breite des Rechtecks
- // h: Die Höhe des Rechtecks
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void alphaRegion( int x, int y, int b, int h, int fc );
- // Zeichnet eine horizontale Linie
- // x: Die X Koordinate des Startpunktes der Linie
- // y: Die Y Koordinate des Startpunktes der Linie
- // length: Die Länge der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinieH( int x, int y, int length, int fc );
- // Zeichnet eine vertikale Linie
- // x: Die X Koordinate des Startpunktes der Linie
- // y: Die Y Koordinate des Startpunktes der Linie
- // length: Die Länge der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinieV( int x, int y, int length, int fc );
- // Zeichnet eine horizontale Linie mit Alpha blending
- // x: Die X Koordinate des Startpunktes der Linie
- // y: Die Y Koordinate des Startpunktes der Linie
- // length: Die Länge der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinieHAlpha( int x, int y, int length, int fc );
- // Zeichnet eine vertikale Linie mit Alpha Blending
- // x: Die X Koordinate des Startpunktes der Linie
- // y: Die Y Koordinate des Startpunktes der Linie
- // length: Die Länge der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinieVAlpha( int x, int y, int length, int fc );
- // Zeichnet eine Linie
- // a: Der Startpunkt der Linie
- // b: der Endpunkt der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinieBordered( Punkt a, Punkt b, int bc, int fc );
- // Zeichnet eine Linie
- // a: Der Startpunkt der Linie
- // b: der Endpunkt der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinieBorderedAlpha( Punkt a, Punkt b, int bc, int fc );
- // Zeichnet eine Linie
- // a: Der Startpunkt der Linie
- // b: der Endpunkt der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinie( Punkt a, Punkt b, int fc );
- // Zeichnet eine Linie mit Alpha Blending
- // a: Der Startpunkt der Linie
- // b: der Endpunkt der Linie
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawLinieAlpha( Punkt a, Punkt b, int fc );
- // Füllt einen Kreis mit einer Farbe. (Unfertig)
- // xOff: Die X Koordinate des Kreismittelpunktes
- // yOff: Die Y Koordinate des Kreismittelpunktes
- // r: Der Radius des Kreises in Pixeln
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void fillCircle( int xOff, int yOff, int r, int fc );
- // Zeichnet den Umriss eines Kreises
- // xOff: Die X Koordinate des Kreismittelpunktes
- // yOff: Die Y Koordinate des Kreismittelpunktes
- // r: Der Radius des Kreises in Pixeln
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawKreis( int xOff, int yOff, int r, int fc );
- // Zeichnet den Umriss eines Kreises mit Alpha Blending
- // xOff: Die X Koordinate des Kreismittelpunktes
- // yOff: Die Y Koordinate des Kreismittelpunktes
- // r: Der Radius des Kreises in Pixeln
- // fc: Die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawKreisAlpha( int xOff, int yOff, int r, int fc );
- // Zeichnet ein Bild in ein bestimmtes Feld ohne Skallierung
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void drawBild( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild in ein bestimmtes Feld ohne Skallierung mit alpha blending
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void alphaBild( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild in ein bestimmtes Feld ohne Skallierung mit alpha blending
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void alphaBildAssoz( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild um 90 grad nach rechts gedreht in ein bestimmtes Feld ohne Skallierung
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void drawBild90( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild um 90 grad nach rechts gedreht in ein bestimmtes Feld ohne Skallierung mit alpha Blending
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void alphaBild90( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild um 180 grad nach rechts gedreht in ein bestimmtes Feld ohne Skallierung
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void drawBild180( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild um 180 grad nach rechts gedreht in ein bestimmtes Feld ohne Skallierung mit alpha Blending
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void alphaBild180( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild um 270 grad nach rechts gedreht in ein bestimmtes Feld ohne Skallierung
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void drawBild270( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild um 270 grad nach rechts gedreht in ein bestimmtes Feld ohne Skallierung mit alpha Blending
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void alphaBild270( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild in ein bestimmtes Feld mit Skallierung
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void drawBildSkall( int x, int y, int br, int hi, Bild &zBild );
- // Zeichnet ein Bild in ein bestimmtes Feld mit Skallierung mit Alpha Blending
- // x: Die X Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // y: Die Y Koordinate der linken oberen Ecke des Rechtecks in dem das Bild gezeichnet werden soll
- // br: Die Breite des Rechecks in dem das Bild gezeichnet werden soll
- // hi: Die Höhe des Rechecks in dem das Bild gezeichnet werden soll
- // zBild: Das Bild, was gezeichnet werden soll
- __declspec( dllexport ) void alphaBildSkall( int x, int y, int br, int hi, Bild &zBild );
- // Füllt ein Dreieck mit einer bestimmten Farbe
- // a: Eine Ecke des Dreiecks
- // b: Eine Ecke des Dreiecks
- // c: Eine Ecke des Dreiecks
- // farbe: die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawDreieck( Punkt a, Punkt b, Punkt c, int farbe );
- // Füllt ein Dreieck mit einer bestimmten Textur
- // a: Eine Ecke des Dreiecks
- // b: Eine Ecke des Dreiecks
- // c: Eine Ecke des Dreiecks
- // ta: Die Koordinaten von a in der Textur
- // tb: Die Koordinaten von b in der Textur
- // tc: Die Koordinaten von c in der Textur
- // textur: Das Bild, was als Textur verwendet werden soll
- __declspec( dllexport ) void drawDreieckTextur( Punkt a, Punkt b, Punkt c, Punkt ta, Punkt tb, Punkt tc, Bild &textur );
- // Füllt ein Dreieck mit einer bestimmten Farbe mit alpha blending
- // a: Eine Ecke des Dreiecks
- // b: Eine Ecke des Dreiecks
- // c: Eine Ecke des Dreiecks
- // farbe: die Farbe im A8R8G8B8 Format
- __declspec( dllexport ) void drawDreieckAlpha( Punkt a, Punkt b, Punkt c, int farbe );
- // Füllt ein Dreieck mit einer bestimmten Textur mit alpha blending
- // a: Eine Ecke des Dreiecks
- // b: Eine Ecke des Dreiecks
- // c: Eine Ecke des Dreiecks
- // ta: Die Koordinaten von a in der Textur
- // tb: Die Koordinaten von b in der Textur
- // tc: Die Koordinaten von c in der Textur
- // textur: Das Bild, was als Textur verwendet werden soll
- __declspec( dllexport ) void drawDreieckTexturAlpha( Punkt a, Punkt b, Punkt c, Punkt ta, Punkt tb, Punkt tc, Bild &textur );
- // Ersetzt eine bestimmte Farbe durch Transparenz
- __declspec( dllexport ) void replaceColorWithAlpha( int color );
- // Begrenzt die Zeichenfläche in die bis zum nächsten aufruf von releaseDrawOptions() gezeichnet werden kann. Alles außerhalb der Fläche wird automatisch ignoriert.
- // Wenn die Zeichenfläche über den Rand einer bestehenden Zeichenfläche hinausragt, wird sie automatisch auf die bestehende Zeichnenfläche beschnitten.
- // pos: Die Koordinaten der linken oberen Ecke der Zeichenfläche
- // gr: Die Größe der Zeichenfläche
- // return: 1, falls die neue Zeichenfläche ganz oder teilweise innerhalb der bestehenden Zeichenfläche ligt. Wenn 0 zurückgegeben wird, wurde die Zeichenfläche nicht gesetzt und es braucht nicht releaseDrawOptions() aufgerufen werden
- __declspec( dllexport ) bool setDrawOptions( const Punkt &pos, const Punkt &gr );
- // Begrenzt die Zeichenfläche in die bis zum nächsten aufruf von releaseDrawOptions() gezeichnet werden kann. Alles außerhalb der Fläche wird automatisch ignoriert.
- // Wenn die Zeichenfläche über den Rand einer bestehenden Zeichenfläche hinausragt, wird sie automatisch auf die bestehende Zeichnenfläche beschnitten.
- // x: Die X Koordinate der linken oberen Ecke der Zeichenfläche
- // y: Die X Koordinate der linken oberen Ecke der Zeichenfläche
- // br: Die Breite der Zeichenfläche
- // hi: Die Höhe der Zeichenfläche
- // return: 1, falls die neue Zeichenfläche ganz oder teilweise innerhalb der bestehenden Zeichenfläche ligt. Wenn 0 zurückgegeben wird, wurde die Zeichenfläche nicht gesetzt und es braucht nicht releaseDrawOptions() aufgerufen werden
- __declspec( dllexport ) bool setDrawOptions( int x, int y, int br, int hi );
- // Begrenzt die Zeichenfläche in die bis zum nächsten aufruf von releaseDrawOptions() gezeichnet werden kann. Alles außerhalb der Fläche wird automatisch ignoriert.
- // Wenn die Zeichenfläche darf über den Rand einer bestehenden Zeichenfläche hinausragen
- // pos: Die Koordinaten der linken oberen Ecke der Zeichenfläche
- // gr: Die Größe der Zeichenfläche
- // return: 1, falls die neue Zeichenfläche ganz oder teilweise innerhalb des Bildes ligt. Wenn 0 zurückgegeben wird, wurde die Zeichenfläche nicht gesetzt und es braucht nicht releaseDrawOptions() aufgerufen werden
- __declspec( dllexport ) bool setDrawOptionsErzwingen( const Punkt &pos, const Punkt &gr );
- // Begrenzt die Zeichenfläche in die bis zum nächsten aufruf von releaseDrawOptions() gezeichnet werden kann. Alles außerhalb der Fläche wird automatisch ignoriert.
- // Wenn die Zeichenfläche darf über den Rand einer bestehenden Zeichenfläche hinausragen
- // x: Die X Koordinate der linken oberen Ecke der Zeichenfläche
- // y: Die X Koordinate der linken oberen Ecke der Zeichenfläche
- // br: Die Breite der Zeichenfläche
- // hi: Die Höhe der Zeichenfläche
- // return: 1, falls die neue Zeichenfläche ganz oder teilweise innerhalb des Bildes ligt. Wenn 0 zurückgegeben wird, wurde die Zeichenfläche nicht gesetzt und es braucht nicht releaseDrawOptions() aufgerufen werden
- __declspec( dllexport ) bool setDrawOptionsErzwingen( int x, int y, int br, int hi );
- // Setzt Koordinaten, die bei den Zeichenfunktionen von den Positionen abgezogen werden
- // Vorher sollte eine Zeichenfläche mit SetDrawOptions gesetzt worden sein. Die Werte werden mit dem aufruf von releaseDrawOptions() wieder zurückgesetzt.
- // xOff: Ein Wert, der von allen X Koordinaten abgezogen wird
- // yOff: Ein Wert, der von allen Y Koordinaten abgezogen wird
- __declspec( dllexport ) void addScrollOffset( int xOff, int yOff );
- // Entfernt die als letztes gesetzte begrenzung der Zeichenfläche und alle seit dem gesetzten Scroll Offsets
- // Stellt die vorherige Zeichenfläche und die zugehörigen Scroll Offsets wieder her
- __declspec( dllexport ) void releaseDrawOptions();
- // Gibt zurück, ob sich das Bild seit dem letzten Aufruf dieser Funktion verändert hat
- __declspec( dllexport ) bool getRend();
- // Gibt den Array mit A8R8G8B8 Farbwerten der Pixel zurück
- // Der Index eines Pixels berechnet sich durch x + y * Bildbreite
- __declspec( dllexport ) int *getBuffer() const;
- // Gibt den A8R8G8B8 Farbwert eines Pixels zurück
- // x: Die X Koordinate des Pixels
- // y: Die Y Koordinate des Pixels
- __declspec( dllexport ) int getPixel( int x, int y ) const;
- // Gibt die Größe des Bildes zurück
- __declspec( dllexport ) const Punkt &getSize() const;
- // Gibt die Breite des Bildes zurück
- __declspec( dllexport ) int getBreite() const;
- // Gibt die Höhe des Bildes zurück
- __declspec( dllexport ) int getHeight() const;
- // Gibt den aktuellen mindest Transparenz Wert zurück
- __declspec( dllexport ) unsigned char getAlpha() const;
- // Gibt die Koordinaten der linken oberen Ecke der aktuellen Zeichenfläche zurück
- __declspec( dllexport ) const Punkt &getDrawPos() const;
- // Gibt die Größe der aktuelen Zeichenfläche zurück
- __declspec( dllexport ) const Punkt &getDrawGr() const;
- // Gibt die Koordinaten zurück, die zu allen Positionen vor dem Zeichnen hinzugefügt werden
- __declspec( dllexport ) const Punkt &getDrawOff() const;
- // Wird dieser Flag gesetzt, so wird beim Alpha Blending wenn die vorheriege Farbe 0 ist nur die neue mit ihrem Alpha Wert kopiert.
- // Das ist sinnvoll für die Verwendung im 3DBildschirm, wo das Gezeichnette Bild später mittels Alpha Blending angezeigt wird.
- // Der Flag wird im 3DBildschirm automatisch gesetzt
- __declspec( dllexport ) bool hasAlpha3D();
- // Erhöht den Reference Counting Zähler.
- // return: this.
- __declspec( dllexport ) Bild *getThis();
- // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
- // return: 0.
- __declspec( dllexport ) Bild *release();
- };
- // Eine Zeichnung des 2d GUI Frameworks, die ein Bild anzeigt.
- class BildZ : public ZeichnungHintergrund
- {
- public:
- class Style : public ZeichnungHintergrund::Style
- {
- public:
- const static __int64 Alpha = 0x1000; // Wenn dieser Flag gesetzt ist, wird zum Zeichnen des Bildes Alpha Blending verwendet
- const static __int64 normal = HScroll | Sichtbar | Erlaubt | Rahmen | VScroll; // Der Normale Style einer Bild Zeichnung Bestehend aus HScroll, Sichtbar, Erlaubt, Rahmen, VScroll
- };
- private:
- Bild *bild;
- // Verarbeitet ein Maus Ereignis. Wird vom Framework automatisch aufgerufen.
- // me: Das Ereignis
- __declspec( dllexport ) void doMausEreignis( MausEreignis &me, bool userRet ) override;
- public:
- // Konstruktor
- __declspec( dllexport ) BildZ();
- // Destruktor
- __declspec( dllexport ) virtual ~BildZ();
- // Setzt einen Zeiger auf das Bild, was angezeigt werden soll
- // b: Das Bild
- __declspec( dllexport ) void setBildZ( Bild *b );
- // Setzt das Bild, was angezeigt werden soll. Der Inhalt des Bildes wird Kopiert
- // b: Das Bild
- __declspec( dllexport ) void setBild( Bild *b );
- // Updated den Zeichenhintergrund
- // tickVal: Die vergangene Zeit in Sekunden, die seit dem Letzten Aufruf dieser Funktion verstrichen ist
- // return: 1, wenn das Bild neu gezeichnet werden muss. 0 sonnst
- __declspec( dllexport ) bool tick( double tickVal ) override;
- // Zeichnet die Zeihnung in ein bestimmtes Bild
- // zRObj: Das Bild, in das gezeichnet werden soll
- __declspec( dllexport ) void render( Bild &zRObj ) override;
- // Gibt das angezeigte Bild zurück
- __declspec( dllexport ) Bild *getBild() const;
- // Gbt das angezeigte Bild ohne erhöhten Reference Counter zurück
- __declspec( dllexport ) Bild *zBild() const;
- // Kopiert die Komplette Zeichnung, so dass sie ohne Effekt auf das Original verändert werden kann
- __declspec( dllexport ) Zeichnung *dublizieren() const override;
- };
- #ifdef WIN32
- // Lädt ein Bild aus einer .bmp, .jpg, .gif oder .png Datei
- // pfad: Der Pfad zur Bilddatei
- // zError: Ein Zeiger auf ein Text Objekt, in dem ein möglicher Fehler zurückgegeben wird
- // return: Das geladene Bild
- __declspec( dllexport ) Bild *ladeBild( char *pfad, Text *zError );
- #endif
- }
- #endif
|