M2DVorschau.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #include "Zeichnung.h"
  3. namespace Framework
  4. {
  5. class Model2D; //! Model2D.h
  6. class Model2DData; //! Model2D.h
  7. class Rahmen; //! Rahmen.h
  8. class AlphaFeld; //! AlphaFeld.h
  9. struct MausEreignis; //! MausEreignis.h
  10. //! Eine Zeichnung des 2D GUI Frameworkd, die ein 2D Modell anzeigt
  11. class M2DVorschau : public ZeichnungHintergrund
  12. {
  13. public:
  14. class Style : public ZeichnungHintergrund::Style
  15. {
  16. public:
  17. //! Wenn dieser Style gesetzt ist, kann der Benutzer
  18. //! das Model Skallieren, indem er scrollt
  19. static const __int64 UsrScale = 0x001000;
  20. //! Wenn dieser Style gesetzt ist, kann der Benutzer
  21. //! das Model per Drag and Drop verschieben
  22. static const __int64 UsrMove = 0x002000;
  23. //! Wenn dieser Style gesetzt idt, kann der Benutzer
  24. //! das Model mit der rechten Maustaste drehen
  25. static const __int64 UsrRot = 0x004000;
  26. };
  27. private:
  28. Model2D* mdl;
  29. Rahmen* ram;
  30. AlphaFeld* af;
  31. int bgF;
  32. int mx;
  33. int my;
  34. //! Verarbeitet Maus Nachrichten
  35. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  36. DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
  37. public:
  38. //! Konstruktor
  39. DLLEXPORT M2DVorschau();
  40. //! Destruktor
  41. DLLEXPORT virtual ~M2DVorschau();
  42. //! Setzt einen Zeiger auf das Model, das angezeigt werden soll
  43. //! \param mdl Das Model
  44. DLLEXPORT void setModel2DZ(Model2D* mdl);
  45. //! Setzt die Daten des Models, das angezeigt werden soll
  46. //! \param mdl Die Daten
  47. DLLEXPORT void setModel2D(Model2DData* mdl);
  48. //! Aktualisiert das Objekt. Wird vom Framework aufgerufen
  49. //! \param tickVal Die Zeit in sekunden, die seit dem lezten Aufruf
  50. //! dieser Funktion vergangen ist \return 1, wenn sich etwas verändert
  51. //! hat und das Bild neu gezeichnet werden muss. 0 sonst
  52. DLLEXPORT bool tick(double tv) override;
  53. //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  54. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  55. DLLEXPORT void render(Bild& rb) override;
  56. //! Gibt das angezeigte Model ohne erhöhten Reference Counter zurück
  57. DLLEXPORT Model2D* zModel() const;
  58. //! Gibt das angezeigte Model zurück
  59. DLLEXPORT Model2D* getModel() const;
  60. //! Erzeugt eine Komplette Kopie der Zeichnung, die ohne auswirkungen
  61. //! auf die Originale verändert werden kann
  62. DLLEXPORT Zeichnung* dublizieren() const override;
  63. };
  64. } // namespace Framework