#pragma once #include #include #include #include #include #include #include #include using namespace Framework; namespace Model2DEditor { class VertexData : public virtual ReferenceCounter { private: Vec2 vertex; Vertex textur; bool selected; bool sichtbar; public: // Konstruktor VertexData(Vec2 v, Vertex t); // nicht constant void nachLinks(float num); void nachOben(float num); void setPosition(Vertex p); void setTextur(Vertex tp); void saveTextur(Punkt tPos, Punkt tGr); void select(Punkt p1, Punkt p2); void deSelect(); void setAuswahl(bool ausw); void setSichtbar(bool s); // constant bool istSichtbar() const; bool istAusgewählt() const; Vec2 getPos() const; Vertex getTPos() const; }; class PolygonData : public virtual ReferenceCounter { private: RCArray* vd; Text name; bool transparent; bool sichtbar; public: // Konstruktor PolygonData(const Polygon2D& pg); // Destruktor ~PolygonData(); // nicht constant void addVertex(Vec2 v, Vertex t); void removeVertex(int num); void nachLinks(float num); void nachOben(float num); void saveTextur(Punkt tPos, Punkt tGr); void select(Punkt p1, Punkt p2); void deSelect(); void setSichtbar(bool s); void setTransparent(bool t); void setName(const char* name); // constant const char* getName() const; bool istSichtbar() const; VertexData* zVertex(int num) const; int getVertexAnzahl() const; void getM2(Polygon2D& pd, bool textur) const; bool istTransparent() const; }; class Data : public virtual ReferenceCounter { private: RCArray* pd; Bild* textur; Punkt tPos; bool rTextur; int sp; public: // Konstruktor Data(Model2DData* mdl); // Destruktor ~Data(); // nicht constant void addPolygon(); void removePolygon(int num); void selectPolygon(int num); void nachLinks(float num); void nachOben(float num); void tNachLinks(int num); void tNachOben(int num); void setRTextur(bool rt); void saveTextur(); void setTextur(Bild* t); void select(Punkt p1, Punkt p2); void deSelect(); // constant PolygonData* zPolygon(int num) const; int getPolygonAnzahl() const; int getSelectedPolygon() const; Model2DData* getM2() const; Bild* zTextur() const; Punkt getTPos() const; }; class EditorListe : public Zeichnung { private: LRahmen* ram; VScrollBar* scroll; Data* data; Array ausgeklappt; TextRenderer* tr; TextFeld* pName; Fenster* koordF; TextFeld* kxT; TextFeld* kyT; TextFeld* kx; TextFeld* ky; TextFeld* tkxT; TextFeld* tkyT; TextFeld* tkx; TextFeld* tky; int polI; int verI; public: // Konstruktor EditorListe(); // Destruktor ~EditorListe(); // nicht constant void setDataZ(Data* d); void doPublicMausEreignis(MausEreignis& me) override; void doTastaturEreignis(TastaturEreignis& te) override; bool tick(double zeit) override; void render(Bild& zRObj) override; }; class Editor2D : public Zeichnung { private: Punkt pos; Punkt offs; Data* data; LRahmen* ram; LRahmen* select; TextRenderer* tr; Punkt mausPos; Vertex addV; bool mausIn; float größe; public: // Konstruktor Editor2D(); // Destruktor ~Editor2D(); // nicht constant void setDataZ(Data* d); void doPublicMausEreignis(MausEreignis& me) override; void doTastaturEreignis(TastaturEreignis& te) override; bool tick(double zeit) override; void render(Bild& zRObj) override; }; class GUI : public Zeichnung { private: Knopf* speichern; Knopf* abbrechen; Editor2D* editor; EditorListe* liste; KontrollKnopf* textur; Knopf* texturLaden; Knopf* texturVerknüpfen; DateiDialogTh* importDialog; Data* data; bool sichtbar; unsigned char alpha; int aktion; public: // Konstruktor GUI(); // Destruktor ~GUI(); // nicht constant void setSichtbar(bool s); void setModel(Model2DData* data); void doPublicMausEreignis(MausEreignis& me) override; void doTastaturEreignis(TastaturEreignis& te) override; bool tick(double zeit) override; void render(Bild& zRObj) override; int getAktion(); // const Model2DData* getM2Data() const; }; } // namespace Model2DEditor