#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; }; } #endif