Bild.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #ifndef Bild_H
  2. #define Bild_H
  3. #include "Array.h"
  4. #ifdef WIN32
  5. #include "Zeichnung.h"
  6. #else
  7. #include "Punkt.h"
  8. #endif
  9. namespace Framework
  10. {
  11. class Bild; // aus dieser Datei
  12. #ifdef WIN32
  13. class VScrollBar; // Scroll.h
  14. class HScrollBar; // Scroll.h
  15. struct VScrollData; // Scroll.h
  16. struct HScrollData; // Scroll.h
  17. class LRahmen; // Rahmen.h
  18. struct MausEreignis; // Mausereignis.h
  19. class BildO; // aus dieser Datei
  20. class Text; // Text.h
  21. #endif
  22. class Bild
  23. {
  24. private:
  25. int *fc;
  26. bool delFc;
  27. Punkt größe;
  28. int ref;
  29. Punkt *drawOff;
  30. Punkt *dPosA;
  31. Punkt *dGrößeA;
  32. int doa;
  33. unsigned char *alpha;
  34. int alphaAnzahl;
  35. bool rend;
  36. bool alpha3D;
  37. // privat
  38. inline void alphaPixelP( int x, int y, int f );
  39. inline void alphaPixelP( int &fc, int f );
  40. inline char getOutCode( Punkt& p ) const;
  41. void drawFlatDreieck( int y1, int y2, float m1, float b1, float m2, float b2, int farbe );
  42. void drawFlatDreieckTextur( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
  43. double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur );
  44. void drawFlatDreieckAlpha( int y1, int y2, float m1, float b1, float m2, float b2, int farbe );
  45. void drawFlatDreieckTexturAlpha( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
  46. double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur );
  47. void drawLinieHTextur( Vec2< double > p, double län, Vec2< double > ta, Vec2< double > tb, double txo, double tyo, Bild &textur );
  48. void drawLinieHTexturAlpha( Vec2< double > p, double län, Vec2< double > ta, Vec2< double > tb, double txo, double tyo, Bild &textur );
  49. public:
  50. // Konstruktor
  51. __declspec( dllexport ) Bild( bool options = 0 );
  52. // Destruktor
  53. __declspec( dllexport ) ~Bild();
  54. // Wird dieser Flag gesetzt, so wird beim Alpha Blending wenn die vorheriege Farbe 0 ist nur die neue mit ihrem Alpha Wert kopiert.
  55. // Das ist sinnvoll für die Verwendung im 3DBildschirm, wo das Gezeichnette Bild später mittels Alpha Blending angezeigt wird
  56. __declspec( dllexport ) void setAlpha3D( bool erlaubt );
  57. __declspec( dllexport ) void setAlpha( unsigned char alpha ); // setzt die Transparenz der nachfolgenden Zeichnunge
  58. __declspec( dllexport ) void releaseAlpha(); // Löscht alpha
  59. __declspec( dllexport ) void setPixelBuffer( int *buffer, bool deleteBuffer, int breite, int höhe ); // setzt den Zeiger auf die Pixel des Bildes
  60. __declspec( dllexport ) void neuBild( int breite, int höhe, int füllFarbe ); // erzeugt ein neues Bild mit der Hintergrundfarbe füllFarbe
  61. __declspec( dllexport ) void alphaPixel( int x, int y, int f );
  62. __declspec( dllexport ) void alphaPixel( int i, int f );
  63. __declspec( dllexport ) void alphaPixelDP( int x, int y, int f );
  64. __declspec( dllexport ) void alphaPixelDP( int i, int f );
  65. __declspec( dllexport ) void setPixelDP( int x, int y, int f );
  66. __declspec( dllexport ) void setPixelDP( int i, int f );
  67. __declspec( dllexport ) void setFarbe( int f );
  68. __declspec( dllexport ) void füllRegion( int x, int y, int b, int h, int fc );
  69. __declspec( dllexport ) void alphaRegion( int x, int y, int b, int h, int fc );
  70. __declspec( dllexport ) void drawLinieH( int x, int y, int län, int fc ); // zeichnet eine horizontale Linie
  71. __declspec( dllexport ) void drawLinieV( int x, int y, int län, int fc ); // zeichnet eine vertikale Linie
  72. __declspec( dllexport ) void drawLinieHAlpha( int x, int y, int län, int fc ); // zeichnet eine horizontale Linie
  73. __declspec( dllexport ) void drawLinieVAlpha( int x, int y, int län, int fc ); // zeichnet eine vertikale Linie
  74. __declspec( dllexport ) void drawLinie( Punkt a, Punkt b, int fc ); // zeichnet eine Linie von Punkt( x1, y1 ) nach Punke( x2, y2 )
  75. __declspec( dllexport ) void drawLinieAlpha( Punkt a, Punkt b, int fc );
  76. __declspec( dllexport ) void füllKreis( int xOff, int yOff, int r, int fc ); // zeichnet einen Kreis um Punkt( xOff, yOff ) mit radius r
  77. __declspec( dllexport ) void drawKreis( int xOff, int yOff, int r, int fc ); // zeichnet einen Kreis um Punkt( xOff, yOff ) mit radius r
  78. __declspec( dllexport ) void drawKreisAlpha( int xOff, int yOff, int r, int fc );
  79. __declspec( dllexport ) void drawBild( int x, int y, int br, int hö, Bild &zBild ); // zeichet zBild
  80. __declspec( dllexport ) void alphaBild( int x, int y, int br, int hö, Bild &zBild );
  81. __declspec( dllexport ) void drawBild90( int x, int y, int br, int hö, Bild &zBild ); // Zeichnet ein um 90 Grad nach rchts gedrehtes Bild
  82. __declspec( dllexport ) void alphaBild90( int x, int y, int br, int hö, Bild &zBild );
  83. __declspec( dllexport ) void drawBild180( int x, int y, int br, int hö, Bild &zBild ); // Zeichnet ein um 180 Grad nach rchts gedrehtes Bild
  84. __declspec( dllexport ) void alphaBild180( int x, int y, int br, int hö, Bild &zBild );
  85. __declspec( dllexport ) void drawBild270( int x, int y, int br, int hö, Bild &zBild ); // Zeichnet ein um 270 Grad nach rchts gedrehtes Bild
  86. __declspec( dllexport ) void alphaBild270( int x, int y, int br, int hö, Bild &zBild );
  87. __declspec( dllexport ) void drawBildSkall( int x, int y, int br, int hö, Bild &zBild ); // zeichet zBild Skalliert
  88. __declspec( dllexport ) void alphaBildSkall( int x, int y, int br, int hö, Bild &zBild );
  89. __declspec( dllexport ) void drawDreieck( Punkt a, Punkt b, Punkt c, int farbe ); // füllt eine Dreieck aus
  90. __declspec( dllexport ) void drawDreieckTextur( Punkt a, Punkt b, Punkt c, Punkt ta, Punkt tb, Punkt tc, Bild &textur );
  91. __declspec( dllexport ) void drawDreieckAlpha( Punkt a, Punkt b, Punkt c, int farbe );
  92. __declspec( dllexport ) void drawDreieckTexturAlpha( Punkt a, Punkt b, Punkt c, Punkt ta, Punkt tb, Punkt tc, Bild &textur );
  93. __declspec( dllexport ) bool setDrawOptions( const Punkt &pos, const Punkt &gr ); // setzt die Drawoptionen
  94. __declspec( dllexport ) bool setDrawOptions( int x, int y, int br, int hö );
  95. __declspec( dllexport ) bool setDrawOptionsErzwingen( const Punkt &pos, const Punkt &gr ); // setzt die Drawoptionen
  96. __declspec( dllexport ) bool setDrawOptionsErzwingen( int x, int y, int br, int hö ); // setzt die Drawoptionen
  97. __declspec( dllexport ) void addScrollOffset( int xOff, int yOff ); // setzt ScrollOffset
  98. __declspec( dllexport ) void releaseDrawOptions(); // setzt die Drawoptionen zurück
  99. __declspec( dllexport ) bool getRend();
  100. // constant
  101. __declspec( dllexport ) int *getBuffer()const; // gibt buffer zurück
  102. __declspec( dllexport ) int getPixel( int x, int y ) const; // gibt die Farbe des Pixels(x, y) zurück
  103. __declspec( dllexport ) const Punkt &getGröße() const; // gibt die Größe zurück
  104. __declspec( dllexport ) int getBreite() const; // gibt die Breite zurück
  105. __declspec( dllexport ) int getHöhe() const; // gibt die Höhe zurück
  106. __declspec( dllexport ) unsigned char getAlpha() const; // gibt den Alpha wert zurück
  107. __declspec( dllexport ) const Punkt &getDrawPos() const;
  108. __declspec( dllexport ) const Punkt &getDrawGr() const;
  109. __declspec( dllexport ) const Punkt &getDrawOff() const;
  110. // Reference Counting
  111. __declspec( dllexport ) Bild *getThis();
  112. __declspec( dllexport ) Bild *release();
  113. };
  114. #ifdef WIN32
  115. class BildO : public ZeichnungHintergrund
  116. {
  117. public:
  118. class Style : public ZeichnungHintergrund::Style
  119. {
  120. public:
  121. const static __int64 Alpha = 0x1000;
  122. const static __int64 normal = HScroll | Sichtbar | Erlaubt | Rahmen | VScroll;
  123. };
  124. private:
  125. Bild *bild;
  126. int ref;
  127. public:
  128. // Konstruktor
  129. __declspec( dllexport ) BildO();
  130. // Destruktor
  131. __declspec( dllexport ) ~BildO();
  132. // nicht constant
  133. __declspec( dllexport ) void setBildZ( Bild *b ); // setzt das Bild
  134. __declspec( dllexport ) void setBild( Bild *b );
  135. __declspec( dllexport ) bool tick( double tickVal ) override; // tick
  136. __declspec( dllexport ) void doMausEreignis( MausEreignis &me ) override; // ruft Mak auf
  137. __declspec( dllexport ) void render( Bild &zRObj ) override; // zeichnet nach zRObj
  138. // constant
  139. __declspec( dllexport ) Bild *getBild() const; // gibt das Bild zurück
  140. __declspec( dllexport ) Bild *zBild() const;
  141. __declspec( dllexport ) Zeichnung *dublizieren() const override; // erstellt eine Kopie des Zeichnungs
  142. // Reference Counting
  143. __declspec( dllexport ) BildO *getThis();
  144. __declspec( dllexport ) BildO *release();
  145. };
  146. __declspec( dllexport ) Bild *ladeBild( char *pfad, Text *zError );
  147. #endif
  148. }
  149. #endif