Scroll.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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 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. };
  77. //! Eine vertikale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des Frameworks verwendet wird
  78. class VScrollBar : public ScrollBar
  79. {
  80. public:
  81. //! Konstruktor
  82. DLLEXPORT VScrollBar();
  83. //! Destruktor
  84. DLLEXPORT virtual ~VScrollBar();
  85. //! Verarbeitet ein Maus Ereignis
  86. //! \param x Die X Position der Scroll Bar im Fenster
  87. //! \param y Die Y Position der Scroll Bar im Fenster
  88. //! \param br Die Breite der Scroll Bar
  89. //! \param hi Die Höhe der Scroll Bar
  90. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht den verarbeitet flag des Maus Ereignisses
  91. DLLEXPORT bool doMausMessage( int x, int y, int br, int hi, MausEreignis &me ) override;
  92. //! Zeichnet die Scrollbar
  93. //! \param x Die X Position der Scroll Bar
  94. //! \param y Die Y Position der Scroll Bar
  95. //! \param br Die Breite der Scroll Bar
  96. //! \param hi Die Höhe der Scroll Bar
  97. //! \param zRObj Das Bild, in das gezeichnet werden soll
  98. DLLEXPORT void render( int x, int y, int br, int hi, Bild &zRObj ) const override;
  99. };
  100. //! Eine horizontale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des Frameworks verwendet wird
  101. class HScrollBar : public ScrollBar
  102. {
  103. public:
  104. //! Konstruktor
  105. DLLEXPORT HScrollBar();
  106. //! Destruktor
  107. DLLEXPORT virtual ~HScrollBar();
  108. //! Verarbeitet ein Maus Ereignis
  109. //! \param x Die X Position der Scroll Bar im Fenster
  110. //! \param y Die Y Position der Scroll Bar im Fenster
  111. //! \param br Die Breite der Scroll Bar
  112. //! \param hi Die Höhe der Scroll Bar
  113. //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht den verarbeitet flag des Maus Ereignisses
  114. DLLEXPORT bool doMausMessage( int x, int y, int br, int hi, MausEreignis &me ) override;
  115. //! Zeichnet die Scrollbar
  116. //! \param x Die X Position der Scroll Bar
  117. //! \param y Die Y Position der Scroll Bar
  118. //! \param br Die Breite der Scroll Bar
  119. //! \param hi Die Höhe der Scroll Bar
  120. //! \param zRObj Das Bild, in das gezeichnet werden soll
  121. DLLEXPORT void render( int x, int y, int br, int hi, Bild &zRObj ) const override;
  122. };
  123. }
  124. #endif