Zeichnung.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. #ifndef Zeichnung_H
  2. #define Zeichnung_H
  3. #include <functional>
  4. #include "Critical.h"
  5. #include "MausEreignis.h"
  6. #include "Punkt.h"
  7. #include "ReferenceCounter.h"
  8. #include "TastaturEreignis.h"
  9. namespace Framework
  10. {
  11. struct MausEreignis; //! MausEreignis.h
  12. struct TastaturEreignis; //! TastaturEreignis.h
  13. class Bild; //! Bild.h
  14. class Zeichnung; //! Aus dieser Datei
  15. class ToolTip; //! ToopTip.h
  16. class Bildschirm; //! Bildschirm.h
  17. class Rahmen; //! Rahmen.h
  18. class AlphaFeld; //! AlphaFeld.h
  19. class VScrollBar; //! Scroll.h
  20. class HScrollBar; //! Scroll.h
  21. class Schrift;
  22. //! Eine Zeichnung für das 2D GUI Framework
  23. class Zeichnung : public virtual ReferenceCounter
  24. {
  25. public:
  26. class Style
  27. {
  28. public:
  29. //! Wenn dieser Style gesetzt ist, wird die Zeichnung beim Zeichnen
  30. //! angezeigt
  31. static const __int64 Sichtbar = 0x00001;
  32. //! Wenn dieser Style gesetzt ist, kann der Benutzer mit der
  33. //! Zeichnung interagieren
  34. static const __int64 Erlaubt = 0x00002;
  35. //! Wenn dieser Style gesetzt ist, wird ein TastaturEreignis von der
  36. //! Zeichnung verarbeitet
  37. static const __int64 Fokus = 0x00004;
  38. //! Wenn dieser Style gesetzt ist, wird ein MausEreignis auch
  39. //! verarbeitet, wenn das Objekt nicht sichtbar ist
  40. static const __int64 MEIgnoreSichtbar = 0x0800000000000000;
  41. //! Wenn dieser Style gesetzt ist, lockt der Thread das Objekt
  42. //! während das MausEreignis verarbeitet wird
  43. static const __int64 MELockZeichnung = 0x1000000000000000;
  44. //! Wenn dieser Style gesetzt ist, wird ein MausEreignis auch
  45. //! verarbeitet, wenn es außerhalb der Zeichnung liegt
  46. static const __int64 MEIgnoreInside = 0x2000000000000000;
  47. //! Wenn dieser Style gesetzt ist, wird ein MausEreignis auch
  48. //! verarbeitet, wenn es bereits von einer anderen Zeichnung
  49. //! verarbeitet wurde
  50. static const __int64 MEIgnoreVerarbeitet = 0x4000000000000000;
  51. //! Wenn dieser Style gesetzt ist, wird ein MausEreignis auch
  52. //! verarbeitet, wenn es sich außerhalb der Zeichnung befindet, zu
  53. //! der diese Zeichnung gehört
  54. static const __int64 MEIgnoreParentInside = 0x8000000000000000;
  55. };
  56. protected:
  57. Punkt pos;
  58. Punkt gr;
  59. void* makParam;
  60. void* takParam;
  61. MausAktion mak;
  62. TastaturAktion tak;
  63. void* nmakParam;
  64. void* ntakParam;
  65. MausAktion nMak;
  66. TastaturAktion nTak;
  67. bool mausIn;
  68. Critical cs;
  69. ToolTip* toolTip;
  70. __int64 style;
  71. bool rend;
  72. std::function<bool(Zeichnung*, Punkt localPos)> onNeedToolTip;
  73. bool toolTipRequested;
  74. //! Verarbeitet ein Maus Ereignis. Wird vom Framework automatisch
  75. //! aufgerufen. \param me Das MausEreignis \param userRet true wenn
  76. //! MausEreignis::verarbeitet auf true gesetzt werden soll
  77. DLLEXPORT virtual void doMausEreignis(MausEreignis& me, bool userRet);
  78. public:
  79. //! Konstruktor
  80. DLLEXPORT Zeichnung();
  81. //! Destruktor
  82. DLLEXPORT virtual ~Zeichnung();
  83. //! Legt fest, ob sich die Zeichnung seit des letzten Bildes verändert
  84. //! hat und neu gezeichnet werden muss
  85. DLLEXPORT void setRender();
  86. //! Setzt den Text, der erscheint, wenn der Benutzer für längere Zeit
  87. //! mit der Maus in der Zeichnung verweilt \param txt Der Text, der
  88. //! angezeigt werden soll \param zScreen Ein Zeiger auf das Verwendete
  89. //! Bildschirm Objekt ohne erhöhten Reference Counter \param zSchrift
  90. //! Ein Zeiger auf die Schrift, die verwendet werden soll ohne erhöhten
  91. //! Reference Counter
  92. DLLEXPORT void setToolTipText(
  93. const char* txt, Bildschirm* zScreen, Schrift* zSchrift);
  94. //! setzt eine Funktion, die aufgerufen wird, falls ein Tooltip benötigt
  95. //! wird und noch keiner gesetzt wurde \param initToolTip die Funktion
  96. DLLEXPORT void setNeedToolTipEvent(
  97. std::function<bool(Zeichnung*, Punkt localPos)> onNeedTooltip);
  98. //! legt den tooltip fest
  99. //! \param tt der tooltip
  100. DLLEXPORT void setToolTipZ(ToolTip* tt);
  101. //! Dies ist notwendig, falls mehrere Threads gleichzeitig die Zeichnung
  102. //! benutzen. Wenn lockZeichnung() von zwei threads aufgerufen wird,
  103. //! wartet der letzte so lange, bis der erste unlockZeichnung()
  104. //! aufgerufen hat.
  105. DLLEXPORT void lockZeichnung();
  106. //! Dies ist notwendig, falls mehrere Threads gleichzeitig die Zeichnung
  107. //! benutzen. Wenn lockZeichnung() von zwei threads aufgerufen wird,
  108. //! wartet der letzte so lange, bis der erste unlockZeichnung()
  109. //! aufgerufen hat.
  110. DLLEXPORT void unlockZeichnung();
  111. //! setzt den Parameter, der bei einem Maus Ereignis an die
  112. //! Rückruffunktion übergeben wird \param p Der Parameter
  113. DLLEXPORT void setMausEreignisParameter(void* p);
  114. //! Setzt den Parameter, der bei einem Tastatur Ereignis an die
  115. //! Rückruffunktion übergeben wird \param p Der Parameter
  116. DLLEXPORT void setTastaturEreignisParameter(void* p);
  117. //! Setzt die Rückruffunktion, die bei einem Maus Ereignis aufgerufen
  118. //! werden soll. Wenn die Rückruffunktion 0 zurückgiebt, oder nicht
  119. //! gesetzt wurde, wird ein Maus Ereignis von der Zeichnung nicht weiter
  120. //! beachtet Es kann die Standartfunktion __ret1ME verwendet werden, die
  121. //! in MausEreignis.h definiert ist und immer 1 zurückgibt \param ak Ein
  122. //! Zeiger auf die Rückruffunktion
  123. DLLEXPORT void setMausEreignis(MausAktion ak);
  124. //! Fügt eine Rückruffunktion hinzu, die bei einem Maus Ereignis aufgerufen
  125. //! werden soll. Wenn eine der Rückruffunktionen 0 zurückgiebt, oder keine
  126. //! gesetzt wurde, wird ein Maus Ereignis von der Zeichnung nicht weiter
  127. //! beachtet Es kann die Standartfunktion __ret1ME verwendet werden, die
  128. //! in MausEreignis.h definiert ist und immer 1 zurückgibt \param ak Ein
  129. //! Zeiger auf die Rückruffunktion
  130. DLLEXPORT void addMausEreignis(MausAktion ak);
  131. //! Setzt die Rückruffunktion, die bei einem Tastatur Ereignis
  132. //! aufgerufen werdne soll. Wenn die Rückruffunktion 0 zurückgiebt, oder
  133. //! nicht gesetzt wurde, wird ein Tastatur Ereignis von der Zeichnung
  134. //! nicht weiter beachtet Es kann die Standartfunktion __ret1TE
  135. //! verwendet werden, die in TastaturEreignis.h definiert ist und immer
  136. //! 1 zurückgibt Weitere Standartfunktionen sind _nurNummernTE und
  137. //! _nurHexTE ebenfals aus TastaturEreignis.h \param ak Ein Zeiger auf
  138. //! die Rückruffunktion
  139. DLLEXPORT void setTastaturEreignis(TastaturAktion ak);
  140. //! Fügt eine Rückruffunktion hinzu, die bei einem Tastatur Ereignis
  141. //! aufgerufen werdne soll. Wenn eine der Rückruffunktionen 0 zurückgiebt, oder
  142. //! keine gesetzt wurde, wird ein Tastatur Ereignis von der Zeichnung
  143. //! nicht weiter beachtet Es kann die Standartfunktion __ret1TE
  144. //! verwendet werden, die in TastaturEreignis.h definiert ist und immer
  145. //! 1 zurückgibt Weitere Standartfunktionen sind _nurNummernTE und
  146. //! _nurHexTE ebenfals aus TastaturEreignis.h \param ak Ein Zeiger auf
  147. //! die Rückruffunktion
  148. DLLEXPORT void addTastaturEreignis(TastaturAktion ak);
  149. //! setzt den Parameter, der bei einem Maus Ereignis an die
  150. //! Rückruffunktion übergeben wird, die aufgerufen wird, fals das
  151. //! Ereignis von der Zeichnung verarbeitet wurde \param p Der Parameter
  152. DLLEXPORT void setNMausEreignisParameter(void* p);
  153. //! Setzt den Parameter, der bei einem Tastatur Ereignis an die
  154. //! Rückruffunktion übergeben wird, die aufgerufen wird, fals das
  155. //! Ereignis von der Zeichnung verarbeitet wurde \param p Der Parameter
  156. DLLEXPORT void setNTastaturEreignisParameter(void* p);
  157. //! Setzt die Rückruffunktion, die bei einem Maus Ereignis aufgerufen
  158. //! werden soll, nachdem das Ereignis bereits von der Zeichnung
  159. //! verarbeitet wurde Wenn die Rückruffunktion 1 zurückgiebt, oder nicht
  160. //! gesetzt wurde, wird das Maus Ereignis von keiner weiteren Zeichnung
  161. //! verarbeitet, die zum Beispiel hinter dieser Zeichnung liegen Es kann
  162. //! die Standartfunktion __ret1ME verwendet werden, die in
  163. //! MausEreignis.h definiert ist und immer 1 zurückgibt \param ak Ein
  164. //! Zeiger auf die Rückruffunktion
  165. DLLEXPORT void setNMausEreignis(MausAktion ak);
  166. //! Setzt die Rückruffunktion, die bei einem Tastatur Ereignis
  167. //! aufgerufen werdne soll, nachdem das Ereignis bereits von der
  168. //! Zeichnung verarbeitet wurde Wenn die Rückruffunktion 1 zurückgiebt,
  169. //! oder nicht gesetzt wurde, wird das Tastatur Ereignis von keiner
  170. //! weiteren Zeichnung verarbeitet Es kann die Standartfunktion __ret1TE
  171. //! verwendet werden, die in TastaturEreignis.h definiert ist und immer
  172. //! 1 zurückgibt Weitere Standartfunktionen sind _nurNummernTE und
  173. //! _nurHexTE ebenfals aus TastaturEreignis.h \param ak Ein Zeiger auf
  174. //! die Rückruffunktion
  175. DLLEXPORT void setNTastaturEreignis(TastaturAktion ak);
  176. //! Verarbeitet ein Maus Ereignis. Wird vom Framework automatisch
  177. //! aufgerufen. \param me Das Ereignis
  178. DLLEXPORT virtual void doPublicMausEreignis(MausEreignis& me);
  179. //! Verarbeitet ein Tastatur Ereignis. Wird vom Framework automatisch
  180. //! aufgerufen \param te Das Ereignis
  181. DLLEXPORT virtual void doTastaturEreignis(TastaturEreignis& te);
  182. //! Verarbeitet die Zeit, die seit dem letzten aufruf dieser Funktion
  183. //! vergangen ist \param tickVal Die vergangene Zeit in Sekunden
  184. DLLEXPORT virtual bool tick(double tickval);
  185. //! Setzt die Position der Zeichnung
  186. //! \param pos Die Position in Pixeln
  187. DLLEXPORT void setPosition(const Punkt& pos);
  188. //! Setzt die X Position der Zeichnung
  189. //! \param xPos Die Position in Pixeln
  190. DLLEXPORT void setX(int xPos);
  191. //! Setzt die Y Position der Zeichnung
  192. //! \param yPos Die Position in Pixeln
  193. DLLEXPORT void setY(int yPos);
  194. //! Setzt die Größe der Zeichnung
  195. //! \param gr Ein Punkt mit x als Breite und y als Höhe in Pixeln
  196. DLLEXPORT void setSize(const Punkt& gr);
  197. //! Setzt die Position der Zeichnung
  198. //! \param x Die X Position in Pixeln
  199. //! \param y Die Y Position in Pixeln
  200. DLLEXPORT void setPosition(int x, int y);
  201. //! Setzt die Größe der Zeichnung
  202. //! \param br Die Breite in Pixeln
  203. //! \param height Die Höhe in Pixeln
  204. DLLEXPORT void setSize(int br, int height);
  205. //! Set the width in pixel
  206. //! \param width the width
  207. DLLEXPORT void setWidth(int width);
  208. //! Set the height in pixel
  209. //! \param width the height
  210. DLLEXPORT void setHeight(int height);
  211. //! Setzt den Style der Zeichnung
  212. //! \param style Der neue Style bestehend aus den Flags aus der
  213. //! zugehörigen Style Klasse
  214. DLLEXPORT void setStyle(__int64 style);
  215. //! Setzt den Style der Zeichnung
  216. //! \param style Alle Style Flags, die verändert werden sollen
  217. //! \param add_remove 1, falls der Style hinzugefügt werden soll. 0,
  218. //! falls der Style entfernt weden soll
  219. DLLEXPORT void setStyle(__int64 style, bool add_remove);
  220. //! Fügt Style Flags hinzu
  221. //! \param style Der Style, der hinzugefügt werden soll
  222. DLLEXPORT void addStyle(__int64 style);
  223. //! Entfernt Style Flags
  224. //! \param style Der Style, der entfernt werden soll
  225. DLLEXPORT void removeStyle(__int64 style);
  226. //! Zeichnet die Zeihnung in ein bestimmtes Bild
  227. //! \param zRObj Das Bild, in das gezeichnet werden soll
  228. DLLEXPORT virtual void render(Bild& zRObj);
  229. //! Gibt zurück, ob eine Rückruffunktion für Maus Ereignisse gesetzt
  230. //! wurde
  231. DLLEXPORT bool hatMausEreignis() const;
  232. //! Gibt zurück, ob eine Rückruffunktion für Tastatur Ereignisse gesetzt
  233. //! wurde
  234. DLLEXPORT bool hatTastaturEreignis() const;
  235. //! Gibt die Position der Zeichnung in Pixeln zurück
  236. DLLEXPORT const Punkt& getPosition() const;
  237. //! Gibt die Größe der Zeichnung in Pixeln zurück. x für Breite und y
  238. //! für Höhe
  239. DLLEXPORT const Punkt& getSize() const;
  240. //! Gibt die Breite der Zeichnung in Pixeln zurück
  241. DLLEXPORT int getBreite() const;
  242. //! Gibt die Höhe der Zeichnung in Pixeln zurück
  243. DLLEXPORT int getHeight() const;
  244. //! Gibt die Breite des Innenraumes in der Zeichnung in Pixeln zurück
  245. DLLEXPORT virtual int getInnenBreite() const;
  246. //! Gibt die Höhe des Innenraumes in der Zeichnung in Pixeln zurück
  247. DLLEXPORT virtual int getInnenHeight() const;
  248. //! Gibt die X Position der Zeichnung in Pixeln zurück
  249. DLLEXPORT int getX() const;
  250. //! Gibt die Y Position der Zeichnung in Pixeln zurück
  251. DLLEXPORT int getY() const;
  252. //! Prüft, ob ein Punkt in diesem Objekt liegt
  253. //! \param p der Punkt
  254. //! \return 1, wenn der punkt innen ist, 0 sonst
  255. DLLEXPORT virtual bool istPunktInnen(Punkt p) const;
  256. //! Prüft, ob ein Punkt in diesem Objekt liegt
  257. //! \param x die x koordinate des punktes
  258. //! \param y die y koordinate des punktes
  259. //! \return 1, wenn der punkt innen ist, 0 sonst
  260. DLLEXPORT virtual bool istPunktInnen(int x, int y) const;
  261. //! Gibt einen Zeiger auf das Tooltip Objekt zurück, walls es verwendet
  262. //! wird
  263. DLLEXPORT ToolTip* getToolTip() const;
  264. //! Gibt einen Zeiger auf das Tooltip Objekt ohne erhöhten Reference
  265. //! Counter zurück, walls es verwendet wird
  266. DLLEXPORT ToolTip* zToolTip() const;
  267. //! Gibt zurück, ob bestimmte Styles gesetzt wurden
  268. //! \param style Die Styles, die überprüft werden sollen
  269. //! \return 1, falls alle Styles in style gesetzt wurden
  270. DLLEXPORT bool hatStyle(__int64 style) const;
  271. //! Gibt zurück, ob bestimmte Styles nicht gesetzt wurden
  272. //! \param style Die Styles, die geprüft werden sollen
  273. //! \return 1, falls alle Styles in style nicht gesetzt wurden
  274. DLLEXPORT bool hatStyleNicht(__int64 style) const;
  275. //! returns all currently active styles
  276. DLLEXPORT __int64 getStyles() const;
  277. //! Kopiert die Komplette Zeichnung, so dass sie ohne Effekt auf das
  278. //! Original verändert werden kann
  279. DLLEXPORT virtual Zeichnung* dublizieren() const;
  280. };
  281. //! Eine Zeichnung für das 2D GUI Framework mit Hintergrund, Rahmen und
  282. //! Scroll Balken
  283. class ZeichnungHintergrund : public Zeichnung
  284. {
  285. public:
  286. class Style : public Zeichnung::Style
  287. {
  288. public:
  289. //! Wenn dieser Flag gesetzt wird, bekommt die Zeichnugn einen Rahmen
  290. static const __int64 Rahmen = 0x00010;
  291. //! Wenn dieser Flag gesetzt wird, bekommt die Zeichnung einen
  292. //! Hintergrund
  293. static const __int64 Hintergrund = 0x00020;
  294. //! Wenn dieser Flag gesetzt wird, wird der Hintergrund durchsichtig.
  295. //! Benötigt Flag Hintergrund
  296. static const __int64 HAlpha = 0x00040;
  297. //! Wenn dieser Flag gesetzt wird, wird ein Bild als hintergrund
  298. //! verwendet. Benötigt Flag Hintergrund
  299. static const __int64 HBild = 0x00080;
  300. //! Wenn dieser Flag gesetzt wird, Erscheint ein Farbübergang als
  301. //! Rahmen
  302. static const __int64 Buffered = 0x00100;
  303. //! Wenn dieser Flag gesetzt wird, erscheint eine Scrollbar am
  304. //! rechten Rand
  305. static const __int64 VScroll = 0x00200;
  306. //! Wenn dieser Flag gesetzt wird, erscheint eine Scrollbar am
  307. //! unteren Rand
  308. static const __int64 HScroll = 0x00400;
  309. //! Wenn dieser Flag gesetzt wird, wird das Bild skaliert
  310. static const __int64 HBildScale = 0x00800;
  311. };
  312. protected:
  313. int hintergrundFarbe;
  314. Rahmen* rahmen;
  315. Bild* hintergrundBild;
  316. AlphaFeld* hintergrundFeld;
  317. VScrollBar* vertikalScrollBar;
  318. HScrollBar* horizontalScrollBar;
  319. Punkt innenPosition;
  320. Punkt innenSize;
  321. protected:
  322. //! Verarbeitet Maus Nachrichten
  323. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  324. DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
  325. public:
  326. //! Konstruktor
  327. DLLEXPORT ZeichnungHintergrund();
  328. //! Destruktor
  329. DLLEXPORT virtual ~ZeichnungHintergrund();
  330. //! Setzt das Hintergrund Bild (benötigt Flag zum Zeichnen:
  331. //! Style::Hintergrund, HBild) \param bild Das Bild wird kopiert und als
  332. //! Hintergrundbild verwendet
  333. DLLEXPORT void setHintergrundBild(Bild* bild);
  334. //! Setzt einen Zeiger auf das Hintergrund Bild (benötigt Flag zum
  335. //! Zeichnen: Style::Hintergrund) \param bild Das Bild wid ohne es zu
  336. //! kopieren verwendet
  337. DLLEXPORT void setHintergrundBildZ(Bild* bild);
  338. //! Setzt die Hintergrund Farbe (benötigt Flag zum Zeichnen:
  339. //! Style::Hintergrund) \param fc Die Hintergrundfarbe im A8R8G8B8
  340. //! Format
  341. DLLEXPORT void setHintergrundFarbe(int fc);
  342. //! Setzt einen Zeiger auf das AlphaFeld (benötigt Flag zum Zeichnen:
  343. //! Style::Buffered) \param buff Das AlphaFeld, das über den Hintergrund
  344. //! gezeichnet werden soll
  345. DLLEXPORT void setAlphaFeldZ(AlphaFeld* buff);
  346. //! Setzt die Stärke des AlphaFeldes (benötigt Flag zum Zeichnen:
  347. //! Style::Buffered) \param st Die Stärke des AlphaFeldes, welches über
  348. //! dem Hintergrund gezeichnet werden soll
  349. DLLEXPORT void setAlphaFeldStrength(int st);
  350. //! Setzt die Farbe des AlphaFeldes (benötigt Flag zum Zeichnen:
  351. //! Style::Buffered) \param fc Die Farbe des AlphaFeldes, welches über
  352. //! dem Hintergrund gezeichnet werden soll
  353. DLLEXPORT void setAlphaFeldFarbe(int fc);
  354. //! Setzt einen Zeiger zu dem Linien Rahmen, der um das TextFeld
  355. //! gezeichnet werden soll (benötigt Flag zum Zeichnen: Style::Rahmen)
  356. //! \param ram Der Rahmen
  357. DLLEXPORT void setRahmenZ(Rahmen* ram);
  358. //! Setzt die Breite des Linien Rahmens (benötigt Flag zum Zeichnen:
  359. //! Style::Rahmen) \param br Die Breite in Pixeln
  360. DLLEXPORT void setRahmenBreite(int br);
  361. //! Setzt die Farbe des Linien Rahmens (benötigt Flag zum Zeichnen:
  362. //! Style::Rahmen) \param fc Die Farbe im A8R8G8B8 Format
  363. DLLEXPORT void setRahmenFarbe(int fc);
  364. //! Setzt die Scrollgeschwindigkeit der vertikalen ScrollBar (benötigt
  365. //! Flag zum Zeichnen: Style::VScroll) \param ks Die
  366. //! Scrollgeschwindigkeit in Pixeln für jeden Maus Klick
  367. DLLEXPORT void setVertikalKlickScroll(int ks);
  368. //! Scrollt an eine Bestimmte Stelle bei der vertikalen ScrollBar
  369. //! (benötigt Flag zum Zeichnen: Style::VScroll) \param pos Das Scroll
  370. //! Offset in Pixeln.
  371. DLLEXPORT void setVertikalScrollPos(int pos);
  372. //! Setzt die Farbe der vertikalen ScrollBar (benötigt Flag zum
  373. //! Zeichnen: Style::VScroll) \param f Die Fordergrundfarbe der
  374. //! ScrollBar im A8R8G8B8 Format \param bgF Die Hintergrundfarbe der
  375. //! ScrollBar im A8R8G8B8 Format
  376. DLLEXPORT void setVertikalScrollFarbe(int f, int bgF);
  377. //! Setzt die Scrollgeschwindigkeit der horizontalen ScrollBar (benötigt
  378. //! Flag zum Zeichnen: Style::HScroll) \param ks Die
  379. //! Scrollgeschwindigkeit in Pixeln für jeden Maus Klick
  380. DLLEXPORT void setHorizontalKlickScroll(int ks);
  381. //! Scrollt an eine Bestimmte Stelle bei der horizontalen ScrollBar
  382. //! (benötigt Flag zum Zeichnen: Style::HScroll) \param pos Das Scroll
  383. //! Offset in Pixeln.
  384. DLLEXPORT void setHorizontalScrollPos(int pos);
  385. //! Setzt die Farbe der horizontalen ScrollBar (benötigt Flag zum
  386. //! Zeichnen: Style::HScroll) \param f Die Fordergrundfarbe der
  387. //! ScrollBar im A8R8G8B8 Format \param bgF Die Hintergrundfarbe der
  388. //! ScrollBar im A8R8G8B8 Format
  389. DLLEXPORT void setHorizontalScrollFarbe(int f, int bgF);
  390. //! Updated den Zeichenhintergrund
  391. //! \param tickVal Die vergangene Zeit in Sekunden, die seit dem Letzten
  392. //! Aufruf dieser Funktion verstrichen ist \return 1, wenn das Bild neu
  393. //! gezeichnet werden muss. 0 sonnst
  394. DLLEXPORT bool tick(double tickVal) override;
  395. //! Zeichnet den Hintergrund eines Zeichnunges nach rObj
  396. DLLEXPORT void render(Bild& rObj) override;
  397. //! Gibt die Breite des Innenraumes in der Zeichnung in Pixeln zurück
  398. DLLEXPORT virtual int getInnenBreite() const override;
  399. //! Gibt die Höhe des Innenraumes in der Zeichnung in Pixeln zurück
  400. DLLEXPORT virtual int getInnenHeight() const override;
  401. //! Gibt das Hintergrundbild zurück.
  402. //! \return 0, falls kein Hintergrundbild verwendet wird
  403. DLLEXPORT Bild* getHintergrundBild() const;
  404. //! Gibt das Hintergrundbild ohne erhöhten reference Counter zurück.
  405. //! \return 0, falls kein Hintergrundbild verwendet wird
  406. DLLEXPORT Bild* zHintergrundBild() const;
  407. //! Gibt die Hintergrundfarbe im A8R8G8B8 Format zurück
  408. DLLEXPORT int getHintergrundFarbe() const;
  409. //! Gibt das AlphaFeld zurück, das über den Hintergrund gezeichnet wird.
  410. //! \return 0, falls das AlphaFeld nicht definiert wurde
  411. DLLEXPORT AlphaFeld* getAlphaFeld() const;
  412. //! Gibt das AlphaFeld ohne erhöhten Reference Counter zurück, das über
  413. //! den Hintergrund gezeichnet wird. \return 0, falls das AlphaFeld
  414. //! nicht definiert wurde
  415. DLLEXPORT AlphaFeld* zAlphaFeld() const;
  416. //! Git die Stärke des Alphafeldes zurück
  417. DLLEXPORT int getAlphaFeldStrength() const;
  418. //! Gibt die Farbe des Alphafedes im A8R8G8B8 Format zurück
  419. DLLEXPORT int getAlphaFeldFarbe() const;
  420. //! Gibt den Rahmen zurück
  421. //! \return 0, falls kein Rahmen definiert wurde
  422. DLLEXPORT Rahmen* getRahmen() const;
  423. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück
  424. //! \return 0, falls kein Rahmen definiert wurde
  425. DLLEXPORT Rahmen* zRahmen() const;
  426. //! Gibt die Breite des Rahmens in Pixeln zurück
  427. DLLEXPORT int getRahmenBreite() const;
  428. //! Gibt die Farbe des Rahmens im A8R8G8B8 Format zurück
  429. DLLEXPORT int getRahmenFarbe() const;
  430. //! Gibt die Scroll geschwindigkeit der vertikalen Scroll Bar zurück
  431. DLLEXPORT int getVertikalKlickScroll() const;
  432. //! Gibt die Scroll Position der vertikalen Scroll Bar zurück
  433. DLLEXPORT int getVertikalScrollPos() const;
  434. //! Gibt die Farbe der vertikalen Scroll Bar im A8R8G8B8 Format zurück
  435. DLLEXPORT int getVertikalScrollFarbe() const;
  436. //! Gibt die Hintergrundfarbe der vertikalen Scroll Bar im A8R8G8B8
  437. //! Format zurück
  438. DLLEXPORT int getVertikalScrollHintergrund() const;
  439. //! Gibt die Scroll geschwindigkeit der horizontalen Scroll Bar zurück
  440. DLLEXPORT int getHorizontalKlickScroll() const;
  441. //! Gibt die Scroll Position der horizontalen Scroll Bar zurück
  442. DLLEXPORT int getHorizontalScrollPos() const;
  443. //! Gibt die Farbe der horizontalen Scroll Bar im A8R8G8B8 Format zurück
  444. DLLEXPORT int getHorizontalScrollFarbe() const;
  445. //! Gibt die Hintergrundfarbe der horizontalen Scroll Bar im A8R8G8B8
  446. //! Format zurück
  447. DLLEXPORT int getHorizontalScrollHintergrund() const;
  448. //! Erzeugt eine Kopie der Zeichnung, die ohne Auswirkungen auf das
  449. //! Original verändert werden kann
  450. DLLEXPORT virtual Zeichnung* dublizieren() const;
  451. };
  452. } // namespace Framework
  453. #endif