#pragma once #include "Zeichnung.h" namespace Framework { class Model2D; //! Model2D.h class Model2DData; //! Model2D.h class Rahmen; //! Rahmen.h class AlphaFeld; //! AlphaFeld.h struct MausEreignis; //! MausEreignis.h //! Eine Zeichnung des 2D GUI Frameworkd, die ein 2D Modell anzeigt class M2DVorschau : public ZeichnungHintergrund { public: class Style : public ZeichnungHintergrund::Style { public: //! Wenn dieser Style gesetzt ist, kann der Benutzer //! das Model Skallieren, indem er scrollt static const __int64 UsrScale = 0x001000; //! Wenn dieser Style gesetzt ist, kann der Benutzer //! das Model per Drag and Drop verschieben static const __int64 UsrMove = 0x002000; //! Wenn dieser Style gesetzt idt, kann der Benutzer //! das Model mit der rechten Maustaste drehen static const __int64 UsrRot = 0x004000; }; private: Model2D* mdl; Rahmen* ram; AlphaFeld* af; int bgF; int mx; int my; //! 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 M2DVorschau(); //! Destruktor DLLEXPORT virtual ~M2DVorschau(); //! Setzt einen Zeiger auf das Model, das angezeigt werden soll //! \param mdl Das Model DLLEXPORT void setModel2DZ(Model2D* mdl); //! Setzt die Daten des Models, das angezeigt werden soll //! \param mdl Die Daten DLLEXPORT void setModel2D(Model2DData* mdl); //! Aktualisiert das Objekt. 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 tv) override; //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist //! \param zRObj Das Bild, in welches gezeichnet werden soll DLLEXPORT void render(Bild& rb) override; //! Gibt das angezeigte Model ohne erhöhten Reference Counter zurück DLLEXPORT Model2D* zModel() const; //! Gibt das angezeigte Model zurück DLLEXPORT Model2D* getModel() const; //! Erzeugt eine Komplette Kopie der Zeichnung, die ohne auswirkungen //! auf die Originale verändert werden kann DLLEXPORT Zeichnung* dublizieren() const override; }; } // namespace Framework