AuswahlBox.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640
  1. #ifndef AuswahlBox_H
  2. #define AuswahlBox_H
  3. #include "Array.h"
  4. #include "Zeichnung.h"
  5. namespace Framework
  6. {
  7. class TextFeld; //! TextFeld.h
  8. class VScrollBar; //! Scroll.h
  9. class Rahmen; //! Rahmen.h
  10. class Knopf; //! Knopf.h
  11. class AlphaFeld; //! AlphaFeld.h
  12. class Text; //! Tet.h
  13. class Schrift; //! Schrift.h
  14. class TextRenderer;
  15. //! Eine Zeichnung des 2D GUI Frameworks. Repräsentiert eine Box, aus der
  16. //! der Nutzer durch ausklappen verschiedene Werte auswählen kann
  17. class AuswahlBox : public ZeichnungHintergrund
  18. {
  19. public:
  20. class Style : public ZeichnungHintergrund::Style
  21. {
  22. public:
  23. static const __int64 FeldRahmen
  24. = 0x000001000; //! Wenn dieser Flag gesetzt ist, hat jeder Wert
  25. //! aus der Liste einen Rahmen
  26. static const __int64 FeldHintergrund
  27. = 0x000002000; //! Wenn dieser Flag gesetzt ist, hat jeder Wert
  28. //! aus der Liste einen Hintergrund
  29. static const __int64 FeldHBild
  30. = 0x000004000; //! Wenn dieser Flag gesetzt ist, hat jeder Wert
  31. //! aus der Liste ein Bild als Hintergrund
  32. static const __int64 FeldHAlpha
  33. = 0x000008000; //! Wenn dieser Flag gesetzt ist, hat jeder Wert
  34. //! aus der Liste einen Transparenten Hintergrund
  35. static const __int64 FeldBuffer
  36. = 0x000010000; //! Wenn dieser Flag gesetzt ist, hat jeder Wert
  37. //! aus der Liste einen Farbübergang
  38. static const __int64 AuswahlHintergrund
  39. = 0x000020000; //! Wenn dieser Flag gesetzt ist, bekommt der
  40. //! Wert, der gerade ausgewählt ist einen
  41. //! Hintergrund
  42. static const __int64 AuswahlHBild
  43. = 0x000040000; //! Wenn dieser Flag gesetzt ist, bekommt der
  44. //! Wert, der gerade ausgewählt ist ein
  45. //! Hintergrundbild
  46. static const __int64 AuswahlHAlpha
  47. = 0x000080000; //! Wenn dieser Flag gesetzt ist, bekommt der
  48. //! Wert, der gerade ausgewählt ist einen
  49. //! transparenten Hintergrund
  50. static const __int64 AuswahlBuffer
  51. = 0x000100000; //! Wenn dieser Flag gesetzt ist, bekommt der
  52. //! Wert, der gerade ausgewählt ist einen
  53. //! Farbübergang
  54. static const __int64 AuswahlRahmen
  55. = 0x000200000; //! Wenn dieser Flag gesetzt ist, bekommt der
  56. //! Wert, der gerade ausgewählt ist einen Rahmen
  57. static const __int64 MultiStyled
  58. = 0x000400000; //! Wenn dieser Flag gesetzt ist, hat jeder Wert
  59. //! seine eigenen Hintergründe unt Rahmen und
  60. //! nicht alle die selben
  61. static const __int64 MaxHeight
  62. = 0x004000000; //! Legt eine maximale Höhe der ausgeklappten
  63. //! Liste fest. Es erscheint automatisch eine
  64. //! Scrollbar wenn mehr Elemente da sind als
  65. //! sichtbar sein können
  66. static const __int64 MausHintergrund
  67. = 0x008000000; //! Wenn dieser Flag gesetzt ist, hat ein
  68. //! Element, wo die Maus drau zeigt, einen
  69. //! Hintergrund
  70. static const __int64 MausHBild
  71. = 0x010000000; //! Wenn dieser Flag gesetzt ist, hat ein
  72. //! Element, wo die Maus drauf zeigt, ein
  73. //! Hintergrundbild
  74. static const __int64 MausHAlpha
  75. = 0x020000000; //! Wenn dieser Flag gesetzt ist, hat ein
  76. //! Element, wo die Maus drauf zeigt, einen
  77. //! transparenten Hintergrund
  78. static const __int64 MausBuffer
  79. = 0x040000000; //! Wenn dieser Flag gesetzt ist, hat ein
  80. //! Element, wo die Maus drauf zeigt, einen
  81. //! Farbübergang
  82. static const __int64 MausRahmen
  83. = 0x080000000; //! Wenn dieser Flag gesetzt ist, hat ein
  84. //! Element, wo die Maus drauf zeigt, einen
  85. //! Rahmen
  86. // const int NachObenAusklappen = 0x100000000;
  87. // const int AutoAusklappRichtung = 0x200000000;
  88. static const __int64 Normal
  89. = Sichtbar | Erlaubt | Rahmen | FeldRahmen | AuswahlBuffer
  90. | AuswahlRahmen | MaxHeight | VScroll | MausRahmen | MausBuffer
  91. | Hintergrund | MEIgnoreParentInside
  92. | MEIgnoreVerarbeitet; //! Normaler Style: Sichtbar, Erlaubt,
  93. //! Rahmen, FeldRahmen, AuswahlBuffer,
  94. //! AuswahlRahmen, MaxHöhe, VScroll,
  95. //! MausRahmen, MausBuffer
  96. };
  97. private:
  98. TextRenderer* textRd;
  99. Array<__int64>* msStyle;
  100. RCArray<TextFeld>* members;
  101. Knopf* ausfahren;
  102. Rahmen* auswRahmen;
  103. int auswBgF;
  104. Bild* auswBgB;
  105. AlphaFeld* auswAf;
  106. RCArray<Rahmen>* msAuswRahmen;
  107. Array<int>* msAuswBgF;
  108. RCArray<Bild>* msAuswBgB;
  109. RCArray<AlphaFeld>* msAuswAf;
  110. Rahmen* mausRahmen;
  111. int mausBgF;
  112. Bild* mausBgB;
  113. AlphaFeld* mausAf;
  114. RCArray<Rahmen>* msMausRahmen;
  115. Array<int>* msMausBgF;
  116. RCArray<Bild>* msMausBgB;
  117. RCArray<AlphaFeld>* msMausAf;
  118. int anzahl;
  119. int auswahl;
  120. bool ausgeklappt;
  121. int ausklappHeight;
  122. int ausklapMaxHeight;
  123. int eintragHeight;
  124. double tickval;
  125. int mausEintrag;
  126. bool scrollAnzeigen;
  127. void* eAkP;
  128. std::function<void(void*, AuswahlBox*, int, int)> eAk;
  129. //! Verarbeitet Maus Nachrichten
  130. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  131. DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
  132. public:
  133. //! Konstruktor
  134. DLLEXPORT AuswahlBox();
  135. //! Destruktor
  136. DLLEXPORT virtual ~AuswahlBox();
  137. //! Setzt den Parameter der Rückruffunktion, die aufgerufen wird, wenn
  138. //! der Benutzer ein neues element auswählt \param p Der Parameter
  139. DLLEXPORT void setEventParam(void* p);
  140. //! Setzt die Rückruffunktion, die Aufgerufen wird, wenn der Benutzer
  141. //! ein neues Element auswählt \param eAk Die Rückruffunktion Aufruf:
  142. //! eAk( parameter, this, 0, auswahlIndex )
  143. DLLEXPORT void setEventAktion(
  144. std::function<void(void*, AuswahlBox*, int, int)> event);
  145. //! Setzt den verwendeten TextRenderer
  146. //! \param textRd Der Textrenderer
  147. DLLEXPORT void setTextRendererZ(TextRenderer* textRd);
  148. //! Setzt die verwendete Schrift
  149. //! \param schrift Die Schrift
  150. DLLEXPORT void setSchriftZ(Schrift* schrift);
  151. //! Fügt der Liste einen auswählbaren Eintrag hinzu. Der erste Eintrag
  152. //! ist zu Beginn automatisch ausgewählt \param txt Der Text des
  153. //! Eintrags
  154. DLLEXPORT void addEintrag(const char* txt);
  155. //! Fügt der Liste einen auswählbaren Eintrag hinzu. Der erste Eintrag
  156. //! ist zu Beginn automatisch ausgewählt \param txt Der Text des
  157. //! Eintrags
  158. DLLEXPORT void addEintrag(Text* txt);
  159. //! Fügt der Liste einen auswählbaren Eintrag hinzu. Der erste Eintrag
  160. //! ist zu Beginn automatisch ausgewählt \param txt Ein Zeiger auf den
  161. //! Eintrag
  162. DLLEXPORT void addEintragZ(TextFeld* txt);
  163. //! Ändert den Text eines Eintrags
  164. //! \param i Der Index des Eintrags
  165. //! \param txt Der neue Text
  166. DLLEXPORT void setEintrag(int i, const char* txt);
  167. //! Ändert den Text eines Eintrags
  168. //! \param i Der Index des Eintrags
  169. //! \param txt Der neue Text
  170. DLLEXPORT void setEintrag(int i, Text* txt);
  171. //! Ändert einen Eintrag
  172. //! \param i Der Index des Eintrags
  173. //! \param txt Ein Zeiger auf den neuen Eintrag
  174. DLLEXPORT void setEintragZ(int i, TextFeld* txt);
  175. //! Löscht einen Eintrag
  176. //! \param i Der Index des Eintrags
  177. DLLEXPORT void removeEintrag(int i);
  178. //! Setzt einen Zeiger auf den Knopf, der zum aus und einklappen der
  179. //! Liste verwendet wird \param ausK Der Knopf
  180. DLLEXPORT void setAusklappKnopfZ(Knopf* ausK);
  181. //! Setzt einen Zeiger auf einen Rahmen, der für einen bestimmten
  182. //! Eintrag benutzt wird \param i Der Index des Eintrags \param rahmen
  183. //! Der Rahemn
  184. DLLEXPORT void setEintragRahmenZ(int i, Rahmen* rahmen);
  185. //! Setzt die Farbe eines Rahmens, der für einen bestimmten Eintrag
  186. //! benutzt wird \param i Der Index des Eintrags \param f Die farbe im
  187. //! A8R8G8B8 Format
  188. DLLEXPORT void setEintragRahmenFarbe(int i, int f);
  189. //! Setzt die Breite eines Rahmens, der für einen bestimmten Eintrag
  190. //! benutzt wird \param i Der Index des Eintrags \param rbr Die Breite
  191. //! des Rahmens in Pixeln
  192. DLLEXPORT void setEintragRahmenBreite(int i, int rbr);
  193. //! Setzt eine Hintergrund Farbe, die für einen bestimmten Eintrag
  194. //! benutzt wird \param i Der Index des Eintrags \param f Die farbe im
  195. //! A8R8G8B8 Format
  196. DLLEXPORT void setEintragHintergrundFarbe(int i, int f);
  197. //! Setzt einen zeiger auf ein Hintergrund Bild, das für einen
  198. //! bestimmten Eintrag benutzt wird \param i Der Index des Eintrags
  199. //! \param bgB Das Hintergrund Bild
  200. DLLEXPORT void setEintragHintergrundBildZ(int i, Bild* bgB);
  201. //! Setzt ein Hintergrund Bild durch Kopieren, das für einen bestimmten
  202. //! Eintrag benutzt wird \param i Der Index des Eintrags \param bgB Das
  203. //! Hintergrund Bild
  204. DLLEXPORT void setEintragHintergrundBild(int i, Bild* bgB);
  205. //! Setzt einen zeiger auf einen Farbübergangn, der für einen bestimmten
  206. //! Eintrag benutzt wird \param i Der Index des Eintrags \param af Der
  207. //! Farbübergang
  208. DLLEXPORT void setEintragAlphaFeldZ(int i, AlphaFeld* af);
  209. //! Setzt dei Farbe eines Farbübergangns, der für einen bestimmten
  210. //! Eintrag benutzt wird \param i Der Index des Eintrags \param afF Die
  211. //! Farbe im A8R8G8B8 Format
  212. DLLEXPORT void setEintragAlphaFeldFarbe(int i, int afF);
  213. //! Setzt dei Stärke eines Farbübergangns, der für einen bestimmten
  214. //! Eintrag benutzt wird \param i Der Index des Eintrags \param afSt Die
  215. //! Stärke
  216. DLLEXPORT void setEintragAlphaFeldStrength(int i, int afSt);
  217. //! Setzt eienen Zeiger auf einen Rahmen, der bei dem ausgewählten
  218. //! Eintrag verwendet wird \param rahmen Der Rahmen
  219. DLLEXPORT void setAuswRahmenZ(Rahmen* rahmen);
  220. //! Setzt die Farbe eines Rahmens, der bei dem ausgewählten Eintrag
  221. //! verwendet wird \param f Die Farbe im A8R8G8B8 Format
  222. DLLEXPORT void setAuswRahmenFarbe(int f);
  223. //! Setzt die Breite eines Rahmens, der bei dem ausgewählten Eintrag
  224. //! verwendet wird \param rbr Die Breite in Pixeln
  225. DLLEXPORT void setAuswRahmenBreite(int rbr);
  226. //! Setzt die Hintergrund Farbe, die bei dem ausgewählten Eintrag
  227. //! verwendet wird \param f Die Farbe im A8R8G8B8 Format
  228. DLLEXPORT void setAuswHintergrundFarbe(int f);
  229. //! Setzt den Zeiger auf ein Hintergrund Bild, das bei dem ausgewählten
  230. //! Eintrag verwendet wird \param bgB Das Bild
  231. DLLEXPORT void setAuswHintergrundBildZ(Bild* bgB);
  232. //! Setzt ein Hintergrund Bild durch kopieren, das bei dem ausgewählten
  233. //! Eintrag verwendet wird \param bgB Das Bild
  234. DLLEXPORT void setAuswHintergrundBild(Bild* bgB);
  235. //! Setzt den Zeiger auf einen Farbübergang, der bei dem ausgewählten
  236. //! Eintrag verwendet wird \param af Der Farbübergang
  237. DLLEXPORT void setAuswAlphaFeldZ(AlphaFeld* af);
  238. //! Setzt die Farbe eines Farbübergangs, der bei dem ausgewählten
  239. //! Eintrag verwendet wird \param afF Die Farbe im A8R8G8B8 Format
  240. DLLEXPORT void setAuswAlphaFeldFarbe(int afF);
  241. //! Setzt die Stärke eines Farbübergangs, der bei dem ausgewählten
  242. //! Eintrag verwendet wird \param afSt Die Stärke
  243. DLLEXPORT void setAuswAlphaFeldStrength(int afSt);
  244. //! Setzt eienen Zeiger auf einen Rahmen, der bei dem Flag MultiStyled
  245. //! bei der Auswahl eines bestimmten Eintrags verwendet wird \param i
  246. //! Der Index des Eintrags \param rahmen Der Rahmen
  247. DLLEXPORT void setMsAuswRahmenZ(int i, Rahmen* rahmen);
  248. //! Setzt die Farbe einens Rahmens, der bei dem Flag MultiStyled bei der
  249. //! Auswahl eines bestimmten Eintrags verwendet wird \param i Der Index
  250. //! des Eintrags \param f Die Farbe im A8R8G8B8 Format
  251. DLLEXPORT void setMsAuswRahmenFarbe(int i, int f);
  252. //! Setzt die Breite einens Rahmens, der bei dem Flag MultiStyled bei
  253. //! der Auswahl eines bestimmten Eintrags verwendet wird \param i Der
  254. //! Index des Eintrags \param rbr Die Breite in Pixeln
  255. DLLEXPORT void setMsAuswRahmenBreite(int i, int rbr);
  256. //! Setzt die Hintergrundfarbe, die bei dem Flag MultiStyled bei der
  257. //! Auswahl eines bestimmten Eintrags verwendet wird \param i Der Index
  258. //! des Eintrags \param f Die Farbe im A8R8G8B8 Format
  259. DLLEXPORT void setMsAuswHintergrundFarbe(int i, int f);
  260. //! Setzt eienen Zeiger auf eine Hintergrund Bild, das bei dem Flag
  261. //! MultiStyled bei der Auswahl eines bestimmten Eintrags verwendet wird
  262. //! \param i Der Index des Eintrags
  263. //! \param bgB Das Bild
  264. DLLEXPORT void setMsAuswHintergrundBildZ(int i, Bild* bgB);
  265. //! Setzt eien Hintergrund Bild durch kopieren, das bei dem Flag
  266. //! MultiStyled bei der Auswahl eines bestimmten Eintrags verwendet wird
  267. //! \param i Der Index des Eintrags
  268. //! \param bgB Das Bild
  269. DLLEXPORT void setMsAuswHintergrundBild(int i, Bild* bgB);
  270. //! Setzt eienen Zeiger auf einen Farbverlauf, der bei dem Flag
  271. //! MultiStyled bei der Auswahl eines bestimmten Eintrags verwendet wird
  272. //! \param i Der Index des Eintrags
  273. //! \param af Der Farbverlauf
  274. DLLEXPORT void setMsAuswAlphaFeldZ(int i, AlphaFeld* af);
  275. //! Setzt die Farbe eines Farbverlaufs, der bei dem Flag MultiStyled bei
  276. //! der Auswahl eines bestimmten Eintrags verwendet wird \param i Der
  277. //! Index des Eintrags \param afF Die Farbe im A8R8G8B8 Format
  278. DLLEXPORT void setMsAuswAlphaFeldFarbe(int i, int afF);
  279. //! Setzt die Stärke eines Farbverlaufs, der bei dem Flag MultiStyled
  280. //! bei der Auswahl eines bestimmten Eintrags verwendet wird \param i
  281. //! Der Index des Eintrags \param afSt Die Stärke
  282. DLLEXPORT void setMsAuswAlphaFeldStrength(int i, int afSt);
  283. //! Setzt einen Zeiger auf einen Rahmen, der bei dem Eintrag verwendet
  284. //! wird, auf den die Maus zeigt \param rahmen Der Rahmen
  285. DLLEXPORT void setMausRahmenZ(Rahmen* rahmen);
  286. //! Setzt die Farbe eines Rahmens, der bei dem Eintrag verwendet wird,
  287. //! auf den die Maus zeigt \param f Die Farbe im A8R8G8B8 Format
  288. DLLEXPORT void setMausRahmenFarbe(int f);
  289. //! Setzt die Breite eines Rahmens, der bei dem Eintrag verwendet wird,
  290. //! auf den die Maus zeigt \param rbr Die Breite des Rahmens in Pixeln
  291. DLLEXPORT void setMausRahmenBreite(int rbr);
  292. //! Setzt die Hintergrund Farbe, die bei dem Eintrag verwendet wird, auf
  293. //! den die Maus zeigt \param f Die Farbe im A8R8G8B8 Format
  294. DLLEXPORT void setMausHintergrundFarbe(int f);
  295. //! Setzt einen Zeiger auf ein Hintergrund Bild, das bei dem Eintrag
  296. //! verwendet wird, auf den die Maus zeigt \param bgB Das Bild
  297. DLLEXPORT void setMausHintergrundBildZ(Bild* bgB);
  298. //! Setzt ein Hintergrund Bild durch kopieren, das bei dem Eintrag
  299. //! verwendet wird, auf den die Maus zeigt \param bgB Das Bild
  300. DLLEXPORT void setMausHintergrundBild(Bild* bgB);
  301. //! Setzt einen Farbverlauf, der bei dem Eintrag verwendet wird, auf den
  302. //! die Maus zeigt \param af Der Farbverlauf
  303. DLLEXPORT void setMausAlphaFeldZ(AlphaFeld* af);
  304. //! Setzt die Farbe eines Farbverlaufs, der bei dem Eintrag verwendet
  305. //! wird, auf den die Maus zeigt \param afF Die Farbe im A8R8G8B8 Format
  306. DLLEXPORT void setMausAlphaFeldFarbe(int afF);
  307. //! Setzt die Stärke eines Farbverlaufs, der bei dem Eintrag verwendet
  308. //! wird, auf den die Maus zeigt \param afSt Die Stärke
  309. DLLEXPORT void setMausAlphaFeldStrength(int afSt);
  310. //! Setzt einen Zeiger auf einen Rahmen, der bei dem Flag MultiStyled
  311. //! bei einem bestimmten Eintrag verwendet wird, auf den die Maus zeigt
  312. //! \param i Der Index des Eintrags
  313. //! \param rahmen Der Rahmen
  314. DLLEXPORT void setMsMausRahmenZ(int i, Rahmen* rahmen);
  315. //! Setzt die Farbe eines Rahmes, der bei dem Flag MultiStyled bei einem
  316. //! bestimmten Eintrag verwendet wird, auf den die Maus zeigt \param i
  317. //! Der Index des Eintrags \param f Die Farbe im A8R8G8B8 Format
  318. DLLEXPORT void setMsMausRahmenFarbe(int i, int f);
  319. //! Setzt die Breite eines Rahmes, der bei dem Flag MultiStyled bei
  320. //! einem bestimmten Eintrag verwendet wird, auf den die Maus zeigt
  321. //! \param i Der Index des Eintrags
  322. //! \param rbr Die Breite in Pixeln
  323. DLLEXPORT void setMsMausRahmenBreite(int i, int rbr);
  324. //! Setzt die Hintergrund Farbe, die bei dem Flag MultiStyled bei einem
  325. //! bestimmten Eintrag verwendet wird, auf den die Maus zeigt \param i
  326. //! Der Index des Eintrags \param f Die Farbe im A8R8G8B8 Format
  327. DLLEXPORT void setMsMausHintergrundFarbe(int i, int f);
  328. //! Setzt einen Zeiger auf Hintergrund Bild, das bei dem Flag
  329. //! MultiStyled bei einem bestimmten Eintrag verwendet wird, auf den die
  330. //! Maus zeigt \param i Der Index des Eintrags \param bgB Das Bild
  331. DLLEXPORT void setMsMausHintergrundBildZ(int i, Bild* bgB);
  332. //! Setzt ein Hintergrund Bild durch kopieren, das bei dem Flag
  333. //! MultiStyled bei einem bestimmten Eintrag verwendet wird, auf den die
  334. //! Maus zeigt \param i Der Index des Eintrags \param bgB Das Bild
  335. DLLEXPORT void setMsMausHintergrundBild(int i, Bild* bgB);
  336. //! Setzt einen Zeiger auf einen Farbübergang, der bei dem Flag
  337. //! MultiStyled bei einem bestimmten Eintrag verwendet wird, auf den die
  338. //! Maus zeigt \param i Der Index des Eintrags \param af Der Farbverlauf
  339. DLLEXPORT void setMsMausAlphaFeldZ(int i, AlphaFeld* af);
  340. //! Setzt die Farbe einens Farbübergangs, der bei dem Flag MultiStyled
  341. //! bei einem bestimmten Eintrag verwendet wird, auf den die Maus zeigt
  342. //! \param i Der Index des Eintrags
  343. //! \param afF Die Farbe im A8R8G8B8 Format
  344. DLLEXPORT void setMsMausAlphaFeldFarbe(int i, int afF);
  345. //! Setzt die Stärke einens Farbübergangs, der bei dem Flag MultiStyled
  346. //! bei einem bestimmten Eintrag verwendet wird, auf den die Maus zeigt
  347. //! \param i Der Index des Eintrags
  348. //! \param afSt Die Stärke
  349. DLLEXPORT void setMsMausAlphaFeldStrength(int i, int afSt);
  350. //! Wählt ein Element aus
  351. //! \param i Der Index des Elements
  352. DLLEXPORT void setAuswahl(int i);
  353. //! Klappt die Liste zum Auswählen aus
  354. DLLEXPORT void ausklappen();
  355. //! Klappt die Liste zum Auswählen ein
  356. DLLEXPORT void einklappen();
  357. //! Scrollt in der Liste zu einem bestimmten Eintrag
  358. //! \param i Der Index des Eintrags
  359. DLLEXPORT void scrollZuEintrag(int i);
  360. //! Setzt die maximale Ausklapp Höhe der Liste
  361. //! \param maxHeight Die maximale Höhe in Pixeln
  362. DLLEXPORT void setMaxAuskappHeight(int maxHeight);
  363. //! Setzt die Höhe der Einträge
  364. //! \param height Die Höhe in Pixeln
  365. DLLEXPORT void setEintragHeight(int height);
  366. //! Fügt Styles zu einem bestimmten Eintrag hinzu, falls der Flag
  367. //! MultiStyled gesetzt wurde \param i Der Index des Eintrags \param
  368. //! abStyle Der Style, der hinzugefügt werden soll
  369. DLLEXPORT void addMsStyle(int i, __int64 abStyle);
  370. //! Setzt Styles eines bestimmten Eintrags, falls der Flag MultiStyled
  371. //! gesetzt wurde \param i Der Index des Eintrags \param abStyle Der
  372. //! Style \param add 1, falls die Styles hinzugefügt werden sollen und
  373. //! 0, falls sie entfernt werden sollen
  374. DLLEXPORT void setMsStyle(int i, __int64 abStyle, bool add);
  375. //! Ersetzt die Styles eines bestimmten Eintrags, falls der Flag
  376. //! MultiStyled gesetzt wurde \param i Der Index des Eintrags \param
  377. //! abStyle Der neue Style
  378. DLLEXPORT void setMsStyle(int i, __int64 abStyle);
  379. //! Entfernt Styles von einem bestimmten Eintrag, falls der Flag
  380. //! MultiStyled gesetzt wurde \param i Der Index des Eintrags \param
  381. //! abStyle Der Style, der entfernt werden soll
  382. DLLEXPORT void removeMsStyle(int i, __int64 abStyle);
  383. //! Aktualisiert das Objekt. Wird vom Framework aufgerufen
  384. //! \param tickVal Die Zeit in sekunden, die seit dem lezten Aufruf
  385. //! dieser Funktion vergangen ist \return 1, wenn sich etwas verändert
  386. //! hat und das Bild neu gezeichnet werden muss. 0 sonst
  387. DLLEXPORT bool tick(double tickVal) override;
  388. //! Verarbeitet Tastatur Nachrichten
  389. //! \param me Das Ereignis, was durch die Tastatureingabe ausgelößt
  390. //! wurde
  391. DLLEXPORT void doTastaturEreignis(TastaturEreignis& te) override;
  392. //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  393. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  394. DLLEXPORT void render(Bild& zRObj) override;
  395. //! Gibt den Index eines Eintrags zurück
  396. //! \param txt Der Text des Eintrags
  397. DLLEXPORT int getEintragPos(const char* txt) const;
  398. //! Gibt den Index eines Eintrags zurück
  399. //! \param txt Der Text des Eintrags
  400. DLLEXPORT int getEintragPos(Text* txt) const;
  401. //! Gibt den Text eines Eintrags zurück
  402. //! \param i Der Index des Eintrags
  403. DLLEXPORT Text* getEintragText(int i) const;
  404. //! Gibt den Text eines Eintrags ohne erhöhten Reference Counter zurück
  405. //! \param i Der Index des Eintrags
  406. DLLEXPORT Text* zEintragText(int i) const;
  407. //! Gibt einen Eintrag zurück
  408. //! \param i Der Index des Eintrags
  409. DLLEXPORT TextFeld* getEintrag(int i) const;
  410. //! Gibt einen Eintrag ohne erhöhten Reference Counter zurück
  411. //! \param i Der Index des Eintrags
  412. DLLEXPORT TextFeld* zEintrag(int i) const;
  413. //! Gibt den Index des Ausgewählten Eintrags zurück
  414. DLLEXPORT int getAuswahl() const;
  415. //! Gibt die Anzahl der Einträge zurück
  416. DLLEXPORT int getEintragAnzahl() const;
  417. //! Gibt zurück, ob die Liste gerade Ausgeklappt ist
  418. DLLEXPORT bool istAusgeklappt() const;
  419. //! Gibt die maximale Höhe der ausgeklappten Liste zurück
  420. DLLEXPORT int getMaxHeight() const;
  421. //! Gibt die Höhe eines Eintrags zurück
  422. DLLEXPORT int getEintragHeight() const;
  423. //! Gibt den Knopf zurück, der zum aus- und einklappen dr Liste
  424. //! verwendet wird
  425. DLLEXPORT Knopf* getAusklappKnopf() const;
  426. //! Gibt den Knopf ohne erhöhten Reference Counter zurück, der zum aus-
  427. //! und einklappen dr Liste verwendet wird
  428. DLLEXPORT Knopf* zAusklappKnopf() const;
  429. //! Gibt den Rahmen eines Eintrags zurück
  430. //! \param i Der Index des Eintrags
  431. DLLEXPORT Rahmen* getEintragRahmen(int i) const;
  432. //! Gibt den Rahmen eines Eintrags ohne erhöhten Reference Counter
  433. //! zurück \param i Der Index des Eintrags
  434. DLLEXPORT Rahmen* zEintragRahmen(int i) const;
  435. //! Gibt die Farbe eines Rahmens eines Eintrags im A8R8G8B8 Format
  436. //! zurück \param i Der Index des Eintrags
  437. DLLEXPORT int getEintragRahmenFarbe(int i) const;
  438. //! Gibt die Breite eines Rahmens eines Eintrags zurück
  439. //! \param i Der Index des Eintrags
  440. DLLEXPORT int getEintragRahmenBreite(int i) const;
  441. //! Gibt den Farbübergang eines Eintrags zurück
  442. //! \param i Der Index des Eintrags
  443. DLLEXPORT AlphaFeld* getEintragAlphaFeld(int i) const;
  444. //! Gibt den Farbübergang eines Eintrags ohne erhöhten Reference Counter
  445. //! zurück \param i Der Index des Eintrags
  446. DLLEXPORT AlphaFeld* zEintragAlphaFeld(int i) const;
  447. //! Gibt die Farbe eines Farbübergangs eines Eintrags im A8R8G8B8 Format
  448. //! zurück \param i Der Index des Eintrags
  449. DLLEXPORT int getEintragAlphaFeldFarbe(int i) const;
  450. //! Gibt die Stärke eines Farbübergangs eines Eintrags zurück
  451. //! \param i Der Index des Eintrags
  452. DLLEXPORT int getEintragAlphaFeldStrength(int i) const;
  453. //! Gibt die Hintergrund Farbe eines Eintrags im A8R8G8B8 Format zurück
  454. //! \param i Der Index des Eintrags
  455. DLLEXPORT int getEintragHintergrundFarbe(int i) const;
  456. //! Gibt das Hintergrund Bild eines Eintrags zurück
  457. //! \param i Der Index des Eintrags
  458. DLLEXPORT Bild* getEintragHintergrundBild(int i) const;
  459. //! Gibt das Hintergrund Bild eines Eintrags ohne erhöhten Reference
  460. //! Counter zurück \param i Der Index des Eintrags
  461. DLLEXPORT Bild* zEintragHintergrundBild(int i) const;
  462. //! Gibt den Rahmen zurück, der bei der Auswahl eines Eintrags verwendet
  463. //! wird
  464. DLLEXPORT Rahmen* getAuswRahmen() const;
  465. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück, der bei der
  466. //! Auswahl eines Eintrags verwendet wird
  467. DLLEXPORT Rahmen* zAuswRahmen() const;
  468. //! Gibt die Farbe des Rahmens im A8R8G8B8 Format zurück, der bei der
  469. //! Auswahl eines Eintrags verwendet wird
  470. DLLEXPORT int getAuswRahmenFarbe() const;
  471. //! Gibt die Breite des Rahmens zurück, der bei der Auswahl eines
  472. //! Eintrags verwendet wird
  473. DLLEXPORT int getAuswRahmenBreite() const;
  474. //! Gibt den Farbübergang zurück, der bei der Auswahl eines Eintrags
  475. //! verwendet wird
  476. DLLEXPORT AlphaFeld* getAuswAlphaFeld() const;
  477. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der
  478. //! bei der Auswahl eines Eintrags verwendet wird
  479. DLLEXPORT AlphaFeld* zAuswAlphaFeld() const;
  480. //! Gibt die Farbe des Farbübergangs zurück, der bei der Auswahl eines
  481. //! Eintrags verwendet wird
  482. DLLEXPORT int getAuswAlphaFeldFarbe() const;
  483. //! Gibt die Stärke des Farbübergangs zurück, der bei der Auswahl eines
  484. //! Eintrags verwendet wird
  485. DLLEXPORT int getAuswAlphaFeldStrength() const;
  486. //! Gibt die Hintergrundfarbe im A8R8G8B8 Format zurück, die bei der
  487. //! Auswahl eines Eintrags verwendet wird
  488. DLLEXPORT int getAuswHintergrundFarbe() const;
  489. //! Gibt das Hintergrundbild zurück, das bei der Auswahl eines Eintrags
  490. //! verwendet wird
  491. DLLEXPORT Bild* getAuswHintergrundBild() const;
  492. //! Gibt das Hintergrundbild ohne erhöhten Reference Counter zurück, das
  493. //! bei der Auswahl eines Eintrags verwendet wird
  494. DLLEXPORT Bild* zAuswHintergrundBild() const;
  495. //! Gibt den Rahmen zurück, der bei dem Flag MultiStyled bei der auswahl
  496. //! eines bestimmten Eintrags verwendet wird \param i Der Index des
  497. //! Eintrags
  498. DLLEXPORT Rahmen* getMsAuswRahmen(int i) const;
  499. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück, der bei dem
  500. //! Flag MultiStyled bei der auswahl eines bestimmten Eintrags verwendet
  501. //! wird \param i Der Index des Eintrags
  502. DLLEXPORT Rahmen* zMsAuswRahmen(int i) const;
  503. //! Gibt die Farbe des Rahmens im A8R8G8B8 Format zurück, der bei dem
  504. //! Flag MultiStyled bei der auswahl eines bestimmten Eintrags verwendet
  505. //! wird \param i Der Index des Eintrags
  506. DLLEXPORT int getMsAuswRahmenFarbe(int i) const;
  507. //! Gibt die Breite des Rahmens zurück, der bei dem Flag MultiStyled bei
  508. //! der auswahl eines bestimmten Eintrags verwendet wird \param i Der
  509. //! Index des Eintrags
  510. DLLEXPORT int getMsAuswRahmenBreite(int i) const;
  511. //! Gibt den Farbübergang zurück, der bei dem Flag MultiStyled bei der
  512. //! auswahl eines bestimmten Eintrags verwendet wird \param i Der Index
  513. //! des Eintrags
  514. DLLEXPORT AlphaFeld* getMsAuswAlphaFeld(int i) const;
  515. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der
  516. //! bei dem Flag MultiStyled bei der auswahl eines bestimmten Eintrags
  517. //! verwendet wird \param i Der Index des Eintrags
  518. DLLEXPORT AlphaFeld* zMsAuswAlphaFeld(int i) const;
  519. //! Gibt die Farbe des Farbübergangs im A8R8G8B8 Format zurück, der bei
  520. //! dem Flag MultiStyled bei der auswahl eines bestimmten Eintrags
  521. //! verwendet wird \param i Der Index des Eintrags
  522. DLLEXPORT int getMsAuswAlphaFeldFarbe(int i) const;
  523. //! Gibt die Stärke des Farbübergangs zurück, der bei dem Flag
  524. //! MultiStyled bei der auswahl eines bestimmten Eintrags verwendet wird
  525. //! \param i Der Index des Eintrags
  526. DLLEXPORT int getMsAuswAlphaFeldStrength(int i) const;
  527. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die bei dem
  528. //! Flag MultiStyled bei der auswahl eines bestimmten Eintrags verwendet
  529. //! wird \param i Der Index des Eintrags
  530. DLLEXPORT int getMsAuswHintergrundFarbe(int i) const;
  531. //! Gibt das Hintergrund Bild zurück, das bei dem Flag MultiStyled bei
  532. //! der auswahl eines bestimmten Eintrags verwendet wird \param i Der
  533. //! Index des Eintrags
  534. DLLEXPORT Bild* getMsAuswHintergrundBild(int i) const;
  535. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück,
  536. //! das bei dem Flag MultiStyled bei der auswahl eines bestimmten
  537. //! Eintrags verwendet wird \param i Der Index des Eintrags
  538. DLLEXPORT Bild* zMsAuswHintergrundBild(int i) const;
  539. //! Gibt den Rahmen zurück, der verwendet wird, wenn die Maus auf einen
  540. //! Eintrag zeigt
  541. DLLEXPORT Rahmen* getMausRahmen() const;
  542. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück, der
  543. //! verwendet wird, wenn die Maus auf einen Eintrag zeigt
  544. DLLEXPORT Rahmen* zMausRahmen() const;
  545. //! Gibt die Farbe des Rahmens im A8R8G8B8 Format zurück, der verwendet
  546. //! wird, wenn die Maus auf einen Eintrag zeigt
  547. DLLEXPORT int getMausRahmenFarbe() const;
  548. //! Gibt die Breite des Rahmens zurück, der verwendet wird, wenn die
  549. //! Maus auf einen Eintrag zeigt
  550. DLLEXPORT int getMausRahmenBreite() const;
  551. //! Gibt den Farbübergang zurück, der verwendet wird, wenn die Maus auf
  552. //! einen Eintrag zeigt
  553. DLLEXPORT AlphaFeld* getMausAlphaFeld() const;
  554. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der
  555. //! verwendet wird, wenn die Maus auf einen Eintrag zeigt
  556. DLLEXPORT AlphaFeld* zMausAlphaFeld() const;
  557. //! Gibt die Farbe des Farbübergangs im A8R8G8B8 Format zurück, der
  558. //! verwendet wird, wenn die Maus auf einen Eintrag zeigt
  559. DLLEXPORT int getMausAlphaFeldFarbe() const;
  560. //! Gibt die Breite des Farbübergangs zurück, der verwendet wird, wenn
  561. //! die Maus auf einen Eintrag zeigt
  562. DLLEXPORT int getMausAlphaFeldStrength() const;
  563. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die verwendet
  564. //! wird, wenn die Maus auf einen Eintrag zeigt
  565. DLLEXPORT int getMausHintergrundFarbe() const;
  566. //! Gibt das Hintergrund Bild zurück, das verwendet wird, wenn die Maus
  567. //! auf einen Eintrag zeigt
  568. DLLEXPORT Bild* getMausHintergrundBild() const;
  569. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück,
  570. //! das verwendet wird, wenn die Maus auf einen Eintrag zeigt
  571. DLLEXPORT Bild* zMausHintergrundBild() const;
  572. //! Gibt den Rahmen zurück, der bei dem Flag Multistyle verwendet wird,
  573. //! wenn die Maus auf einen bestimmten Eintrag zeigt \param i Der Index
  574. //! des Eintrags
  575. DLLEXPORT Rahmen* getMsMausRahmen(int i) const;
  576. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück, der bei dem
  577. //! Flag Multistyle verwendet wird, wenn die Maus auf einen bestimmten
  578. //! Eintrag zeigt \param i Der Index des Eintrags
  579. DLLEXPORT Rahmen* zMsMausRahmen(int i) const;
  580. //! Gibt die Farbe des Rahmens im A8R8G8B8 Format zurück, der bei dem
  581. //! Flag Multistyle verwendet wird, wenn die Maus auf einen bestimmten
  582. //! Eintrag zeigt \param i Der Index des Eintrags
  583. DLLEXPORT int getMsMausRahmenFarbe(int i) const;
  584. //! Gibt die Breite des Rahmens zurück, der bei dem Flag Multistyle
  585. //! verwendet wird, wenn die Maus auf einen bestimmten Eintrag zeigt
  586. //! \param i Der Index des Eintrags
  587. DLLEXPORT int getMsMausRahmenBreite(int i) const;
  588. //! Gibt den Farbübergang zurück, der bei dem Flag Multistyle verwendet
  589. //! wird, wenn die Maus auf einen bestimmten Eintrag zeigt \param i Der
  590. //! Index des Eintrags
  591. DLLEXPORT AlphaFeld* getMsMausAlphaFeld(int i) const;
  592. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der
  593. //! bei dem Flag Multistyle verwendet wird, wenn die Maus auf einen
  594. //! bestimmten Eintrag zeigt \param i Der Index des Eintrags
  595. DLLEXPORT AlphaFeld* zMsMausAlphaFeld(int i) const;
  596. //! Gibt die Farbe des Farbübergangs im A8R8G8B8 Format zurück, der bei
  597. //! dem Flag Multistyle verwendet wird, wenn die Maus auf einen
  598. //! bestimmten Eintrag zeigt \param i Der Index des Eintrags
  599. DLLEXPORT int getMsMausAlphaFeldFarbe(int i) const;
  600. //! Gibt die Stärke des Farbübergangs zurück, der bei dem Flag
  601. //! Multistyle verwendet wird, wenn die Maus auf einen bestimmten
  602. //! Eintrag zeigt \param i Der Index des Eintrags
  603. DLLEXPORT int getMsMausAlphaFeldStrength(int i) const;
  604. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die bei dem
  605. //! Flag Multistyle verwendet wird, wenn die Maus auf einen bestimmten
  606. //! Eintrag zeigt \param i Der Index des Eintrags
  607. DLLEXPORT int getMsMausHintergrundFarbe(int i) const;
  608. //! Gibt das Hintergrund Bild zurück, das bei dem Flag Multistyle
  609. //! verwendet wird, wenn die Maus auf einen bestimmten Eintrag zeigt
  610. //! \param i Der Index des Eintrags
  611. DLLEXPORT Bild* getMsMausHintergrundBild(int i) const;
  612. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück,
  613. //! das bei dem Flag Multistyle verwendet wird, wenn die Maus auf einen
  614. //! bestimmten Eintrag zeigt \param i Der Index des Eintrags
  615. DLLEXPORT Bild* zMsMausHintergrundBild(int i) const;
  616. //! Prüft, ob ein Punkt in diesem Objekt liegt
  617. //! \param x die x koordinate des punktes
  618. //! \param y die y koordinate des punktes
  619. //! \return 1, wenn der punkt innen ist, 0 sonst
  620. DLLEXPORT bool istPunktInnen(int x, int y) const override;
  621. //! Prüft, ob bei dem Flag MultiStyled für einen Bestimmten Eintrag ein
  622. //! bestimmter Style gesetzt wurde \param i Der Index des Eintrags
  623. //! \param abStyle Der Style
  624. DLLEXPORT inline bool hatMsStyle(int i, __int64 abStyle) const;
  625. //! Prüft, ob bei dem Flag MultiStyled für einen Bestimmten Eintrag ein
  626. //! bestimmter Style nicht gesetzt wurde \param i Der Index des Eintrags
  627. //! \param abStyle Der Style
  628. DLLEXPORT inline bool hatMsStyleNicht(int i, __int64 abStyle) const;
  629. DLLEXPORT Zeichnung*
  630. dublizieren() const override; //! Erzeugt eine Kopie des Zeichnungs
  631. };
  632. } // namespace Framework
  633. #endif