ToolTip.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #ifndef ToolTip_H
  2. #define ToolTip_H
  3. #include <functional>
  4. #include "Array.h"
  5. #include "Zeichnung.h"
  6. namespace Framework
  7. {
  8. class Schrift; //! Schrift.h
  9. class Bild; //! Bild.h
  10. class AlphaFeld; //! AlphaFeld.h
  11. class Text; //! Text.h
  12. class Rahmen; //! Rahmen.h
  13. struct MausEreignis; //! MausEreignis.h
  14. class Bildschirm; //! Bildschirm.h
  15. #ifdef WIN32
  16. # pragma vtordisp(push, 2)
  17. #endif
  18. class ToolTip : public ZeichnungHintergrund
  19. {
  20. private:
  21. RCArray<Zeichnung>* members;
  22. Punkt size;
  23. double animationSpeed;
  24. double warten;
  25. double wartenCount;
  26. double tval;
  27. bool mausIn;
  28. unsigned char alpha;
  29. bool sichtbar;
  30. bool zeichnen;
  31. bool mausIn2;
  32. Bildschirm* bildschirm;
  33. std::function<void(ToolTip*)> onShow;
  34. std::function<void(ToolTip*)> onHide;
  35. //! Verarbeitet Maus Nachrichten
  36. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  37. DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
  38. public:
  39. //! Konstruktor
  40. DLLEXPORT ToolTip(Bildschirm* zSceen);
  41. //! Destruktor
  42. DLLEXPORT ~ToolTip();
  43. //! Fügt eine Zeichnung zum Tooltip hinzu
  44. //! \param m die neue Zeichnung
  45. DLLEXPORT void addMember(Zeichnung* m);
  46. //! Entfernt eine Zeichnung vom Tooltip
  47. //! \param m die Zeichnung
  48. DLLEXPORT void removeMember(Zeichnung* zM);
  49. //! Entfernt eine Zeichnung vom Tooltip
  50. //! \param i der Index der Zeichnung
  51. DLLEXPORT void removeMember(int i);
  52. //! setzt eine Funktion, die aufgerufen wird, sobald der Tooltip
  53. //! angezeigt wird \param onShow Die Funktion
  54. DLLEXPORT void setShowEvent(std::function<void(ToolTip*)> onShow);
  55. //! setzt eine Funktion, die aufgerufen wird, sobald der Tooltip nicht
  56. //! mehr angezeigt wird \param onShow Die Funktion
  57. DLLEXPORT void setHideEvent(std::function<void(ToolTip*)> onHide);
  58. //! Setzt die anzahl an Seunden, de gewartet wird bis der Tipp erscheint
  59. //! \param warten Die Anzahl an Sekunden
  60. DLLEXPORT void setWarten(double warten);
  61. //! Legt fest, wie schnell der Tipp erscheint
  62. //! \param speed Anzahl der Pixel, die pro Sekunde eingeblendet werden.
  63. //! (Standart: 250)
  64. DLLEXPORT void setAnimationSpeed(double speed);
  65. //! Legt Fest, ob die Maus in dem Zeichnung ist, zu dem der Tip gehört
  66. //! \param mausIn 1, wenn die Maus in dem Zeichnung ist. 0 sonst
  67. DLLEXPORT void setMausIn(bool mausIn);
  68. //! Setzt den Counter zurück, der zählt, wann der Tipp eingeblendet
  69. //! wird.
  70. DLLEXPORT void wartenReset();
  71. //! Legt fest, das das Zeichnung, zu dem der Tip gehört gezeichnet
  72. //! wurde, so dass der Tip auch gezeichnet werden könnte
  73. DLLEXPORT void setZeichnen();
  74. //! Aktualisiert den Tip. Wird vom Framework aufgerufen
  75. //! \param tickVal Die Zeit in sekunden, die seit dem lezten Aufruf
  76. //! dieser Funktion vergangen ist \return 1, wenn sich etwas verändert
  77. //! hat und das Bild neu gezeichnet werden muss. 0 sonst
  78. DLLEXPORT bool tick(double tickVal) override;
  79. //! Zeichnet den Tip nach zRObj, falls er sichtbar ist und das
  80. //! zugehörige Zeichnung ebenfalls gezeichnet wurde \param zRObj Das
  81. //! Bild, in welches gezeichnet werden soll
  82. DLLEXPORT void render(Bild& zRObj) override;
  83. //! Gibt einen Zeiger auf den Bildschirm ohne erhöhten Reference Counter
  84. //! zurück, so dem der Tooltip gehört.
  85. DLLEXPORT Bildschirm* zBildschirm() const;
  86. //! Gibt ein bestimmten member zurück (ohne erhöhten Reference Counter)
  87. //! \param i der Index des Members
  88. DLLEXPORT Zeichnung* zMember(int i) const;
  89. //! Gibt ein bestimmten member zurück
  90. //! \param i der Index des Members
  91. DLLEXPORT Zeichnung* getMember(int i) const;
  92. //! Gibt die Anzahl an Zeichnungen zurück, die zum Tooltip gehören
  93. DLLEXPORT int getMemberAnzahl() const;
  94. //! Erzeugt eine komplette kopie eines tooltips
  95. DLLEXPORT Zeichnung* dublizieren() const override;
  96. //! Prüft ob der Tooltip im moment angezeigt wird
  97. DLLEXPORT bool isVisible() const;
  98. };
  99. #ifdef WIN32
  100. # pragma vtordisp(pop)
  101. #endif
  102. } // namespace Framework
  103. #endif