Liste.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. #ifndef Liste_H
  2. #define Liste_H
  3. #include "Array.h"
  4. #include "Zeichnung.h"
  5. namespace Framework
  6. {
  7. class Rahmen; //! Rahmen.h
  8. class AlphaFeld; //! AlphaFeld.h
  9. class Bild; //! Bild.h
  10. class Text; //! Text.h
  11. class TextFeld; //! TextFeld.h
  12. class VScrollBar; //! Scroll.h
  13. struct TastaturEreignis; //! TastaturEreignis.h
  14. struct MausEreignis; //! MausEreignis.h
  15. class Schrift; //! Schrift.h
  16. class AuswahlListe; //! aus dieser datei
  17. //! Eine Zeichnung des 2D GUI Frameworks, die eine Liste darstellt, aus der
  18. //! der Benutzer Elemente aus und abwählen kann
  19. class AuswahlListe : public ZeichnungHintergrund
  20. {
  21. public:
  22. class Style : public ZeichnungHintergrund::Style
  23. {
  24. public:
  25. //! Legt fest, ob die Einträge der Liste einen Rahmen haben
  26. static const __int64 FeldRahmen = 0x0001000;
  27. //! Legt fest, ob die Einträge einen Hintergrund haben
  28. static const __int64 FeldHintergrund = 0x0002000;
  29. //! Legt fest, ob die Einträge ein Hintergrund Bild haben
  30. static const __int64 FeldHBild = 0x0004000;
  31. //! Legt fest, ob beim zeichnen der Eintrag Hintergründe alpha
  32. //! blending verwendet werden soll
  33. static const __int64 FeldHAlpha = 0x0008000;
  34. //! Legt fest, ob die Einträge einen Farbübergang besitzen
  35. static const __int64 FeldBuffer = 0x0010000;
  36. //! Legt fest, ob die ausgewählten Einträge einen Hintergrund haben
  37. static const __int64 AuswahlHintergrund = 0x0020000;
  38. //! Legt fest, ob die ausgewählten einträge ein Bild als Hintergrund
  39. //! haben
  40. static const __int64 AuswahlHBild = 0x0040000;
  41. //! Legt fest, ob für das Zeichnen der Hintergründe der ausgewählten
  42. //! Einträge alpha blending verwendet wird
  43. static const __int64 AuswahlHAlpha = 0x0080000;
  44. //! Legt fest, ob die ausgewählten Einträge einen Farbübergang
  45. //! besitzen
  46. static const __int64 AuswahlBuffer = 0x0100000;
  47. //! Legt fest, ob die ausgewählten Einträge einen Rahmen besitzen
  48. static const __int64 AuswahlRahmen = 0x0200000;
  49. //! Legt fest, ob jeder Eintrag seine eigenen Hintergrund,
  50. //! Farbübergang und Rahmen hat, fals er ausgewählt ist
  51. static const __int64 MultiStyled = 0x0400000;
  52. //! Legt fest, das mehrere Einträge gleichzeitig ausgewählt sein
  53. //! können
  54. static const __int64 MultiSelect = 0x0800000;
  55. //! Legt fest, ob ein bestimmter Eintrag ausgewählt ist, falls
  56. //! MultiSelect gesetzt wurde.
  57. static const __int64 Selected = 0x1000000;
  58. //! Vereint die Flags Sichtbar, Erlaubt, Rahmen, FeldHAlpha,
  59. //! FeldHintergrund, FeldRahmen, AuswahlBuffer, AuswahlRahmen
  60. static const __int64 Normal
  61. = Sichtbar | Erlaubt | Rahmen | FeldHAlpha | FeldHintergrund
  62. | FeldRahmen | AuswahlBuffer | AuswahlRahmen;
  63. };
  64. private:
  65. RCArray<TextFeld>* tfListe;
  66. int auswahl;
  67. int ahFarbe;
  68. Bild* ahBild;
  69. AlphaFeld* aBuffer;
  70. Rahmen* aRahmen;
  71. Array<__int64>* styles;
  72. Array<int>* ahFarbeListe;
  73. RCArray<Bild>* ahBildListe;
  74. RCArray<AlphaFeld>* aBufferListe;
  75. RCArray<Rahmen>* aRahmenListe;
  76. Schrift* schrift;
  77. //! Verarbeitet Tastatur Nachrichten
  78. //! \param me Das Ereignis, was durch die Tastatureingabe ausgelößt
  79. //! wurde
  80. DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
  81. DLLEXPORT bool hatStyle(int styleSet, int styleCheck) const;
  82. public:
  83. //! Konstruktor
  84. DLLEXPORT AuswahlListe();
  85. //! Destruktor
  86. DLLEXPORT virtual ~AuswahlListe();
  87. //! Aktualisiert die Styles, größe und Position der Einträge
  88. DLLEXPORT void update();
  89. //! Fügt einen Eintrag hinzu
  90. //! \param txt Der Text des Eintrags
  91. DLLEXPORT void addEintrag(Text* txt);
  92. //! Fügt einen Eintrag hinzu
  93. //! \param txt Der Text des Eintrags
  94. DLLEXPORT void addEintrag(const char* txt);
  95. //! Fügt einen zeiger auf einen Eintrag hinzu
  96. //! \param tf Das TextFeld, mit dem der Eintrag gezeichnet wird
  97. DLLEXPORT void addEintragZ(TextFeld* tf);
  98. //! Fügt einen Eintrag an einer bestimmten Position hinzu
  99. //! \param pos Der Index des neuen Eintrags
  100. //! \param txt Der Text des Eintrags
  101. DLLEXPORT void addEintrag(int pos, Text* txt);
  102. //! Fügt einen Eintrag an einer bestimmten Position hinzu
  103. //! \param pos Der Index des neuen Eintrags
  104. //! \param txt Der Text des Eintrags
  105. DLLEXPORT void addEintrag(int pos, const char* txt);
  106. //! Fügt einen zeiger auf einen Eintrag an einer bestimmten Position
  107. //! hinzu \param pos Der Index des neuen Eintrags \param tf Das
  108. //! TextFeld, mit dem der Eintrag gezeichnet wird
  109. DLLEXPORT void addEintragZ(int pos, TextFeld* tf);
  110. //! Ändert einen Eintrag
  111. //! \param pos Der Index des Eintrags
  112. //! \param txt Der neue Text des Eintrags
  113. DLLEXPORT void setEintrag(int pos, Text* txt);
  114. //! Ändert einen Eintrag
  115. //! \param pos Der Index des Eintrags
  116. //! \param txt Der neue Text des Eintrags
  117. DLLEXPORT void setEintrag(int pos, const char* txt);
  118. //! Ändert den Zeiger eines Eintrags
  119. //! \param pos Der Index des Eintrags
  120. //! \param tf Der neue Eintrag
  121. DLLEXPORT void setEintragZ(int pos, TextFeld* tf);
  122. //! Vertauscht die Positionen zweier Einträge
  123. //! \param vpos Der Index des ersten Eintrags
  124. //! \param npos Der Index des zweiten Eintrags
  125. DLLEXPORT void tauschEintragPos(int vpos, int npos);
  126. //! setzt die Position eines Eintags
  127. //! \param vpos Der Index des Eintrags
  128. //! \param npos Der Index den der Eintrag haben soll
  129. DLLEXPORT void setEintragPos(int vpos, int npos);
  130. //! Löscht einen Eintrag
  131. //! pos: Der Index des Eintrags
  132. DLLEXPORT void removeEintrag(int pos);
  133. //! Setzt die verwendete Schrift
  134. //! \param schrift Die Schrift
  135. DLLEXPORT void setSchriftZ(Schrift* schrift);
  136. //! Scrollt zu einem bestimmen Eintrag
  137. //! \param eintrag Der Index des Eintrags
  138. DLLEXPORT void setVScrollZuEintrag(int eintrag);
  139. //! Aktualisiert die maximale Scroll Höhe indem die Höhe aller Einträge
  140. //! addiert wird
  141. DLLEXPORT void updateVScroll();
  142. //! Setzt den Zeiger auf den Rahmen, der bei ausgewählten Einträgen
  143. //! verwendet wird, fals MulitStyled nicht gesetzt wurde \param rahmen
  144. //! Der Rahmen
  145. DLLEXPORT void setALRZ(Rahmen* rahmen);
  146. //! Setzt die Breite des Rahmens, der bei ausgewählten Einträgen
  147. //! verwendet wird, fals MulitStyled nicht gesetzt wurde \param br Die
  148. //! Breite in Pixeln
  149. DLLEXPORT void setALRBreite(int br);
  150. //! Setzt die Farbe des Rahmens, der bei ausgewählten Einträgen
  151. //! verwendet wird, fals MulitStyled nicht gesetzt wurde \param fc Die
  152. //! Farbe im A8R8G8B8 Format
  153. DLLEXPORT void setALRFarbe(int fc);
  154. //! Setzt den Zeiger auf den Farbübergnag, der bei ausgewählten
  155. //! Einträgen verwendet wird, fals MulitStyled nicht gesetzt wurde
  156. //! \param buffer Der Farbübergang
  157. DLLEXPORT void setAAFZ(AlphaFeld* buffer);
  158. //! Setzt die Stärke des Farbübergnags, der bei ausgewählten Einträgen
  159. //! verwendet wird, fals MulitStyled nicht gesetzt wurde \param st Die
  160. //! Stärke
  161. DLLEXPORT void setAAFStrength(int st);
  162. //! Setzt die Farbe des Farbübergnags, der bei ausgewählten Einträgen
  163. //! verwendet wird, fals MulitStyled nicht gesetzt wurde \param fc Die
  164. //! Farbe im A8R8G8B8 Format
  165. DLLEXPORT void setAAFFarbe(int fc);
  166. //! Setzt das Hintergrund Bild durch kopieren, das bei ausgewählten
  167. //! Einträgen verwendet wird, fals MulitStyled nicht gesetzt wurde
  168. //! \param bild Das Bild, das kopiert werden soll
  169. DLLEXPORT void setAHBild(Bild* bild);
  170. //! Setzt einen Zeiger auf das Hintergrund Bild, das bei ausgewählten
  171. //! Einträgen verwendet wird, fals MulitStyled nicht gesetzt wurde
  172. //! \param bild Das Bild, das kopiert werden soll
  173. DLLEXPORT void setAHBildZ(Bild* bild);
  174. //! Setzt die Hintergrund Farbe, die bei ausgewählten Einträgen
  175. //! verwendet wird, fals MulitStyled nicht gesetzt wurde \param fc Die
  176. //! Farbe im A8R8G8B8 Format
  177. DLLEXPORT void setAHFarbe(int fc);
  178. //! Setzt den Zeiger auf den Rahmen, der bei einem ausgewählten Eintrag
  179. //! verwendet wird, fals MulitStyled gesetzt wurde \param pos Der Index
  180. //! des Eintrags \param rahmen Der Rahmen
  181. DLLEXPORT void setALRZ(int pos, Rahmen* rahmen);
  182. //! Setzt die Breite des Rahmens, der bei einem ausgewählten Eintrag
  183. //! verwendet wird, fals MulitStyled gesetzt wurde \param pos Der Index
  184. //! des Eintrags \param br Die Breite in Pixeln
  185. DLLEXPORT void setALRBreite(int pos, int br);
  186. //! Setzt die Farbe des Rahmens, der bei einem ausgewählten Eintrag
  187. //! verwendet wird, fals MulitStyled gesetzt wurde \param pos Der Index
  188. //! des Eintrags \param fc Die Farbe im A8R8G8B8 Format
  189. DLLEXPORT void setALRFarbe(int pos, int fc);
  190. //! Setzt den Zeiger auf den Farbübergnag, der bei einem ausgewählten
  191. //! Eintrag verwendet wird, fals MulitStyled gesetzt wurde \param pos
  192. //! Der Index des Eintrags \param buffer Der Farbübergang
  193. DLLEXPORT void setAAFZ(int pos, AlphaFeld* buffer);
  194. //! Setzt die Stärke des Farbübergnags, der bei einem ausgewählten
  195. //! Eintrag verwendet wird, fals MulitStyled gesetzt wurde \param pos
  196. //! Der Index des Eintrags \param st Die Stärke
  197. DLLEXPORT void setAAFStrength(int pos, int st);
  198. //! Setzt die Farbe des Farbübergnags, der bei einem ausgewählten
  199. //! Eintrag verwendet wird, fals MulitStyled gesetzt wurde \param pos
  200. //! Der Index des Eintrags \param fc Die Farbe im A8R8G8B8 Format
  201. DLLEXPORT void setAAFFarbe(int pos, int fc);
  202. //! Setzt das Hintergrund Bild durch kopieren, das bei einem
  203. //! ausgewählten Eintrag verwendet wird, fals MulitStyled gesetzt wurde
  204. //! \param pos Der Index des Eintrags
  205. //! \param bild Das Bild, das kopiert werden soll
  206. DLLEXPORT void setAHBild(int pos, Bild* bild);
  207. //! Setzt einen Zeiger auf das Hintergrund Bild, das bei einem
  208. //! ausgewählten Eintrag verwendet wird, fals MulitStyled gesetzt wurde
  209. //! \param pos Der Index des Eintrags
  210. //! \param bild Das Bild, das kopiert werden soll
  211. DLLEXPORT void setAHBildZ(int pos, Bild* bild);
  212. //! Setzt die Hintergrund Farbe, die bei einem ausgewählten Eintrag
  213. //! verwendet wird, fals MulitStyled gesetzt wurde \param pos Der Index
  214. //! des Eintrags \param fc Die Farbe im A8R8G8B8 Format
  215. DLLEXPORT void setAHFarbe(int pos, int fc);
  216. //! Setzt den Style eines Eintrags, falls MulitStyled gesetzt wurde und
  217. //! legt fest, ob ein Eintrag ausgewählt ist, falls MultiSelect gesetzt
  218. //! wurde \param pos Der Index des Eintrags \param style Der neue Style
  219. DLLEXPORT void setMsStyle(int pos, __int64 style);
  220. //! Ändert den Style eines Eintrags, falls MulitStyled gesetzt wurde und
  221. //! legt fest, ob ein Eintrag ausgewählt ist, falls MultiSelect gesetzt
  222. //! wurde \param pos Der Index des Eintrags \param style Der Style
  223. //! add_remove: 1, falls der Style hinzugefügt werden soll. 0, falls
  224. //! der Style entfernt weden soll
  225. DLLEXPORT void setMsStyle(int pos, __int64 style, bool add_remove);
  226. //! Fügt Styles zu einem Eintrag hinzu, falls MulitStyled gesetzt wurde
  227. //! und legt fest, ob ein Eintrag ausgewählt ist, falls MultiSelect
  228. //! gesetzt wurde \param pos Der Index des Eintrags \param style Der
  229. //! Style, der hinzugefügt werden soll
  230. DLLEXPORT void addMsStyle(int pos, __int64 style);
  231. //! Entfernt Styles von einem Eintrag, falls MulitStyled gesetzt wurde
  232. //! und legt fest, ob ein Eintrag ausgewählt ist, falls MultiSelect
  233. //! gesetzt wurde \param pos Der Index des Eintrags \param style Der
  234. //! Style, der entfernt werden soll
  235. DLLEXPORT void removeMsStyle(int pos, __int64 style);
  236. //! Verarbeitet ein Tastatur Ereignis. Wird vom Framework automatisch
  237. //! aufgerufen \param te Das Ereignis
  238. DLLEXPORT void doTastaturEreignis(TastaturEreignis& te) override;
  239. //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  240. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  241. DLLEXPORT void render(Bild& zRObj) override;
  242. //! Gibt den Index eines Eintrags zurück, auf den die Maus zeigt
  243. //! \param my Die Position der Maus auf der Y Achse basierend auf dem
  244. //! oberend Rand der Liste
  245. DLLEXPORT int getKlickEintrag(int my);
  246. //! Wählt einen Eintrag aus
  247. //! \param ausw Der Index des Eintrags
  248. DLLEXPORT void setAuswahl(int ausw);
  249. //! Wählt alle ausgewählten Einträge ab
  250. DLLEXPORT void deSelect();
  251. //! Gibt die Anzahl an Einträgen zurück
  252. DLLEXPORT int getEintragAnzahl() const;
  253. //! Gibt den Index des ausgewählten Eintrags zurück, fals MultiSelect
  254. //! nicht gesetzt ist. Wenn MultiSelect gesetzt wurde, kann die Auswahl
  255. //! eines Eintrags mit hatMsStyle( Eintrag Index,
  256. //! AuswahlListe::Style::Ausgewählt ) geprüft werden
  257. DLLEXPORT int getAuswahl() const;
  258. //! Gibt den Index eines Eintrags zurück
  259. //! \param eintragText Der Text des Eintrags
  260. DLLEXPORT int getEintragPos(Text* eintragText);
  261. //! Gibt einen Eintrag zurück
  262. //! \param pos Der Index des Eintrags
  263. DLLEXPORT TextFeld* getEintrag(int pos) const;
  264. //! Gibt einen Eintrag ohne erhöhten reference Counter zurück
  265. //! \param pos Der Index des Eintrags
  266. DLLEXPORT TextFeld* zEintrag(int pos) const;
  267. //! Gibt den Rahmen zurück, der für ausgewählte Einträge verwendet wird,
  268. //! falls MultiStyled nicht gesetzt wurde
  269. DLLEXPORT Rahmen* getARahmen() const;
  270. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück, der für
  271. //! ausgewählte Einträge verwendet wird, falls MultiStyled nicht gesetzt
  272. //! wurde
  273. DLLEXPORT Rahmen* zARahmen() const;
  274. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die für
  275. //! ausgewählte Einträge verwendet wird, falls MultiStyled nicht gesetzt
  276. //! wurde
  277. DLLEXPORT int getAHFarbe() const;
  278. //! Gibt das Hintergrund Bild zurück, das für ausgewählte Einträge
  279. //! verwendet wird, falls MultiStyled nicht gesetzt wurde
  280. DLLEXPORT Bild* getAHBild() const;
  281. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück,
  282. //! das für ausgewählte Einträge verwendet wird, falls MultiStyled nicht
  283. //! gesetzt wurde
  284. DLLEXPORT Bild* zAHBild() const;
  285. //! Gibt den Farbverlauf zurück, der für ausgewählte Einträge verwendet
  286. //! wird, falls MultiStyled nicht gesetzt wurde
  287. DLLEXPORT AlphaFeld* getABuffer() const;
  288. //! Gibt den Farbverlauf ohne erhöhten Reference Counter zurück, der für
  289. //! ausgewählte Einträge verwendet wird, falls MultiStyled nicht gesetzt
  290. //! wurde
  291. DLLEXPORT AlphaFeld* zABuffer() const;
  292. //! Gibt den Rahmen zurück, der für einen ausgewählten Eintrag verwendet
  293. //! wird, falls MultiStyled gesetzt wurde
  294. DLLEXPORT Rahmen* getARahmen(int pos) const;
  295. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück, der für
  296. //! einen ausgewählten Eintrag verwendet wird, falls MultiStyled gesetzt
  297. //! wurde
  298. DLLEXPORT Rahmen* zARahmen(int pos) const;
  299. //! Gibt die Hintegrrund Farbe im A8R8G8B8 Format zurück, die für einen
  300. //! ausgewählten Eintrag verwendet wird, falls MultiStyled gesetzt wurde
  301. DLLEXPORT int getAHFarbe(int pos) const;
  302. //! Gibt das Hintergrund Bild zurück, das für einen ausgewählten Eintrag
  303. //! verwendet wird, falls MultiStyled gesetzt wurde
  304. DLLEXPORT Bild* getAHBild(int pos) const;
  305. //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück,
  306. //! das für einen ausgewählten Eintrag verwendet wird, falls MultiStyled
  307. //! gesetzt wurde
  308. DLLEXPORT Bild* zAHBild(int pos) const;
  309. //! Gibt den Farbübergang zurück, der für einen ausgewählten Eintrag
  310. //! verwendet wird, falls MultiStyled gesetzt wurde
  311. DLLEXPORT AlphaFeld* getABuffer(int pos) const;
  312. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der
  313. //! für einen ausgewählten Eintrag verwendet wird, falls MultiStyled
  314. //! gesetzt wurde
  315. DLLEXPORT AlphaFeld* zABuffer(int pos) const;
  316. //! Überprüft, ob für einen Bestimmten Eintarg betimmte Styles gesetzt
  317. //! wurden, falls MultiStyled gesetzt wurde. Überprüft auch, ob ein
  318. //! Eintrag ausgewählt wurde, falls MultiSelect gesetzt wurde \param pos
  319. //! Der Index des Eintrags \param style Die zu prüfenden Styles
  320. DLLEXPORT inline bool hatMsStyle(int pos, __int64 style) const;
  321. //! Überprüft, ob für einen Bestimmten Eintarg betimmte Styles nicht
  322. //! gesetzt wurden, falls MultiStyled gesetzt wurde. Überprüft auch, ob
  323. //! ein Eintrag nicht ausgewählt wurde, falls MultiSelect gesetzt wurde
  324. //! \param pos Der Index des Eintrags
  325. //! \param style Die zu prüfenden Styles
  326. DLLEXPORT inline bool hatMsStyleNicht(int pos, __int64 style) const;
  327. };
  328. class ZListe : public ZeichnungHintergrund
  329. {
  330. public:
  331. class Style : public ZeichnungHintergrund::Style
  332. {
  333. public:
  334. //! draws a seperation line between the entries
  335. static const __int64 EntrySeperator = 0x0001000;
  336. //! Vereint die Flags Sichtbar, Erlaubt,
  337. //! Rahmen, Hintergrund
  338. static const __int64 Normal
  339. = Sichtbar | Erlaubt | Rahmen | Hintergrund | EntrySeperator;
  340. };
  341. private:
  342. int entrySeperatorSize;
  343. int entrySeperatorColor;
  344. RCArray<Zeichnung> list;
  345. protected:
  346. //! Verarbeitet Tastatur Nachrichten
  347. //! \param me Das Ereignis, was durch die Tastatureingabe ausgelößt
  348. //! wurde
  349. DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
  350. public:
  351. //! Konstruktor
  352. DLLEXPORT ZListe();
  353. //! Destruktor
  354. DLLEXPORT virtual ~ZListe();
  355. //! Fügt einen Eintrag hinzu
  356. //! \param entry Die Zeichnung die hinzugefügt werden soll
  357. DLLEXPORT void addEintrag(Zeichnung* entry);
  358. //! Ändert einen Eintrag
  359. //! \param pos Der Index des Eintrags
  360. //! \param entry Die neue Zeichnung
  361. DLLEXPORT void setEintrag(int pos, Zeichnung* entry);
  362. //! Vertauscht die Positionen zweier Einträge
  363. //! \param vpos Der Index des ersten Eintrags
  364. //! \param npos Der Index des zweiten Eintrags
  365. DLLEXPORT void tauschEintragPos(int vpos, int npos);
  366. //! setzt die Position eines Eintags
  367. //! \param vpos Der Index des Eintrags
  368. //! \param npos Der Index den der Eintrag haben soll
  369. DLLEXPORT void setEintragPos(int vpos, int npos);
  370. //! Löscht einen Eintrag
  371. //! pos: Der Index des Eintrags
  372. DLLEXPORT void removeEintrag(int pos);
  373. //! Scrollt zu einem bestimmen Eintrag
  374. //! \param eintrag Der Index des Eintrags
  375. DLLEXPORT void setVScrollZuEintrag(int eintrag);
  376. //! Aktualisiert die maximale Scroll Höhe indem die Höhe aller Einträge
  377. //! addiert wird
  378. DLLEXPORT void updateVScroll();
  379. //! sets the size of the entry seperator
  380. DLLEXPORT void setEntrySeperatorSize(int size);
  381. //! sets the color of the entry seperator
  382. DLLEXPORT void setEntrySeperatorColor(int color);
  383. //! Verarbeitet ein Tastatur Ereignis. Wird vom Framework automatisch
  384. //! aufgerufen \param te Das Ereignis
  385. DLLEXPORT void doTastaturEreignis(TastaturEreignis& te) override;
  386. //! Aktualisiert die zeichnung
  387. //! \param tickVal Die vergangene Zeit in Sekunden, die seit dem Letzten
  388. //! Aufruf dieser Funktion verstrichen ist \return 1, wenn sich die
  389. //! Zeichnung seit dem letzten aufruf verändert hat
  390. DLLEXPORT bool tick(double tickVal) override;
  391. //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  392. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  393. DLLEXPORT void render(Bild& rObj) override;
  394. //! Gibt den Index eines Eintrags zurück, auf den die Maus zeigt
  395. //! \param my Die Position der Maus auf der Y Achse basierend auf dem
  396. //! oberend Rand der Liste
  397. DLLEXPORT int getKlickEintrag(int my);
  398. //! Gibt die Anzahl an Einträgen zurück
  399. DLLEXPORT int getEintragAnzahl() const;
  400. //! Gibt den Index eines Eintrags zurück
  401. //! \param zEntry Die Zeichnung
  402. DLLEXPORT int getEintragPos(Zeichnung* zEntry);
  403. //! Gibt einen Eintrag zurück
  404. //! \param pos Der Index des Eintrags
  405. DLLEXPORT Zeichnung* getEintrag(int pos) const;
  406. //! Gibt einen Eintrag ohne erhöhten reference Counter zurück
  407. //! \param pos Der Index des Eintrags
  408. DLLEXPORT Zeichnung* zEintrag(int pos) const;
  409. //! Gibt die benötigte Höhe zurück
  410. DLLEXPORT int getNeededHeight() const;
  411. //! returns the size of the entry seperator
  412. DLLEXPORT int getEntrySeperatorSize() const;
  413. //! returns the color of the entry seperator
  414. DLLEXPORT int getEntrySeperatorColor() const;
  415. };
  416. } // namespace Framework
  417. #endif