Scroll.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #ifndef Scroll_H
  2. #define Scroll_H
  3. #include "Betriebssystem.h"
  4. #include "ReferenceCounter.h"
  5. namespace Framework
  6. {
  7. class Bild; //! Bild.h
  8. struct MausEreignis; //! MausEreignis.h
  9. struct ScrollData
  10. {
  11. int anzeige;
  12. int max;
  13. int scrollPos;
  14. };
  15. //! Die Baseklasse vür die Horizontale und Vertikale Scrollbar
  16. class ScrollBar : public virtual ReferenceCounter
  17. {
  18. protected:
  19. ScrollData* data;
  20. int knopfdruck;
  21. int farbe;
  22. int bgFarbe;
  23. bool bg;
  24. int klickScroll;
  25. int mx, my;
  26. bool mp;
  27. bool rend;
  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
  46. //! werden
  47. DLLEXPORT void setKlickScroll(int klickScroll);
  48. //! Scrollt zu einer bestimmten Position
  49. //! \param pos Die Position in Pixeln im Fenster, ab der gezeichnet
  50. //! werden soll
  51. DLLEXPORT void scroll(int pos);
  52. //! Verarbeitet ein Maus Ereignis
  53. //! \param x Die X Position der Scroll Bar im Fenster
  54. //! \param y Die Y Position der Scroll Bar im Fenster
  55. //! \param br Die Breite der Scroll Bar
  56. //! \param hi Die Höhe der Scroll Bar
  57. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht
  58. //! den verarbeitet flag des Maus Ereignisses
  59. DLLEXPORT virtual bool doMausMessage(
  60. int x, int y, int br, int hi, MausEreignis& me)
  61. = 0;
  62. //! Gibt zurück, ob sich die Scrollbar seit dem letzten Aufruf der
  63. //! Funktion verändert hat
  64. DLLEXPORT bool getRend();
  65. //! Zeichnet die Scrollbar
  66. //! \param x Die X Position der Scroll Bar
  67. //! \param y Die Y Position der Scroll Bar
  68. //! \param br Die Breite der Scroll Bar
  69. //! \param hi Die Höhe der Scroll Bar
  70. //! \param zRObj Das Bild, in das gezeichnet werden soll
  71. DLLEXPORT virtual void render(
  72. int x, int y, int br, int hi, Bild& zRObj) const = 0;
  73. //! Gibt einen zeiger auf die Scroll Daten zurück
  74. DLLEXPORT ScrollData* getScrollData() const;
  75. //! Gibt die Scroll geschwindigkeit zurück. Die Anzahl der gescrollten
  76. //! Pixel pro Klick
  77. DLLEXPORT int getKlickScroll() const;
  78. //! Gibt die Fordergrundfarbe der Scrollbar zurück
  79. DLLEXPORT int getFarbe() const;
  80. //! Gibt die Hintergrundfarbe der Scrollbar zurück
  81. DLLEXPORT int getBgFarbe() const;
  82. //! Gibt die aktuelle Scroll Position zurück
  83. DLLEXPORT int getScroll() const;
  84. };
  85. //! Eine vertikale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des
  86. //! Frameworks verwendet wird
  87. class VScrollBar : public ScrollBar
  88. {
  89. public:
  90. //! Konstruktor
  91. DLLEXPORT VScrollBar();
  92. //! Destruktor
  93. DLLEXPORT virtual ~VScrollBar();
  94. //! Verarbeitet ein Maus Ereignis
  95. //! \param x Die X Position der Scroll Bar im Fenster
  96. //! \param y Die Y Position der Scroll Bar im Fenster
  97. //! \param br Die Breite der Scroll Bar
  98. //! \param hi Die Höhe der Scroll Bar
  99. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht
  100. //! den verarbeitet flag des Maus Ereignisses
  101. DLLEXPORT bool doMausMessage(
  102. int x, int y, int br, int hi, MausEreignis& me) override;
  103. //! Zeichnet die Scrollbar
  104. //! \param x Die X Position der Scroll Bar
  105. //! \param y Die Y Position der Scroll Bar
  106. //! \param br Die Breite der Scroll Bar
  107. //! \param hi Die Höhe der Scroll Bar
  108. //! \param zRObj Das Bild, in das gezeichnet werden soll
  109. DLLEXPORT void render(
  110. int x, int y, int br, int hi, Bild& zRObj) const override;
  111. };
  112. //! Eine horizontale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des
  113. //! Frameworks verwendet wird
  114. class HScrollBar : public ScrollBar
  115. {
  116. public:
  117. //! Konstruktor
  118. DLLEXPORT HScrollBar();
  119. //! Destruktor
  120. DLLEXPORT virtual ~HScrollBar();
  121. //! Verarbeitet ein Maus Ereignis
  122. //! \param x Die X Position der Scroll Bar im Fenster
  123. //! \param y Die Y Position der Scroll Bar im Fenster
  124. //! \param br Die Breite der Scroll Bar
  125. //! \param hi Die Höhe der Scroll Bar
  126. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht
  127. //! den verarbeitet flag des Maus Ereignisses
  128. DLLEXPORT bool doMausMessage(
  129. int x, int y, int br, int hi, MausEreignis& me) override;
  130. //! Zeichnet die Scrollbar
  131. //! \param x Die X Position der Scroll Bar
  132. //! \param y Die Y Position der Scroll Bar
  133. //! \param br Die Breite der Scroll Bar
  134. //! \param hi Die Höhe der Scroll Bar
  135. //! \param zRObj Das Bild, in das gezeichnet werden soll
  136. DLLEXPORT void render(
  137. int x, int y, int br, int hi, Bild& zRObj) const override;
  138. };
  139. } // namespace Framework
  140. #endif