AuswahlBox.h 35 KB

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