#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