123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #ifndef Scroll_H
- #define Scroll_H
- #include "Betriebssystem.h"
- #include "ReferenceCounter.h"
- namespace Framework
- {
- class Bild; //! Bild.h
- struct MausEreignis; //! MausEreignis.h
- struct ScrollData
- {
- int anzeige;
- int max;
- int scrollPos;
- };
- //! Die Baseklasse vür die Horizontale und Vertikale Scrollbar
- class ScrollBar : public virtual ReferenceCounter
- {
- protected:
- ScrollData* data;
- int knopfdruck;
- int farbe;
- int bgFarbe;
- bool bg;
- int klickScroll;
- int mx, my;
- bool mp;
- bool rend;
- public:
- //! Konstruktor
- DLLEXPORT ScrollBar();
- //! Destruktor
- DLLEXPORT virtual ~ScrollBar();
- //! Setzt die Fordergrundfarbe der Scrollbar
- //! \param fc Die Farbe in A8R8G8B8 Format
- DLLEXPORT void setFarbe(int fc);
- //! Setzt die Hintergrundfarbe der Scrollbar
- //! \param fc Die Farbe in A8R8G8B8 Format
- //! \param bgF 1, fals ein Hintergrund gezeichnet werden soll
- DLLEXPORT void setBgFarbe(int fc, bool bgF);
- //! Aktualisiert die Scrollbar
- //! \param maxGr Die Maximale Größe des Fensters in Pixeln
- //! \param anzeigeGr Die angezeigte Größe des Fensters in Pixeln
- DLLEXPORT void update(int maxGr, int anzeigeGr);
- //! Setzt die Scroll geschwindigkeit
- //! \param klickScroll Die anzahl an Pixeln, die pro Klick gescrollt
- //! werden
- DLLEXPORT void setKlickScroll(int klickScroll);
- //! Scrollt zu einer bestimmten Position
- //! \param pos Die Position in Pixeln im Fenster, ab der gezeichnet
- //! werden soll
- DLLEXPORT void scroll(int pos);
- //! Verarbeitet ein Maus Ereignis
- //! \param x Die X Position der Scroll Bar im Fenster
- //! \param y Die Y Position der Scroll Bar im Fenster
- //! \param br Die Breite der Scroll Bar
- //! \param hi Die Höhe der Scroll Bar
- //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht
- //! den verarbeitet flag des Maus Ereignisses
- DLLEXPORT virtual bool doMausMessage(
- int x, int y, int br, int hi, MausEreignis& me)
- = 0;
- //! Gibt zurück, ob sich die Scrollbar seit dem letzten Aufruf der
- //! Funktion verändert hat
- DLLEXPORT bool getRend();
- //! Zeichnet die Scrollbar
- //! \param x Die X Position der Scroll Bar
- //! \param y Die Y Position der Scroll Bar
- //! \param br Die Breite der Scroll Bar
- //! \param hi Die Höhe der Scroll Bar
- //! \param zRObj Das Bild, in das gezeichnet werden soll
- DLLEXPORT virtual void render(
- int x, int y, int br, int hi, Bild& zRObj) const = 0;
- //! Gibt einen zeiger auf die Scroll Daten zurück
- DLLEXPORT ScrollData* getScrollData() const;
- //! Gibt die Scroll geschwindigkeit zurück. Die Anzahl der gescrollten
- //! Pixel pro Klick
- DLLEXPORT int getKlickScroll() const;
- //! Gibt die Fordergrundfarbe der Scrollbar zurück
- DLLEXPORT int getFarbe() const;
- //! Gibt die Hintergrundfarbe der Scrollbar zurück
- DLLEXPORT int getBgFarbe() const;
- //! Gibt die aktuelle Scroll Position zurück
- DLLEXPORT int getScroll() const;
- };
- //! Eine vertikale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des
- //! Frameworks verwendet wird
- class VScrollBar : public ScrollBar
- {
- public:
- //! Konstruktor
- DLLEXPORT VScrollBar();
- //! Destruktor
- DLLEXPORT virtual ~VScrollBar();
- //! Verarbeitet ein Maus Ereignis
- //! \param x Die X Position der Scroll Bar im Fenster
- //! \param y Die Y Position der Scroll Bar im Fenster
- //! \param br Die Breite der Scroll Bar
- //! \param hi Die Höhe der Scroll Bar
- //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht
- //! den verarbeitet flag des Maus Ereignisses
- DLLEXPORT bool doMausMessage(
- int x, int y, int br, int hi, MausEreignis& me) override;
- //! Zeichnet die Scrollbar
- //! \param x Die X Position der Scroll Bar
- //! \param y Die Y Position der Scroll Bar
- //! \param br Die Breite der Scroll Bar
- //! \param hi Die Höhe der Scroll Bar
- //! \param zRObj Das Bild, in das gezeichnet werden soll
- DLLEXPORT void render(
- int x, int y, int br, int hi, Bild& zRObj) const override;
- };
- //! Eine horizontale Scrollbar, wie sie in manchen 2D GUI Zeichnungen des
- //! Frameworks verwendet wird
- class HScrollBar : public ScrollBar
- {
- public:
- //! Konstruktor
- DLLEXPORT HScrollBar();
- //! Destruktor
- DLLEXPORT virtual ~HScrollBar();
- //! Verarbeitet ein Maus Ereignis
- //! \param x Die X Position der Scroll Bar im Fenster
- //! \param y Die Y Position der Scroll Bar im Fenster
- //! \param br Die Breite der Scroll Bar
- //! \param hi Die Höhe der Scroll Bar
- //! \return 1, falls die Nachricht verarbeitet wurde. Setzt dafür nicht
- //! den verarbeitet flag des Maus Ereignisses
- DLLEXPORT bool doMausMessage(
- int x, int y, int br, int hi, MausEreignis& me) override;
- //! Zeichnet die Scrollbar
- //! \param x Die X Position der Scroll Bar
- //! \param y Die Y Position der Scroll Bar
- //! \param br Die Breite der Scroll Bar
- //! \param hi Die Höhe der Scroll Bar
- //! \param zRObj Das Bild, in das gezeichnet werden soll
- DLLEXPORT void render(
- int x, int y, int br, int hi, Bild& zRObj) const override;
- };
- } // namespace Framework
- #endif
|