Scroll.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #ifndef Scroll_H
  2. #define Scroll_H
  3. #include "Betriebssystem.h"
  4. namespace Framework
  5. {
  6. class Bild; //! Bild.h
  7. struct MausEreignis; //! MausEreignis.h
  8. struct ScrollData
  9. {
  10. int anzeige;
  11. int max;
  12. int scrollPos;
  13. };
  14. //! Die Baseklasse vür die Horizontale und Vertikale Scrollbar
  15. class ScrollBar
  16. {
  17. protected:
  18. ScrollData *data;
  19. int knopfdruck;
  20. int farbe;
  21. int bgFarbe;
  22. bool bg;
  23. int klickScroll;
  24. int mx, my;
  25. bool mp;
  26. bool rend;
  27. int ref;
  28. public:
  29. //! Konstruktor
  30. DLLEXPORT ScrollBar();
  31. //! Destruktor
  32. DLLEXPORT virtual ~ScrollBar();
  33. //! Setzt die Fordergrundfarbe der Scrollbar
  34. //! \param fc Die Farbe in A8R8G8B8 Format
  35. DLLEXPORT void setFarbe( int fc );
  36. //! Setzt die Hintergrundfarbe der Scrollbar
  37. //! \param fc Die Farbe in A8R8G8B8 Format
  38. //! \param bgF 1, fals ein Hintergrund gezeichnet werden soll
  39. DLLEXPORT void setBgFarbe( int fc, bool bgF );
  40. //! Aktualisiert die Scrollbar
  41. //! \param maxGr Die Maximale Größe des Fensters in Pixeln
  42. //! \param anzeigeGr Die angezeigte Größe des Fensters in Pixeln
  43. DLLEXPORT void update( int maxGr, int anzeigeGr );
  44. //! Setzt die Scroll geschwindigkeit
  45. //! \param klickScroll Die anzahl an Pixeln, die pro Klick gescrollt werden
  46. DLLEXPORT void setKlickScroll( int klickScroll );
  47. //! Scrollt zu einer bestimmten Position
  48. //! \param pos Die Position in Pixeln im Fenster, ab der gezeichnet werden soll
  49. DLLEXPORT void scroll( int pos );
  50. //! Verarbeitet ein Maus Ereignis
  51. //! \param x Die X Position der Scroll Bar im Fenster
  52. //! \param y Die Y Position der Scroll Bar im Fenster
  53. //! \param br Die Breite der Scroll Bar
  54. //! \param hi Die Höhe der Scroll Bar
  55. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht den verarbeitet flag des Maus Ereignisses
  56. DLLEXPORT virtual bool doMausMessage( int x, int y, int br, int hi, MausEreignis &me ) = 0;
  57. //! Gibt zurück, ob sich die Scrollbar seit dem letzten Aufruf der Funktion verändert hat
  58. DLLEXPORT bool getRend();
  59. //! Zeichnet die Scrollbar
  60. //! \param x Die X Position der Scroll Bar
  61. //! \param y Die Y Position der Scroll Bar
  62. //! \param br Die Breite der Scroll Bar
  63. //! \param hi Die Höhe der Scroll Bar
  64. //! \param zRObj Das Bild, in das gezeichnet werden soll
  65. DLLEXPORT virtual void render( int x, int y, int br, int hi, Bild &zRObj ) const = 0;
  66. //! Gibt einen zeiger auf die Scroll Daten zurück
  67. DLLEXPORT ScrollData *getScrollData() const;
  68. //! Gibt die Scroll geschwindigkeit zurück. Die Anzahl der gescrollten Pixel pro Klick
  69. DLLEXPORT int getKlickScroll() const;
  70. //! Gibt die Fordergrundfarbe der Scrollbar zurück
  71. DLLEXPORT int getFarbe() const;
  72. //! Gibt die Hintergrundfarbe der Scrollbar zurück
  73. DLLEXPORT int getBgFarbe() const;
  74. //! Gibt die aktuelle Scroll Position zurück
  75. DLLEXPORT int getScroll() const;
  76. //! Erhöht den Reference Counting Zähler.
  77. //! \return this.
  78. DLLEXPORT ScrollBar *getThis();
  79. //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
  80. //! \return 0.
  81. DLLEXPORT ScrollBar *release();
  82. };
  83. //! Eine vertikale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des Frameworks verwendet wird
  84. class VScrollBar : public ScrollBar
  85. {
  86. public:
  87. //! Konstruktor
  88. DLLEXPORT VScrollBar();
  89. //! Destruktor
  90. DLLEXPORT virtual ~VScrollBar();
  91. //! Verarbeitet ein Maus Ereignis
  92. //! \param x Die X Position der Scroll Bar im Fenster
  93. //! \param y Die Y Position der Scroll Bar im Fenster
  94. //! \param br Die Breite der Scroll Bar
  95. //! \param hi Die Höhe der Scroll Bar
  96. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht den verarbeitet flag des Maus Ereignisses
  97. DLLEXPORT bool doMausMessage( int x, int y, int br, int hi, MausEreignis &me ) override;
  98. //! Zeichnet die Scrollbar
  99. //! \param x Die X Position der Scroll Bar
  100. //! \param y Die Y Position der Scroll Bar
  101. //! \param br Die Breite der Scroll Bar
  102. //! \param hi Die Höhe der Scroll Bar
  103. //! \param zRObj Das Bild, in das gezeichnet werden soll
  104. DLLEXPORT void render( int x, int y, int br, int hi, Bild &zRObj ) const override;
  105. };
  106. //! Eine horizontale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des Frameworks verwendet wird
  107. class HScrollBar : public ScrollBar
  108. {
  109. public:
  110. //! Konstruktor
  111. DLLEXPORT HScrollBar();
  112. //! Destruktor
  113. DLLEXPORT virtual ~HScrollBar();
  114. //! Verarbeitet ein Maus Ereignis
  115. //! \param x Die X Position der Scroll Bar im Fenster
  116. //! \param y Die Y Position der Scroll Bar im Fenster
  117. //! \param br Die Breite der Scroll Bar
  118. //! \param hi Die Höhe der Scroll Bar
  119. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht den verarbeitet flag des Maus Ereignisses
  120. DLLEXPORT bool doMausMessage( int x, int y, int br, int hi, MausEreignis &me ) override;
  121. //! Zeichnet die Scrollbar
  122. //! \param x Die X Position der Scroll Bar
  123. //! \param y Die Y Position der Scroll Bar
  124. //! \param br Die Breite der Scroll Bar
  125. //! \param hi Die Höhe der Scroll Bar
  126. //! \param zRObj Das Bild, in das gezeichnet werden soll
  127. DLLEXPORT void render( int x, int y, int br, int hi, Bild &zRObj ) const override;
  128. };
  129. }
  130. #endif