Model2D.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #ifndef Model2D_H
  2. #define Model2D_H
  3. #ifdef WIN32
  4. #include "Zeichnung.h"
  5. #endif
  6. #include "Punkt.h"
  7. #include "Array.h"
  8. #include "DreieckListe.h"
  9. #include "Vec3.h"
  10. namespace Framework
  11. {
  12. typedef Vec2< float > Vertex;
  13. class Bild;
  14. // Model2D Klasse löscht die Zeiger
  15. struct Polygon2D
  16. {
  17. Array< Vertex > *vertex;
  18. Array< Punkt > *tKordinaten;
  19. };
  20. class Model2DData
  21. {
  22. private:
  23. RCArray< Array< Punkt > > outList;
  24. int ref;
  25. // privat
  26. bool istPunktInnen( Vertex p, int polygonId = -1 ) const;
  27. bool istLinieInnen( Vertex a, Vertex b, int polygonId = -1 ) const;
  28. public:
  29. Array< Polygon2D > *polygons;
  30. RCArray< RCArray< DreieckListe< Vertex > > > *vListen;
  31. Punkt minP, maxP;
  32. // Konstruktor
  33. __declspec( dllexport ) Model2DData();
  34. // Destruktor
  35. __declspec( dllexport ) ~Model2DData();
  36. // nicht constant
  37. __declspec( dllexport ) bool erstelleModell( Array< Polygon2D > *polygons );
  38. __declspec( dllexport ) void löscheModell(); // setzt die Vertex daten zurück
  39. // Reference Counting
  40. __declspec( dllexport ) Model2DData *getThis();
  41. __declspec( dllexport ) Model2DData *release();
  42. };
  43. #ifdef WIN32
  44. class Model2D : public Zeichnung
  45. #else
  46. class Model2D
  47. #endif
  48. {
  49. public:
  50. #ifdef WIN32
  51. class Style : public Zeichnung::Style
  52. {
  53. public:
  54. const static __int64 Textur = 0x8;
  55. const static __int64 Rahmen = 0x10;
  56. const static __int64 Alpha = 0x40;
  57. const static __int64 Mesh = 0x20;
  58. };
  59. #endif
  60. private:
  61. Model2DData *rData;
  62. float drehung;
  63. float größe;
  64. int ref;
  65. #ifdef WIN32
  66. int farbe;
  67. Bild *textur;
  68. #else
  69. Punkt pos;
  70. #endif
  71. public:
  72. // Konstruktor
  73. __declspec( dllexport ) Model2D();
  74. // Destruktor
  75. __declspec( dllexport ) ~Model2D();
  76. // nicht constant
  77. __declspec( dllexport ) void setModel( Model2DData *mdl );
  78. __declspec( dllexport ) void setDrehung( float drehung );
  79. __declspec( dllexport ) void addDrehung( float drehung );
  80. __declspec( dllexport ) void setGröße( float größe );
  81. __declspec( dllexport ) void addGröße( float größe );
  82. #ifdef WIN32
  83. __declspec( dllexport ) void setTextur( Bild *t );
  84. __declspec( dllexport ) void setFarbe( int f );
  85. __declspec( dllexport ) void doMausEreignis( MausEreignis &me ) override;
  86. __declspec( dllexport ) bool tick( double tickVal ) override;
  87. __declspec( dllexport ) void render( Bild &zRObj ) override;
  88. #else
  89. __declspec( dllexport ) void setPosition( Punkt p );
  90. #endif
  91. // constant
  92. __declspec( dllexport ) float getDrehung() const;
  93. __declspec( dllexport ) float getGröße() const;
  94. __declspec( dllexport ) bool istPunktInnen( Vertex p ) const;
  95. __declspec( dllexport ) bool istLinieInnen( Vertex a, Vertex b ) const;
  96. __declspec( dllexport ) bool istModelInnen( const Model2D *zMdl, bool end = 0 ) const;
  97. __declspec( dllexport ) Model2DData *getModel() const;
  98. __declspec( dllexport ) Model2DData *zModel() const;
  99. #ifndef WIN32
  100. Punkt getPosition() const;
  101. #endif
  102. // Reference Counting
  103. __declspec( dllexport ) Model2D *getThis();
  104. __declspec( dllexport ) Model2D *release();
  105. };
  106. }
  107. #endif