Rahmen.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  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. ref( 1 )
  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. void Rahmen::setAlpha( bool a ) // Legt fest, ob der Alphawert der Farbe berücksichtigt werden soll
  27. {
  28. alpha = a;
  29. rend = 1;
  30. }
  31. void Rahmen::setFarbe( int f ) // Legt die Farbe des Rahmens fest
  32. {
  33. farbe = f;
  34. rend = 1;
  35. }
  36. int Rahmen::getFarbe() const // Gibt die Farbe des Ramens zurück
  37. {
  38. return farbe;
  39. }
  40. bool Rahmen::hatAlpha() const // Gibt zurück, ob der Alphawert der Farbe beachtet wird
  41. {
  42. return alpha;
  43. }
  44. int Rahmen::getRBreite() const // Gibt die Breite des Rahmens zurück
  45. {
  46. return br;
  47. }
  48. // Reference Counting
  49. Rahmen *Rahmen::getThis()
  50. {
  51. ++ref;
  52. return this;
  53. }
  54. // Inhalt der LRahmen Klasse aus Rahmen.h
  55. // Konstruktor
  56. LRahmen::LRahmen()
  57. : Rahmen()
  58. {}
  59. // Destruktor
  60. LRahmen::~LRahmen()
  61. {}
  62. void LRahmen::render( Bild &Obj ) // Zeichnet den Rahmen in das RenderZeichnung
  63. {
  64. Zeichnung::render( Obj );
  65. int x = pos.x;
  66. int y = pos.y;
  67. int b = x + gr.x - 1;
  68. int h = y + gr.y - 1;
  69. if( alpha )
  70. {
  71. for( int i = 0; i < br; ++i )
  72. {
  73. Obj.drawLinieHAlpha( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  74. Obj.drawLinieVAlpha( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  75. Obj.drawLinieHAlpha( x + i + 1, h - i, gr.x - i * 2 - 1, farbe );
  76. Obj.drawLinieVAlpha( x + i, y + i, gr.y - i * 2, farbe );
  77. }
  78. }
  79. else
  80. {
  81. for( int i = 0; i < br; ++i )
  82. {
  83. Obj.drawLinieH( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  84. Obj.drawLinieV( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  85. Obj.drawLinieH( x + i + 1, h - i, gr.x - i * 2 - 1, farbe );
  86. Obj.drawLinieV( x + i, y + i, gr.y - i * 2, farbe );
  87. }
  88. }
  89. }
  90. Zeichnung *LRahmen::dublizieren() const // Kopiert das Zeichnung
  91. {
  92. Rahmen *obj = new LRahmen();
  93. obj->setPosition( pos );
  94. obj->setSize( gr );
  95. obj->setMausEreignisParameter( makParam );
  96. obj->setTastaturEreignisParameter( takParam );
  97. obj->setMausEreignis( mak );
  98. obj->setTastaturEreignis( tak );
  99. if( toolTip )
  100. obj->setToolTipText( toolTip->zText()->getText(), toolTip->zBildschirm() );
  101. obj->setAlpha( alpha );
  102. obj->setFarbe( farbe );
  103. obj->setRamenBreite( br );
  104. return obj;
  105. }
  106. Rahmen *LRahmen::release()
  107. {
  108. --ref;
  109. if( ref == 0 )
  110. delete this;
  111. return 0;
  112. }
  113. // Inhalt der Rahmen3D Klasse aus Rahmen.h
  114. // Konstruktor
  115. Rahmen3D::Rahmen3D()
  116. : Rahmen()
  117. {
  118. alpha = 1;
  119. farbe = 0x70FFFFFF;
  120. br = 5;
  121. }
  122. // Destruktor
  123. Rahmen3D::~Rahmen3D()
  124. {}
  125. void Rahmen3D::render( Bild &Obj ) // Zeichnet den Rahmen in das RenderZeichnung
  126. {
  127. Zeichnung::render( Obj );
  128. int x = pos.x;
  129. int y = pos.y;
  130. int b = x + gr.x - 1;
  131. int h = y + gr.y - 1;
  132. int fcomp = ( farbe & 0xFF000000 ) | ( ~farbe & 0x00FFFFFF );
  133. if( alpha )
  134. {
  135. for( int i = 0; i < br; ++i )
  136. {
  137. Obj.drawLinieHAlpha( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  138. Obj.drawLinieVAlpha( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  139. Obj.drawLinieHAlpha( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
  140. Obj.drawLinieVAlpha( x + i, y + i, gr.y - i * 2, fcomp );
  141. }
  142. }
  143. else
  144. {
  145. for( int i = 0; i < br; ++i )
  146. {
  147. Obj.drawLinieH( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
  148. Obj.drawLinieV( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
  149. Obj.drawLinieH( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
  150. Obj.drawLinieV( x + i, y + i, gr.y - i * 2, fcomp );
  151. }
  152. }
  153. }
  154. Zeichnung *Rahmen3D::dublizieren() const // Kopiert das Zeichnung
  155. {
  156. Rahmen *obj = new LRahmen();
  157. obj->setPosition( pos );
  158. obj->setSize( gr );
  159. obj->setMausEreignisParameter( makParam );
  160. obj->setTastaturEreignisParameter( takParam );
  161. obj->setMausEreignis( mak );
  162. obj->setTastaturEreignis( tak );
  163. if( toolTip )
  164. obj->setToolTipText( toolTip->zText()->getText(), toolTip->zBildschirm() );
  165. obj->setAlpha( alpha );
  166. obj->setFarbe( farbe );
  167. obj->setRamenBreite( br );
  168. return obj;
  169. }
  170. Rahmen *Rahmen3D::release()
  171. {
  172. --ref;
  173. if( ref == 0 )
  174. delete this;
  175. return 0;
  176. }