#ifndef ToolTip_H #define ToolTip_H #include #include "Array.h" #include "Zeichnung.h" namespace Framework { class Schrift; //! Schrift.h class Bild; //! Bild.h class AlphaFeld; //! AlphaFeld.h class Text; //! Text.h class Rahmen; //! Rahmen.h struct MausEreignis; //! MausEreignis.h class Bildschirm; //! Bildschirm.h #ifdef WIN32 # pragma vtordisp(push, 2) #endif class ToolTip : public ZeichnungHintergrund { private: RCArray* members; Punkt size; double animationSpeed; double warten; double wartenCount; double tval; bool mausIn; unsigned char alpha; bool sichtbar; bool zeichnen; bool mausIn2; Bildschirm* bildschirm; std::function onShow; std::function onHide; //! Verarbeitet Maus Nachrichten //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override; public: //! Konstruktor DLLEXPORT ToolTip(Bildschirm* zSceen); //! Destruktor DLLEXPORT ~ToolTip(); //! Fügt eine Zeichnung zum Tooltip hinzu //! \param m die neue Zeichnung DLLEXPORT void addMember(Zeichnung* m); //! Entfernt eine Zeichnung vom Tooltip //! \param m die Zeichnung DLLEXPORT void removeMember(Zeichnung* zM); //! Entfernt eine Zeichnung vom Tooltip //! \param i der Index der Zeichnung DLLEXPORT void removeMember(int i); //! setzt eine Funktion, die aufgerufen wird, sobald der Tooltip //! angezeigt wird \param onShow Die Funktion DLLEXPORT void setShowEvent(std::function onShow); //! setzt eine Funktion, die aufgerufen wird, sobald der Tooltip nicht //! mehr angezeigt wird \param onShow Die Funktion DLLEXPORT void setHideEvent(std::function onHide); //! Setzt die anzahl an Seunden, de gewartet wird bis der Tipp erscheint //! \param warten Die Anzahl an Sekunden DLLEXPORT void setWarten(double warten); //! Legt fest, wie schnell der Tipp erscheint //! \param speed Anzahl der Pixel, die pro Sekunde eingeblendet werden. //! (Standart: 250) DLLEXPORT void setAnimationSpeed(double speed); //! Legt Fest, ob die Maus in dem Zeichnung ist, zu dem der Tip gehört //! \param mausIn 1, wenn die Maus in dem Zeichnung ist. 0 sonst DLLEXPORT void setMausIn(bool mausIn); //! Setzt den Counter zurück, der zählt, wann der Tipp eingeblendet //! wird. DLLEXPORT void wartenReset(); //! Legt fest, das das Zeichnung, zu dem der Tip gehört gezeichnet //! wurde, so dass der Tip auch gezeichnet werden könnte DLLEXPORT void setZeichnen(); //! Aktualisiert den Tip. Wird vom Framework aufgerufen //! \param tickVal Die Zeit in sekunden, die seit dem lezten Aufruf //! dieser Funktion vergangen ist \return 1, wenn sich etwas verändert //! hat und das Bild neu gezeichnet werden muss. 0 sonst DLLEXPORT bool tick(double tickVal) override; //! Zeichnet den Tip nach zRObj, falls er sichtbar ist und das //! zugehörige Zeichnung ebenfalls gezeichnet wurde \param zRObj Das //! Bild, in welches gezeichnet werden soll DLLEXPORT void render(Bild& zRObj) override; //! Gibt einen Zeiger auf den Bildschirm ohne erhöhten Reference Counter //! zurück, so dem der Tooltip gehört. DLLEXPORT Bildschirm* zBildschirm() const; //! Gibt ein bestimmten member zurück (ohne erhöhten Reference Counter) //! \param i der Index des Members DLLEXPORT Zeichnung* zMember(int i) const; //! Gibt ein bestimmten member zurück //! \param i der Index des Members DLLEXPORT Zeichnung* getMember(int i) const; //! Gibt die Anzahl an Zeichnungen zurück, die zum Tooltip gehören DLLEXPORT int getMemberAnzahl() const; //! Erzeugt eine komplette kopie eines tooltips DLLEXPORT Zeichnung* dublizieren() const override; //! Prüft ob der Tooltip im moment angezeigt wird DLLEXPORT bool isVisible() const; }; #ifdef WIN32 # pragma vtordisp(pop) #endif } // namespace Framework #endif