#ifndef ToolTip_H #define ToolTip_H #include "Array.h" #include "Zeichnung.h" #include 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 class ToolTip : public ZeichnungHintergrund { private: RCArray< Zeichnung > *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< void( ToolTip * ) > onShow; std::function< void( ToolTip * ) > 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< void( ToolTip * ) > onShow ); //! setzt eine Funktion, die aufgerufen wird, sobald der Tooltip nicht mehr angezeigt wird //! \param onShow Die Funktion DLLEXPORT void setHideEvent( std::function< void( ToolTip * ) > 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; }; } #endif