KEDModel2DEditor.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. #pragma once
  2. #include <Array.h>
  3. #include <Bild.h>
  4. #include <DateiDialog.h>
  5. #include <Fenster.h>
  6. #include <Knopf.h>
  7. #include <Model2D.h>
  8. #include <Punkt.h>
  9. #include <Rahmen.h>
  10. using namespace Framework;
  11. namespace Model2DEditor
  12. {
  13. class VertexData : public virtual ReferenceCounter
  14. {
  15. private:
  16. Vec2<float> vertex;
  17. Vertex textur;
  18. bool selected;
  19. bool sichtbar;
  20. public:
  21. // Konstruktor
  22. VertexData(Vec2<float> v, Vertex t);
  23. // nicht constant
  24. void nachLinks(float num);
  25. void nachOben(float num);
  26. void setPosition(Vertex p);
  27. void setTextur(Vertex tp);
  28. void saveTextur(Punkt tPos, Punkt tGr);
  29. void select(Punkt p1, Punkt p2);
  30. void deSelect();
  31. void setAuswahl(bool ausw);
  32. void setSichtbar(bool s);
  33. // constant
  34. bool istSichtbar() const;
  35. bool istAusgewählt() const;
  36. Vec2<float> getPos() const;
  37. Vertex getTPos() const;
  38. };
  39. class PolygonData : public virtual ReferenceCounter
  40. {
  41. private:
  42. RCArray<VertexData>* vd;
  43. Text name;
  44. bool transparent;
  45. bool sichtbar;
  46. public:
  47. // Konstruktor
  48. PolygonData(const Polygon2D& pg);
  49. // Destruktor
  50. ~PolygonData();
  51. // nicht constant
  52. void addVertex(Vec2<float> v, Vertex t);
  53. void removeVertex(int num);
  54. void nachLinks(float num);
  55. void nachOben(float num);
  56. void saveTextur(Punkt tPos, Punkt tGr);
  57. void select(Punkt p1, Punkt p2);
  58. void deSelect();
  59. void setSichtbar(bool s);
  60. void setTransparent(bool t);
  61. void setName(const char* name);
  62. // constant
  63. const char* getName() const;
  64. bool istSichtbar() const;
  65. VertexData* zVertex(int num) const;
  66. int getVertexAnzahl() const;
  67. void getM2(Polygon2D& pd, bool textur) const;
  68. bool istTransparent() const;
  69. };
  70. class Data : public virtual ReferenceCounter
  71. {
  72. private:
  73. RCArray<PolygonData>* pd;
  74. Bild* textur;
  75. Punkt tPos;
  76. bool rTextur;
  77. int sp;
  78. public:
  79. // Konstruktor
  80. Data(Model2DData* mdl);
  81. // Destruktor
  82. ~Data();
  83. // nicht constant
  84. void addPolygon();
  85. void removePolygon(int num);
  86. void selectPolygon(int num);
  87. void nachLinks(float num);
  88. void nachOben(float num);
  89. void tNachLinks(int num);
  90. void tNachOben(int num);
  91. void setRTextur(bool rt);
  92. void saveTextur();
  93. void setTextur(Bild* t);
  94. void select(Punkt p1, Punkt p2);
  95. void deSelect();
  96. // constant
  97. PolygonData* zPolygon(int num) const;
  98. int getPolygonAnzahl() const;
  99. int getSelectedPolygon() const;
  100. Model2DData* getM2() const;
  101. Bild* zTextur() const;
  102. Punkt getTPos() const;
  103. };
  104. class EditorListe : public Zeichnung
  105. {
  106. private:
  107. LRahmen* ram;
  108. VScrollBar* scroll;
  109. Data* data;
  110. Array<bool> ausgeklappt;
  111. TextRenderer* tr;
  112. TextFeld* pName;
  113. Fenster* koordF;
  114. TextFeld* kxT;
  115. TextFeld* kyT;
  116. TextFeld* kx;
  117. TextFeld* ky;
  118. TextFeld* tkxT;
  119. TextFeld* tkyT;
  120. TextFeld* tkx;
  121. TextFeld* tky;
  122. int polI;
  123. int verI;
  124. public:
  125. // Konstruktor
  126. EditorListe();
  127. // Destruktor
  128. ~EditorListe();
  129. // nicht constant
  130. void setDataZ(Data* d);
  131. void doPublicMausEreignis(MausEreignis& me) override;
  132. void doTastaturEreignis(TastaturEreignis& te) override;
  133. bool tick(double zeit) override;
  134. void render(Bild& zRObj) override;
  135. };
  136. class Editor2D : public Zeichnung
  137. {
  138. private:
  139. Punkt pos;
  140. Punkt offs;
  141. Data* data;
  142. LRahmen* ram;
  143. LRahmen* select;
  144. TextRenderer* tr;
  145. Punkt mausPos;
  146. Vertex addV;
  147. bool mausIn;
  148. float größe;
  149. public:
  150. // Konstruktor
  151. Editor2D();
  152. // Destruktor
  153. ~Editor2D();
  154. // nicht constant
  155. void setDataZ(Data* d);
  156. void doPublicMausEreignis(MausEreignis& me) override;
  157. void doTastaturEreignis(TastaturEreignis& te) override;
  158. bool tick(double zeit) override;
  159. void render(Bild& zRObj) override;
  160. };
  161. class GUI : public Zeichnung
  162. {
  163. private:
  164. Knopf* speichern;
  165. Knopf* abbrechen;
  166. Editor2D* editor;
  167. EditorListe* liste;
  168. KontrollKnopf* textur;
  169. Knopf* texturLaden;
  170. Knopf* texturVerknüpfen;
  171. DateiDialogTh* importDialog;
  172. Data* data;
  173. bool sichtbar;
  174. unsigned char alpha;
  175. int aktion;
  176. public:
  177. // Konstruktor
  178. GUI();
  179. // Destruktor
  180. ~GUI();
  181. // nicht constant
  182. void setSichtbar(bool s);
  183. void setModel(Model2DData* data);
  184. void doPublicMausEreignis(MausEreignis& me) override;
  185. void doTastaturEreignis(TastaturEreignis& te) override;
  186. bool tick(double zeit) override;
  187. void render(Bild& zRObj) override;
  188. int getAktion();
  189. // const
  190. Model2DData* getM2Data() const;
  191. };
  192. } // namespace Model2DEditor