KEDModel2DEditor.h 5.7 KB

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