KEDModel2DEditor.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. #pragma once
  2. #include <Knopf.h>
  3. #include <Array.h>
  4. #include <Punkt.h>
  5. #include <Bild.h>
  6. #include <Model2D.h>
  7. #include <DateiDialog.h>
  8. #include <Fenster.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( 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. }