Knopf.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. #ifndef Knopf_H
  2. #define Knopf_H
  3. #include "TextFeld.h"
  4. namespace Framework
  5. {
  6. class TextFeld; //! TextFeld.h
  7. class AlphaFeld; //! AlphaFeld.h
  8. class Text; //! Text.h
  9. class Schrift; //! Schrift.h
  10. class Rahmen; //! Rahmen.h
  11. class LTDBDatei; //! Dateisystem.h
  12. class Knopf; //! aus dieser Datei
  13. class KontrollKnopf; //! aus dieser Datei
  14. class TextRenderer;
  15. //! Eine Zeichnung des 2D GUI Frameworks, die einen Knopf zeichnet, den der Benutzer drücken kann
  16. class Knopf : public TextFeld
  17. {
  18. public:
  19. class Style : public ZeichnungHintergrund::Style
  20. {
  21. public:
  22. const static __int64 MehrfarbigText = 0x0010000; //! Legt fest, ob der Text des Knopfes mehrere Farben haben darf
  23. const static __int64 KlickFarbe = 0x0020000; //! Legt fest, ob der Knopf während er gedrückt wird eine Hintergrund Farbe hat
  24. const static __int64 KlickBild = 0x0040000; //! Legt fest, ob der Knopf während er gedrückt wird ein Bild als Hintergrund hat
  25. const static __int64 KlickAlpha = 0x0080000; //! Legt fest, ob der Knopf während er gedrückt wird für das Zeichnen des Hintergrundes alpha blending verwendet
  26. const static __int64 KlickBuffer = 0x0100000; //! Legt fest, ob der Knopf während er gedrückt wird einen Farbübergang besitzt
  27. const static __int64 Normal = Sichtbar | Erlaubt | Rahmen | Buffered | MehrfarbigText | KlickBuffer; //! Vereint di Flags Sichtbar, Erlaubt, Rahmen, Buffered, MehrfarbigText, KlickBuffer
  28. };
  29. private:
  30. int klickFarbe;
  31. Bild *klickBild;
  32. AlphaFeld *klickBuffer;
  33. int klickIndex;
  34. //! Verarbeitet Maus Nachrichten
  35. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  36. DLLEXPORT void doMausEreignis( MausEreignis &me, bool userRet ) override;
  37. public:
  38. //! Konstruktor
  39. DLLEXPORT Knopf();
  40. //! Destruktor
  41. DLLEXPORT virtual ~Knopf();
  42. //! Setzt die Farbe, die als Hintergrund verwendet wird, wenn der Knopf gedrückt wird
  43. //! \param fc Die Farbe im A8R8G8B8 Format
  44. DLLEXPORT void setKlickFarbe( int fc );
  45. //! Setzt das Hintergrund Bild durch kopieren, das verwendet wird, wenn der Knopf gedrückt wird
  46. //! \param bild Das Bild, das kopiert werden soll
  47. DLLEXPORT void setKlickBild( Bild *bild );
  48. //! Setzt einen Zeiger auf das Hintergrund Bild, das verwendet wird, wenn der Knopf gedrückt wird
  49. //! \param bild Das neue Bild
  50. DLLEXPORT void setKlickBildZ( Bild *bild );
  51. //! Setzt einen Zeiger auf den Farbübergang, der verwendet wird, wenn der Knopf gedrückt wird
  52. //! \param af Der neue Farbübergang
  53. DLLEXPORT void setKBZ( AlphaFeld *af );
  54. //! Setzt die Stärke des Farbübergangs, der verwendet wird, wenn der Knopf gedrückt wird
  55. //! \param st Die Stärke
  56. DLLEXPORT void setKBStrength( int st );
  57. //! Setzt die Farbe des Farbübergangs, der verwendet wird, wenn der Knopf gedrückt wird
  58. //! \param fc Die Farbe im A8R8G8B8 Format
  59. DLLEXPORT void setKBFarbe( int fc );
  60. //! Verarbeitet Maus Nachrichten
  61. //! \param te Das Ereignis, was durch die Tastatur Eingabe ausgelößt wurde
  62. DLLEXPORT void doTastaturEreignis( TastaturEreignis &te ) override;
  63. //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  64. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  65. DLLEXPORT void render( Bild &zRObj ) override;
  66. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die verwendet wird, wenn der Knopf gedrückt wird
  67. DLLEXPORT int getKlickFarbe() const;
  68. //! Gibt das Hintergrund Bild zurück, das verwendet wird, wenn der Knopf gedrückt wird
  69. DLLEXPORT Bild *getKlickBild() const;
  70. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück, das verwendet wird, wenn der Knopf gedrückt wird
  71. DLLEXPORT Bild *zKlickBild() const;
  72. //! Gibt den Farbübergang zurück, der verwendet wird, wenn der Knopf gedrückt wird
  73. DLLEXPORT AlphaFeld *getKB() const;
  74. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der verwendet wird, wenn der Knopf gedrückt wird
  75. DLLEXPORT AlphaFeld *zKB() const;
  76. //! Gibt die Farbe des Farbübergangs im A8R8G8B8 Format zurück, der verwendet wird, wenn der Knopf gedrückt wird
  77. DLLEXPORT int getKBFarbe() const;
  78. //! Gibt die Stärke des Farbübergangs zurück, der verwendet wird, wenn der Knopf gedrückt wird
  79. DLLEXPORT int getKBStrength() const;
  80. //! Kopiert den Knopf, so das er ohne auswirkungen auf das Original verändert werden kann
  81. DLLEXPORT Zeichnung *dublizieren() const override;
  82. };
  83. //! Eine Zeichnung des 2D GUI Frameworks, die einen Auswählbares Kästchen mit beschriftung zeichnet
  84. class KontrollKnopf : public ZeichnungHintergrund
  85. {
  86. public:
  87. class Style : public ZeichnungHintergrund::Style
  88. {
  89. public:
  90. const static __int64 Selected = 0x1000000; //! Legt fest, ob das Kästchen ausgewählt ist
  91. const static __int64 MehrfarbigText = 0x001000; //! Legt Fest, ob der Beschriftungs Text mehrfarbig sein kann
  92. const static __int64 KlickFarbe = 0x002000; //! Legt fest, ob das Kästchen während ed gedrückt wird eine Hintergrund Farbe hat
  93. const static __int64 KlickBild = 0x004000; //! Legt fest, ob das Kästchen beim Klicken ein Hintergrund Bild hat
  94. const static __int64 KlickAlpha = 0x008000; //! Legt fest, ob für den Hintergrund des Kästchens beim Klicken alpha blending verwendet wird
  95. const static __int64 KlickBuffer = 0x010000; //! Legt fest, ob das Kästchen beim Klicken einen Farbübergang hat
  96. const static __int64 SelectFarbe = 0x020000; //! Legt fest, ob das Kästchen wärhend es ausgewählt ist eine Hintergrund Farbe hat
  97. const static __int64 SelectBild = 0x040000; //! Legt fest, ob das Kästchen wärhend es ausgewählt ist ein Hintergrund Bild hat
  98. const static __int64 SelectAlpha = 0x080000; //! Legt fest, ob das Kästchen wärhend es ausgewählt ist für den Hintergrund alpha blending verwendet
  99. const static __int64 SelectBuffer = 0x100000; //! Legt fest, ob das Kästchen wärhend es ausgewählt ist einen Farbübergang hat
  100. const static __int64 SelectText = 0x200000; //! Legt fest, ob das Kästchen wärhend es ausgewählt ist eine andere Beschriftung hat
  101. const static __int64 MehrzeiligText = 0x400000; //! Legt fest, ob das Kästchen eine Mehrzeilige Beschriftung haben kann
  102. const static __int64 MausKlick = 0x800000; //! Legt fest, ob gerade mit der Maus auf das Kästchen geklickt wird. (Wird vom Kästchen selbst verwaltet)
  103. const static __int64 Normal = Sichtbar | Erlaubt | Rahmen | KlickBuffer; //! Vereint die Flags Sichtbar, Erlaubt, Rahmen, KlickBuffer
  104. };
  105. private:
  106. Text *txt;
  107. Text *sTxt;
  108. int sBgF;
  109. int kBgF;
  110. Bild *sBgB;
  111. Bild *kBgB;
  112. AlphaFeld *sAf;
  113. AlphaFeld *kAf;
  114. Bild *kasten;
  115. Bild *sKasten;
  116. TextRenderer *textRd;
  117. int sF;
  118. int sGr;
  119. //! Verarbeitet Maus Nachrichten
  120. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  121. DLLEXPORT void doMausEreignis( MausEreignis &me, bool userRet ) override;
  122. public:
  123. //! Konstruktor
  124. DLLEXPORT KontrollKnopf();
  125. //! Destruktor
  126. DLLEXPORT virtual ~KontrollKnopf();
  127. //! Setzt den Zeiger auf den Beschriftungs Text
  128. //! \param txt Der Text
  129. DLLEXPORT void setTextZ( Text *txt );
  130. //! Setzt den Beschriftungs Text
  131. //! \param txt Der Text
  132. DLLEXPORT void setText( Text *txt );
  133. //! Setzt den Beschriftungs Text
  134. //! \param txt Der Text
  135. DLLEXPORT void setText( const char *txt );
  136. //! Setzt den Zeiger auf den Beschriftungs Text, der angezeigt wird, während das Kästchen ausgewählt ist
  137. //! \param txt Der Text
  138. DLLEXPORT void setSTextZ( Text *txt );
  139. //! Setzt den Beschriftungs Text, der angezeigt wird, während das Kästchen ausgewählt ist
  140. //! \param txt Der Text
  141. DLLEXPORT void setSText( Text *txt );
  142. //! Setzt den Beschriftungs Text, der angezeigt wird, während das Kästchen ausgewählt ist
  143. //! \param txt Der Text
  144. DLLEXPORT void setSText( const char *txt );
  145. //! Setzt den verwendeten TextRenderer
  146. //! \param textRd Der Textrenderer
  147. DLLEXPORT void setTextRendererZ( TextRenderer *textRd );
  148. //! Setzt die Schrift, die für die Beschriftung verwendet werden soll
  149. //! \param schrift Die Schrift
  150. DLLEXPORT void setSchriftZ( Schrift *schrift );
  151. //! Setzt die Farbe der Schrift, die für die Beschriftung verwendet werden soll
  152. //! \param f Die Farbe im A8R8G8B8 Format
  153. DLLEXPORT void setSFarbe( int f );
  154. //! Setzt die Größe der Schrift, die für die Beschriftung verwendet werden soll
  155. //! \param f Die Höhe einer Zeile in Pixeln
  156. DLLEXPORT void setSSize( int gr );
  157. //! Setzt die Hintergrund Farbe, die verwendet wird, während das Kästchen ausgewählt ist
  158. //! \param f Die Farbe im A8R8G8B8 Format
  159. DLLEXPORT void setSBgFarbe( int f );
  160. //! Setzt die Hintergrund Farbe, die verwendet wird, während auf das Kästchen geklickt wird
  161. //! \param f Die Farbe im A8R8G8B8 Format
  162. DLLEXPORT void setKBgFarbe( int f );
  163. //! Setzt einen Zeiger auf das Hintergrund Bild, das verwendet wird, während das Kästchen ausgewählt ist
  164. //! \param b Das Bild
  165. DLLEXPORT void setSBgBildZ( Bild *b );
  166. //! Setzt das Hintergrund Bild durch kopieren, das verwendet wird, während das Kästchen ausgewählt ist
  167. //! \param b Das Bild, das kopiert werden soll
  168. DLLEXPORT void setSBgBild( Bild *b );
  169. //! Setzt einen Zeiger auf das Hintergrund Bild, das verwendet wird, während auf das Kästchen geklickt wird
  170. //! \param b Das Bild
  171. DLLEXPORT void setKBgBildZ( Bild *b );
  172. //! Setzt das Hintergrund Bild durch kopieren, das verwendet wird, während auf das Kästchen geklickt wird
  173. //! \param b Das Bild, das kopiert werden soll
  174. DLLEXPORT void setKBgBild( Bild *b );
  175. //! Setzt einen Zeiger auf den Farbübergang, der verwendet wird, während das Kästchen ausgewählt ist
  176. //! \param af Der Farbübergang
  177. DLLEXPORT void setSAlphaFeldZ( AlphaFeld *af );
  178. //! Setzt die Farbe des Farbübergangs, der verwendet wird, während das Kästchen ausgewählt ist
  179. //! \param f Die Farbe im A8R8G8B8 Format
  180. DLLEXPORT void setSAFFarbe( int f );
  181. //! Setzt die Stärke des Farbübergangs, der verwendet wird, während das Kästchen ausgewählt ist
  182. //! \param st Die Stärke
  183. DLLEXPORT void setSAFStrength( int st );
  184. //! Setzt einen Zeiger auf den Farbübergang, der verwendet wird, während auf das Kästchen geklickt wird
  185. //! \param af Der Farbübergang
  186. DLLEXPORT void setKAlphaFeldZ( AlphaFeld *af );
  187. //! Setzt die Farbe des Farbübergangs, der verwendet wird, während auf das Kästchen geklickt wird
  188. //! \param f Die Farbe im A8R8G8B8 Format
  189. DLLEXPORT void setKAFFarbe( int f );
  190. //! Setzt die Stärke des Farbübergangs, der verwendet wird, während auf das Kästchen geklickt wird
  191. //! \param st Die Stärke
  192. DLLEXPORT void setKAFStrength( int st );
  193. //! Lädt die Bilder "kasten.gif" und "skasten.gif" aus einer LTDB Datei
  194. //! Das Bild kasten.gif wird gezeichnet, wenn das Kästchen nicht ausgewählt ist. Das Bild skasten.gif wird gezeichnet, wenn das Kästchen ausgewählt wird
  195. //! \param zDat Die LTDB Datei
  196. DLLEXPORT void loadData( LTDBDatei *zDat );
  197. //! Lädt die Bilder "kasten.gif" und "skasten.gif" aus einer LTDB Datei
  198. //! Das Bild kasten.gif wird gezeichnet, wenn das Kästchen nicht ausgewählt ist. Das Bild skasten.gif wird gezeichnet, wenn das Kästchen ausgewählt wird
  199. //! \param ltdb Der Pfad zur LTDB Datei
  200. DLLEXPORT void loadData( const char *ltdb );
  201. //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  202. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  203. DLLEXPORT void render( Bild &zRObj ) override;
  204. //! Gibt die beschriftung zurück
  205. DLLEXPORT Text *getText() const;
  206. //! Gibt die beschriftung ohne erhöhten Reference Counter zurück
  207. DLLEXPORT Text *zText() const;
  208. //! Gibt die beschriftung zurück, die verwendet wird, während das Kästchen ausgewählt ist
  209. DLLEXPORT Text *getSText() const;
  210. //! Gibt die beschriftung ohne erhöhten Reference Counter zurück, die verwendet wird, während das Kästchen ausgewählt ist
  211. DLLEXPORT Text *zSText() const;
  212. //! Gibt die verwendete Schrift zurück
  213. DLLEXPORT Schrift *getSchrift() const;
  214. //! Gibt die verwendete Schrift ohne Reference Counter zurück
  215. DLLEXPORT Schrift *zSchrift() const;
  216. //! Gibt die Schrift Farbe im A8R8G8B8 Format zurück
  217. DLLEXPORT int getSFarbe() const;
  218. //! Gibt die Schrift Größe zurück
  219. DLLEXPORT int getSSize() const;
  220. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die verwendet wird, während das Kästchen ausgewählt ist
  221. DLLEXPORT int getSBgFarbe() const;
  222. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die verwendet wird, während auf das Kästchen geklickt wird
  223. DLLEXPORT int getKBgFarbe() const;
  224. //! Gibt das Hintergrund Bild zurück, das verwendet wird, während das Kästchen ausgewählt ist
  225. DLLEXPORT Bild *getSBgBild() const;
  226. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück, das verwendet wird, während das Kästchen ausgewählt ist
  227. DLLEXPORT Bild *zSBgBild() const;
  228. //! Gibt das Hintergrund Bild zurück, das verwendet wird, während auf das Kästchen geklickt wird
  229. DLLEXPORT Bild *getKBgBild() const;
  230. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück, das verwendet wird, während auf das Kästchen geklickt wird
  231. DLLEXPORT Bild *zKBgBild() const;
  232. //! Gibt den Farbübergang zurück, der verwendet wird, während das Kästchen ausgewählt ist
  233. DLLEXPORT AlphaFeld *getSAlphaFeld() const;
  234. //! Gibt den Farbübergang ohne erhöhten Reference COunter zurück, der verwendet wird, während das Kästchen ausgewählt ist
  235. DLLEXPORT AlphaFeld *zSAlphaFeld() const;
  236. //! Gibt den Farbübergang zurück, der verwendet wird, während auf das Kästchen geklickt wird
  237. DLLEXPORT AlphaFeld *getKAlphaFeld() const;
  238. //! Gibt den Farbübergang ohne erhöhten Reference COunter zurück, der verwendet wird, während auf das Kästchen geklickt wird
  239. DLLEXPORT AlphaFeld *zKAlphaFeld() const;
  240. };
  241. }
  242. #endif