Rahmen.cpp 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. #include "Rahmen.h"
  2. #include "Punkt.h"
  3. #include "Bild.h"
  4. #include "Scroll.h"
  5. #include "ToolTip.h"
  6. #include "Text.h"
  7. using namespace Framework;
  8. // Inhalt der Rahmen Klasse aus Rahmen.h
  9. // Konstruktor
  10. Rahmen::Rahmen()
  11. : Zeichnung(),
  12. br( 1 ),
  13. farbe( 0xFF000000 ),
  14. alpha( 0 ),
  15. breaks( 0 )
  16. {}
  17. // Destruktor
  18. Rahmen::~Rahmen()
  19. {}
  20. // nicht constant
  21. void Rahmen::setRamenBreite( int br ) // setzt die Breite des Rahmens
  22. {
  23. this->br = br;
  24. rend = 1;
  25. }
  26. // wenn dieser Flag gesetzt wird, wird der Rahmen gestrichelt gezeichnet
  27. // br: 1 -> gestrichelt, 0 -> durchgehend
  28. void Rahmen::setBreaks( bool br )
  29. {
  30. breaks = br;
  31. }
  32. void Rahmen::setAlpha( bool a ) // Legt fest, ob der Alphawert der Farbe berücksichtigt werden soll
  33. {
  34. alpha = a;
  35. rend = 1;
  36. }
  37. void Rahmen::setFarbe( int f ) // Legt die Farbe des Rahmens fest
  38. {
  39. farbe = f;
  40. rend = 1;
  41. }
  42. int Rahmen::getFarbe() const // Gibt die Farbe des Ramens zurück
  43. {
  44. return farbe;
  45. }
  46. bool Rahmen::hatAlpha() const // Gibt zurück, ob der Alphawert der Farbe beachtet wird
  47. {
  48. return alpha;
  49. }
  50. int Rahmen::getRBreite() const // Gibt die Breite des Rahmens zurück
  51. {
  52. return br;
  53. }
  54. // Gibt 1 zurück, falls der Rahmen gestrichelt gezeichnet wird
  55. bool Rahmen::hasBreaks() const
  56. {
  57. return breaks;
  58. }
  59. // Inhalt der LRahmen Klasse aus Rahmen.h
  60. // Konstruktor
  61. LRahmen::LRahmen()
  62. : Rahmen()
  63. {}
  64. // Destruktor
  65. LRahmen::~LRahmen()
  66. {}
  67. void LRahmen::render( Bild &Obj ) // Zeichnet den Rahmen in das RenderZeichnung
  68. {
  69. Zeichnung::render( Obj );
  70. int x = pos.x;
  71. int y = pos.y;
  72. int b = x + gr.x - 1;
  73. int h = y + gr.y - 1;
  74. if( !breaks )
  75. {
  76. if( alpha )
  77. {
  78. for( int i = 0; i < br; ++i )
  79. {
  80. Obj.drawLinieHAlpha( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  81. Obj.drawLinieVAlpha( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  82. Obj.drawLinieHAlpha( x + i + 1, h - i, gr.x - i * 2 - 1, farbe );
  83. Obj.drawLinieVAlpha( x + i, y + i, gr.y - i * 2, farbe );
  84. }
  85. }
  86. else
  87. {
  88. for( int i = 0; i < br; ++i )
  89. {
  90. Obj.drawLinieH( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  91. Obj.drawLinieV( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  92. Obj.drawLinieH( x + i + 1, h - i, gr.x - i * 2 - 1, farbe );
  93. Obj.drawLinieV( x + i, y + i, gr.y - i * 2, farbe );
  94. }
  95. }
  96. }
  97. else
  98. {
  99. if( alpha )
  100. {
  101. for( int i = 0; i < br; ++i )
  102. {
  103. for( int x = pos.x; x < pos.x + gr.x; x += 20 )
  104. {
  105. Obj.drawLinieHAlpha( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), farbe );
  106. Obj.drawLinieHAlpha( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), farbe );
  107. }
  108. for( int y = pos.y; y < pos.y + gr.y; y += 20 )
  109. {
  110. Obj.drawLinieVAlpha( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 + pos.y - y ), farbe );
  111. Obj.drawLinieVAlpha( x + i, y + i, min( 10, gr.y - i * 2 + pos.y - y ), farbe );
  112. }
  113. }
  114. }
  115. else
  116. {
  117. for( int i = 0; i < br; ++i )
  118. {
  119. for( int x = pos.x; x < pos.x + gr.x; x += 20 )
  120. {
  121. Obj.drawLinieH( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), farbe );
  122. Obj.drawLinieH( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), farbe );
  123. }
  124. for( int y = pos.y; y < pos.y + gr.y; y += 20 )
  125. {
  126. Obj.drawLinieV( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 + pos.y - y ), farbe );
  127. Obj.drawLinieV( x + i, y + i, min( 10, gr.y - i * 2 + pos.y - y ), farbe );
  128. }
  129. }
  130. }
  131. }
  132. }
  133. Zeichnung *LRahmen::dublizieren() const // Kopiert das Zeichnung
  134. {
  135. Rahmen *obj = new LRahmen();
  136. obj->setPosition( pos );
  137. obj->setSize( gr );
  138. obj->setMausEreignisParameter( makParam );
  139. obj->setTastaturEreignisParameter( takParam );
  140. obj->setMausEreignis( mak );
  141. obj->setTastaturEreignis( tak );
  142. if( toolTip )
  143. obj->setToolTipZ( (ToolTip*)toolTip->dublizieren() );
  144. obj->setBreaks( breaks );
  145. obj->setAlpha( alpha );
  146. obj->setFarbe( farbe );
  147. obj->setRamenBreite( br );
  148. return obj;
  149. }
  150. // Inhalt der Rahmen3D Klasse aus Rahmen.h
  151. // Konstruktor
  152. Rahmen3D::Rahmen3D()
  153. : Rahmen()
  154. {
  155. alpha = 1;
  156. farbe = 0x70FFFFFF;
  157. br = 5;
  158. }
  159. // Destruktor
  160. Rahmen3D::~Rahmen3D()
  161. {}
  162. void Rahmen3D::render( Bild &Obj ) // Zeichnet den Rahmen in das RenderZeichnung
  163. {
  164. Zeichnung::render( Obj );
  165. int x = pos.x;
  166. int y = pos.y;
  167. int b = x + gr.x - 1;
  168. int h = y + gr.y - 1;
  169. int fcomp = ( farbe & 0xFF000000 ) | ( ~farbe & 0x00FFFFFF );
  170. if( !breaks )
  171. {
  172. if( alpha )
  173. {
  174. for( int i = 0; i < br; ++i )
  175. {
  176. Obj.drawLinieHAlpha( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  177. Obj.drawLinieVAlpha( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  178. Obj.drawLinieHAlpha( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
  179. Obj.drawLinieVAlpha( x + i, y + i, gr.y - i * 2, fcomp );
  180. }
  181. }
  182. else
  183. {
  184. for( int i = 0; i < br; ++i )
  185. {
  186. Obj.drawLinieH( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  187. Obj.drawLinieV( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  188. Obj.drawLinieH( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
  189. Obj.drawLinieV( x + i, y + i, gr.y - i * 2, fcomp );
  190. }
  191. }
  192. }
  193. else
  194. {
  195. if( alpha )
  196. {
  197. for( int i = 0; i < br; ++i )
  198. {
  199. for( int x = pos.x; x < pos.x + gr.x; x += 20 )
  200. {
  201. Obj.drawLinieHAlpha( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), farbe );
  202. Obj.drawLinieHAlpha( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), fcomp );
  203. }
  204. for( int y = pos.y; y < pos.y + gr.y; y += 20 )
  205. {
  206. Obj.drawLinieVAlpha( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 + pos.y - y ), farbe );
  207. Obj.drawLinieVAlpha( x + i, y + i, min( 10, gr.y - i * 2 + pos.y - y ), fcomp );
  208. }
  209. }
  210. }
  211. else
  212. {
  213. for( int i = 0; i < br; ++i )
  214. {
  215. for( int x = pos.x; x < pos.x + gr.x; x += 20 )
  216. {
  217. Obj.drawLinieH( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), farbe );
  218. Obj.drawLinieH( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 + pos.x - x ), fcomp );
  219. }
  220. for( int y = pos.y; y < pos.y + gr.y; y += 20 )
  221. {
  222. Obj.drawLinieV( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 + pos.y - y ), farbe );
  223. Obj.drawLinieV( x + i, y + i, min( 10, gr.y - i * 2 + pos.y - y ), fcomp );
  224. }
  225. }
  226. }
  227. }
  228. }
  229. Zeichnung *Rahmen3D::dublizieren() const // Kopiert das Zeichnung
  230. {
  231. Rahmen *obj = new Rahmen3D();
  232. obj->setPosition( pos );
  233. obj->setSize( gr );
  234. obj->setMausEreignisParameter( makParam );
  235. obj->setTastaturEreignisParameter( takParam );
  236. obj->setMausEreignis( mak );
  237. obj->setTastaturEreignis( tak );
  238. if( toolTip )
  239. obj->setToolTipZ( (ToolTip*)toolTip->dublizieren() );
  240. obj->setBreaks( breaks );
  241. obj->setAlpha( alpha );
  242. obj->setFarbe( farbe );
  243. obj->setRamenBreite( br );
  244. return obj;
  245. }