Rahmen.cpp 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  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 < gr.x; x += 20 )
  104. {
  105. Obj.drawLinieHAlpha( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 ), farbe );
  106. Obj.drawLinieHAlpha( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 ), farbe );
  107. }
  108. for( int y = pos.y; y < gr.y; y += 20 )
  109. {
  110. Obj.drawLinieVAlpha( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 ), farbe );
  111. Obj.drawLinieVAlpha( x + i, y + i, min( 10, gr.y - i * 2 ), farbe );
  112. }
  113. }
  114. }
  115. else
  116. {
  117. for( int i = 0; i < br; ++i )
  118. {
  119. for( int x = pos.x; x < gr.x; x += 20 )
  120. {
  121. Obj.drawLinieH( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 ), farbe );
  122. Obj.drawLinieH( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 ), farbe );
  123. }
  124. for( int y = pos.y; y < gr.y; y += 20 )
  125. {
  126. Obj.drawLinieV( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 ), farbe );
  127. Obj.drawLinieV( x + i, y + i, min( 10, gr.y - i * 2 ), 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->setToolTipText( toolTip->zText()->getText(), toolTip->zBildschirm() );
  144. obj->setAlpha( alpha );
  145. obj->setFarbe( farbe );
  146. obj->setRamenBreite( br );
  147. return obj;
  148. }
  149. // Inhalt der Rahmen3D Klasse aus Rahmen.h
  150. // Konstruktor
  151. Rahmen3D::Rahmen3D()
  152. : Rahmen()
  153. {
  154. alpha = 1;
  155. farbe = 0x70FFFFFF;
  156. br = 5;
  157. }
  158. // Destruktor
  159. Rahmen3D::~Rahmen3D()
  160. {}
  161. void Rahmen3D::render( Bild &Obj ) // Zeichnet den Rahmen in das RenderZeichnung
  162. {
  163. Zeichnung::render( Obj );
  164. int x = pos.x;
  165. int y = pos.y;
  166. int b = x + gr.x - 1;
  167. int h = y + gr.y - 1;
  168. int fcomp = ( farbe & 0xFF000000 ) | ( ~farbe & 0x00FFFFFF );
  169. if( !breaks )
  170. {
  171. if( alpha )
  172. {
  173. for( int i = 0; i < br; ++i )
  174. {
  175. Obj.drawLinieHAlpha( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  176. Obj.drawLinieVAlpha( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  177. Obj.drawLinieHAlpha( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
  178. Obj.drawLinieVAlpha( x + i, y + i, gr.y - i * 2, fcomp );
  179. }
  180. }
  181. else
  182. {
  183. for( int i = 0; i < br; ++i )
  184. {
  185. Obj.drawLinieH( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  186. Obj.drawLinieV( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  187. Obj.drawLinieH( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
  188. Obj.drawLinieV( x + i, y + i, gr.y - i * 2, fcomp );
  189. }
  190. }
  191. }
  192. else
  193. {
  194. if( alpha )
  195. {
  196. for( int i = 0; i < br; ++i )
  197. {
  198. for( int x = pos.x; x < gr.x; x += 20 )
  199. {
  200. Obj.drawLinieHAlpha( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 ), farbe );
  201. Obj.drawLinieHAlpha( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 ), fcomp );
  202. }
  203. for( int y = pos.y; y < gr.y; y += 20 )
  204. {
  205. Obj.drawLinieVAlpha( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 ), farbe );
  206. Obj.drawLinieVAlpha( x + i, y + i, min( 10, gr.y - i * 2 ), fcomp );
  207. }
  208. }
  209. }
  210. else
  211. {
  212. for( int i = 0; i < br; ++i )
  213. {
  214. for( int x = pos.x; x < gr.x; x += 20 )
  215. {
  216. Obj.drawLinieH( x + i + 1, y + i, min( 10, gr.x - i * 2 - 1 ), farbe );
  217. Obj.drawLinieH( x + i + 1, h - i, min( 10, gr.x - i * 2 - 1 ), fcomp );
  218. }
  219. for( int y = pos.y; y < gr.y; y += 20 )
  220. {
  221. Obj.drawLinieV( b - i, y + i + 1, min( 10, gr.y - i * 2 - 2 ), farbe );
  222. Obj.drawLinieV( x + i, y + i, min( 10, gr.y - i * 2 ), fcomp );
  223. }
  224. }
  225. }
  226. }
  227. }
  228. Zeichnung *Rahmen3D::dublizieren() const // Kopiert das Zeichnung
  229. {
  230. Rahmen *obj = new LRahmen();
  231. obj->setPosition( pos );
  232. obj->setSize( gr );
  233. obj->setMausEreignisParameter( makParam );
  234. obj->setTastaturEreignisParameter( takParam );
  235. obj->setMausEreignis( mak );
  236. obj->setTastaturEreignis( tak );
  237. if( toolTip )
  238. obj->setToolTipText( toolTip->zText()->getText(), toolTip->zBildschirm() );
  239. obj->setAlpha( alpha );
  240. obj->setFarbe( farbe );
  241. obj->setRamenBreite( br );
  242. return obj;
  243. }