Zeichnung.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. #ifndef Zeichnung_H
  2. #define Zeichnung_H
  3. #include "Punkt.h"
  4. namespace Framework
  5. {
  6. struct VScrollData; // Scroll.h
  7. struct HScrollData; // Scroll.h
  8. struct MausEreignis; // MausEreignis.h
  9. struct TastaturEreignis; // TastaturEreignis.h
  10. class Bild; // Bild.h
  11. class Zeichnung; // Aus dieser Datei
  12. class ZeichnungArray; // Aus dieser Datei
  13. class ToolTip; // ToopTip.h
  14. class Bildschirm; // Bildschirm.h
  15. class LRahmen; // Rahmen.h
  16. class AlphaFeld; // AlphaFeld.h
  17. class VScrollBar; // Scroll.h
  18. class HScrollBar; // Scroll.h
  19. class Zeichnung
  20. {
  21. public:
  22. class Style
  23. {
  24. public:
  25. const static __int64 Sichtbar = 0x00001;
  26. const static __int64 Erlaubt = 0x00002;
  27. const static __int64 Fokus = 0x00040;// 0x80
  28. };
  29. protected:
  30. Punkt pos;
  31. Punkt gr;
  32. void *makParam;
  33. void *takParam;
  34. bool( *Mak )( void *, void *, MausEreignis );
  35. bool( *Tak )( void *, void *, TastaturEreignis );
  36. void *nmakParam;
  37. void *ntakParam;
  38. bool( *nMak )( void *, void *, MausEreignis );
  39. bool( *nTak )( void *, void *, TastaturEreignis );
  40. bool mausIn;
  41. CRITICAL_SECTION cs;
  42. ToolTip *toolTip;
  43. __int64 style;
  44. bool rend;
  45. public:
  46. // Konstruktor
  47. __declspec( dllexport ) Zeichnung();
  48. // Destruktor
  49. __declspec( dllexport ) ~Zeichnung();
  50. // nicht constant
  51. __declspec( dllexport ) void setRender();
  52. __declspec( dllexport ) void setToolTipText( const char *txt, Bildschirm *zScreen );
  53. __declspec( dllexport ) void lockZeichnung();
  54. __declspec( dllexport ) void unlockZeichnung();
  55. __declspec( dllexport ) void setMausEreignisParameter( void *p ); // setzt den Parameter vom Maus Ereignis
  56. __declspec( dllexport ) void setTastaturEreignisParameter( void *p ); // setzt den Parameter vom Tastatur Ereignis
  57. __declspec( dllexport ) void setMausEreignis( bool( *ak )( void *, void *, MausEreignis ) ); // setzt das Maus Ereignis
  58. __declspec( dllexport ) void setTastaturEreignis( bool( *ak )( void *, void *, TastaturEreignis ) ); // setzt das TastaturEreignis
  59. __declspec( dllexport ) void setNMausEreignisParameter( void *p ); // setzt den Parameter vom Maus Ereignis
  60. __declspec( dllexport ) void setNTastaturEreignisParameter( void *p ); // setzt den Parameter vom Tastatur Ereignis
  61. __declspec( dllexport ) void setNMausEreignis( bool( *ak )( void *, void *, MausEreignis ) ); // setzt das Maus Ereignis
  62. __declspec( dllexport ) void setNTastaturEreignis( bool( *ak )( void *, void *, TastaturEreignis ) ); // setzt das TastaturEreignis
  63. __declspec( dllexport ) virtual void doMausEreignis( MausEreignis &me ); // ruft Mak auf
  64. __declspec( dllexport ) virtual void doTastaturEreignis( TastaturEreignis &te ); // ruft Tak auf
  65. __declspec( dllexport ) virtual bool tick( double tickval ); // tick
  66. __declspec( dllexport ) void setPosition( const Punkt &pos ); // setzt die position
  67. __declspec( dllexport ) void setX( int xPos ); // setzt die x position
  68. __declspec( dllexport ) void setY( int yPos ); // setzt die y position
  69. __declspec( dllexport ) void setGröße( const Punkt &gr ); // setzt die Größe
  70. __declspec( dllexport ) void setPosition( int x, int y ); // setzt die position
  71. __declspec( dllexport ) void setGröße( int x, int y ); // setzt die Größe
  72. __declspec( dllexport ) void setStyle( __int64 style ); // setzt den Style des Zeichnunges
  73. __declspec( dllexport ) void setStyle( __int64 style, bool add_löschen );
  74. __declspec( dllexport ) void addStyle( __int64 style );
  75. __declspec( dllexport ) void löscheStyle( __int64 style );
  76. __declspec( dllexport ) virtual void render( Bild &zRObj ); // zeichnet nach zRObj
  77. // constant
  78. __declspec( dllexport ) bool hatMausEreignis() const; // prüft, ob Mak gesetzt ist
  79. __declspec( dllexport ) bool hatTastaturEreignis() const; // prüft, ob Tak gesetzt ist
  80. __declspec( dllexport ) const Punkt &getPosition() const; // gibt die Position zurück
  81. __declspec( dllexport ) const Punkt &getGröße() const; // gibt die Größe zurück
  82. __declspec( dllexport ) int getBreite() const; // gibt die Breite zurück
  83. __declspec( dllexport ) int getHöhe() const; // gibt die Höhe zurück
  84. __declspec( dllexport ) int getX() const; // gibt X zurück
  85. __declspec( dllexport ) int getY() const; // gibt Y zurück
  86. __declspec( dllexport ) ToolTip *getToolTip() const; // gibt den ToolTip Text
  87. __declspec( dllexport ) ToolTip *zToolTip() const;
  88. __declspec( dllexport ) inline bool hatStyle( __int64 style ) const; // prüft, ob style vorhanden
  89. __declspec( dllexport ) inline bool hatStyleNicht( __int64 style ) const; // prüft, ob style nicht vorhanden
  90. __declspec( dllexport ) virtual Zeichnung *dublizieren() const; // Erzeugt eine Kopie des Zeichnungs
  91. // reference Counting
  92. };
  93. class ZeichnungArray// Array von Zeichnungen
  94. {
  95. private:
  96. Zeichnung *This;
  97. ZeichnungArray *next;
  98. int index;
  99. public:
  100. // Konstruktor
  101. __declspec( dllexport ) ZeichnungArray();
  102. // Destruktor
  103. __declspec( dllexport ) ~ZeichnungArray();
  104. // nicht const
  105. __declspec( dllexport ) bool addZeichnung( Zeichnung *obj ); // Fügt ein Zeichnung hinzu
  106. __declspec( dllexport ) bool removeZeichnung( Zeichnung *obj ); // Entfernt ein Zeichnung
  107. __declspec( dllexport ) bool removeZeichnung( int i ); // Entfernt das i-te Zeichnung
  108. __declspec( dllexport ) void setNext0(); // Setzt das nächste Zeichnung zu 0
  109. __declspec( dllexport ) void updateIndex( int i ); // aktualisiert die Index variable
  110. // constant
  111. __declspec( dllexport ) ZeichnungArray *getNext() const; // gibt das nächste Zeichnung zurück
  112. __declspec( dllexport ) Zeichnung *getZeichnung( int i ) const; // gibt das i-te Zeichnung zurück
  113. __declspec( dllexport ) Zeichnung *getZeichnung() const; // gibt das Zeichnung zurück
  114. __declspec( dllexport ) int getIndex() const; // Gibt den Index zurück
  115. __declspec( dllexport ) void sendMausAll( MausEreignis &me ) const; // sendet me an alle volgenden Zeichnunge
  116. __declspec( dllexport ) void sendTastaturAll( TastaturEreignis &te ) const; // sendet te an alle volgenden Zeichnunge
  117. __declspec( dllexport ) void render( Bild &zRObj ); // Zeichnet alle nach zRObj
  118. __declspec( dllexport ) bool tick( double tickval ); // tick
  119. };
  120. class ZeichnungHintergrund : public Zeichnung
  121. {
  122. public:
  123. class Style : public Zeichnung::Style
  124. {
  125. public:
  126. const static __int64 Rahmen = 0x00010; // 0x4
  127. const static __int64 Hintergrund = 0x00020; // 0x8
  128. const static __int64 HAlpha = 0x00040; // 0x10
  129. const static __int64 HBild = 0x00080; // 0x20
  130. const static __int64 Buffered = 0x00100; // 0x40
  131. const static __int64 VScroll = 0x00200; // Wenn dieser Flag gesetzt wird, erscheint eine Scrollbar am rechten Rand
  132. const static __int64 HScroll = 0x00400; // Wenn dieser Flag gesetzt wird, erscheint eine Scrollbar am unteren Rand
  133. };
  134. protected:
  135. int hintergrundFarbe;
  136. LRahmen *rahmen;
  137. Bild *hintergrundBild;
  138. AlphaFeld *hintergrundFeld;
  139. VScrollBar *vertikalScrollBar;
  140. HScrollBar *horizontalScrollBar;
  141. Punkt innenPosition;
  142. Punkt innenGröße;
  143. public:
  144. // Konstruktor
  145. __declspec( dllexport ) ZeichnungHintergrund();
  146. // Destruktor
  147. __declspec( dllexport ) ~ZeichnungHintergrund();
  148. // Setzt das Hintergrund Bild (benötigt Flag zum Zeichnen: Hintergrund, HBild)
  149. // bild: Das Bild wird kopiert und als Hintergrundbild verwendet
  150. __declspec( dllexport ) void setHintergrundBild( Bild *bild );
  151. // Setzt einen Zeiger auf das Hintergrund Bild (benötigt Flag zum Zeichnen: Hintergrund)
  152. // bild: Das Bild wid ohne es zu kopieren verwendet
  153. __declspec( dllexport ) void setHintergrundBildZ( Bild *bild );
  154. // Setzt die Hintergrund Farbe (benötigt Flag zum Zeichnen: Hintergrund)
  155. // fc: Die Hintergrundfarbe im A8R8G8B8 Format
  156. __declspec( dllexport ) void setHintergrundFarbe( int fc );
  157. // Setzt einen Zeiger auf das AlphaFeld (benötigt Flag zum Zeichnen: Buffered)
  158. // buff: Das AlphaFeld, das über den Hintergrund gezeichnet werden soll
  159. __declspec( dllexport ) void setAlphaFeldZ( AlphaFeld *buff );
  160. // Setzt die Stärke des AlphaFeldes (benötigt Flag zum Zeichnen: Buffered)
  161. // st: Die Stärke des AlphaFeldes, welches über dem Hintergrund gezeichnet werden soll
  162. __declspec( dllexport ) void setAlphaFeldStärke( int st );
  163. // Setzt die Farbe des AlphaFeldes (benötigt Flag zum Zeichnen: Buffered)
  164. // fc: Die Farbe des AlphaFeldes, welches über dem Hintergrund gezeichnet werden soll
  165. __declspec( dllexport ) void setAlphaFeldFarbe( int fc );
  166. // Setzt einen Zeiger zu dem Linien Rahmen, der um das TextFeld gezeichnet werden soll (benötigt Flag zum Zeichnen: Rahmen)
  167. // ram: Der Rahmen
  168. __declspec( dllexport ) void setLinienRahmenZ( LRahmen *ram );
  169. // Setzt die Breite des Linien Rahmens (benötigt Flag zum Zeichnen: Rahmen)
  170. // br: Die Breite in Pixeln
  171. __declspec( dllexport ) void setLinienRahmenBreite( int br );
  172. // Setzt die Farbe des Linien Rahmens (benötigt Flag zum Zeichnen: Rahmen)
  173. // fc: Die Farbe im A8R8G8B8 Format
  174. __declspec( dllexport ) void setLinienRahmenFarbe( int fc );
  175. // Setzt die Scrollgeschwindigkeit der vertikalen ScrollBar (benötigt Flag zum Zeichnen: VScroll)
  176. // ks: Die Scrollgeschwindigkeit in Pixeln für jeden Maus Klick
  177. __declspec( dllexport ) void setVertikalKlickScroll( int ks );
  178. // Scrollt an eine Bestimmte Stelle bei der vertikalen ScrollBar (benötigt Flag zum Zeichnen: VScroll)
  179. // pos: Das Scroll Offset in Pixeln.
  180. __declspec( dllexport ) void setVertikalScrollPos( int pos );
  181. // Setzt die Farbe der vertikalen ScrollBar (benötigt Flag zum Zeichnen: VScroll)
  182. // f: Die Fordergrundfarbe der ScrollBar im A8R8G8B8 Format
  183. // bgF: Die Hintergrundfarbe der ScrollBar im A8R8G8B8 Format
  184. __declspec( dllexport ) void setVertikalScrollFarbe( int f, int bgF );
  185. // Setzt die Scrollgeschwindigkeit der horizontalen ScrollBar (benötigt Flag zum Zeichnen: HScroll)
  186. // ks: Die Scrollgeschwindigkeit in Pixeln für jeden Maus Klick
  187. __declspec( dllexport ) void setHorizontalKlickScroll( int ks );
  188. // Scrollt an eine Bestimmte Stelle bei der horizontalen ScrollBar (benötigt Flag zum Zeichnen: HScroll)
  189. // pos: Das Scroll Offset in Pixeln.
  190. __declspec( dllexport ) void setHorizontalScrollPos( int pos );
  191. // Setzt die Farbe der horizontalen ScrollBar (benötigt Flag zum Zeichnen: HScroll)
  192. // f: Die Fordergrundfarbe der ScrollBar im A8R8G8B8 Format
  193. // bgF: Die Hintergrundfarbe der ScrollBar im A8R8G8B8 Format
  194. __declspec( dllexport ) void setHorizontalScrollFarbe( int f, int bgF );
  195. // Updated den Zeichenhintergrund
  196. // tickVal: Die vergangene Zeit in Sekunden, die seit dem Letzten Aufruf dieser Funktion verstrichen ist
  197. // return: 1, wenn das Bild neu gezeichnet werden muss. 0 sonnst
  198. __declspec( dllexport ) bool tick( double tickVal ) override;
  199. // Zeichnet den Hintergrund eines Zeichnunges nach rObj
  200. __declspec( dllexport ) void render( Bild &rObj ) override;
  201. // Gibt das Hintergrundbild zurück.
  202. // return: 0, falls kein Hintergrundbild verwendet wird
  203. __declspec( dllexport ) Bild *getHintergrundBild() const;
  204. // Gibt das Hintergrundbild ohne erhöhten reference Counter zurück.
  205. // return: 0, falls kein Hintergrundbild verwendet wird
  206. __declspec( dllexport ) Bild *zHintergrundBild() const;
  207. // Gibt die Hintergrundfarbe im A8R8G8B8 Format zurück
  208. __declspec( dllexport ) int getHintergrundFarbe() const;
  209. // Gibt das AlphaFeld zurück, das über den Hintergrund gezeichnet wird.
  210. // return: 0, falls das AlphaFeld nicht definiert wurde
  211. __declspec( dllexport ) AlphaFeld *getAlphaFeld() const;
  212. // Gibt das AlphaFeld ohne erhöhten Reference Counter zurück, das über den Hintergrund gezeichnet wird.
  213. // return: 0, falls das AlphaFeld nicht definiert wurde
  214. __declspec( dllexport ) AlphaFeld *zAlphaFeld() const;
  215. // Git die Stärke des Alphafeldes zurück
  216. __declspec( dllexport ) int getAlphaFeldStärke() const;
  217. // Gibt die Farbe des Alphafedes im A8R8G8B8 Format zurück
  218. __declspec( dllexport ) int getAlphaFeldFarbe() const;
  219. // Gibt den Rahmen zurück
  220. // return: 0, falls kein Rahmen definiert wurde
  221. __declspec( dllexport ) LRahmen *getLinienRahmen() const;
  222. // Gibt den Rahmen ohne erhöhten Reference Counter zurück
  223. // return: 0, falls kein Rahmen definiert wurde
  224. __declspec( dllexport ) LRahmen *zLinienRahmen() const;
  225. // Gibt die Breite des Rahmens in Pixeln zurück
  226. __declspec( dllexport ) int getLinienRahmenBreite() const;
  227. // Gibt die Farbe des Rahmens im A8R8G8B8 Format zurück
  228. __declspec( dllexport ) int getLinienRahmenFarbe() const;
  229. // Gibt die Scroll geschwindigkeit der vertikalen Scroll Bar zurück
  230. __declspec( dllexport ) int getVertikalKlickScroll() const;
  231. // Gibt die Scroll Position der vertikalen Scroll Bar zurück
  232. __declspec( dllexport ) int getVertikalScrollPos() const;
  233. // Gibt die Farbe der vertikalen Scroll Bar im A8R8G8B8 Format zurück
  234. __declspec( dllexport ) int getVertikalScrollFarbe() const;
  235. // Gibt die Hintergrundfarbe der vertikalen Scroll Bar im A8R8G8B8 Format zurück
  236. __declspec( dllexport ) int getVertikalScrollHintergrund() const;
  237. // Gibt die Scroll geschwindigkeit der horizontalen Scroll Bar zurück
  238. __declspec( dllexport ) int getHorizontalKlickScroll() const;
  239. // Gibt die Scroll Position der horizontalen Scroll Bar zurück
  240. __declspec( dllexport ) int getHorizontalScrollPos() const;
  241. // Gibt die Farbe der horizontalen Scroll Bar im A8R8G8B8 Format zurück
  242. __declspec( dllexport ) int getHorizontalScrollFarbe() const;
  243. // Gibt die Hintergrundfarbe der horizontalen Scroll Bar im A8R8G8B8 Format zurück
  244. __declspec( dllexport ) int getHorizontalScrollHintergrund() const;
  245. // Erzeugt eine Kopie der Zeichnung, die ohne Auswirkungen auf das Original verändert werden kann
  246. __declspec( dllexport ) virtual Zeichnung *dublizieren() const;
  247. };
  248. }
  249. #endif