Knopf.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. #include "Knopf.h"
  2. #include "MausEreignis.h"
  3. #include "TastaturEreignis.h"
  4. #include "Bild.h"
  5. #include "AlphaFeld.h"
  6. #include "Text.h"
  7. #include "Schrift.h"
  8. #include "Rahmen.h"
  9. #include "Scroll.h"
  10. #include "Datei.h"
  11. #include "DateiSystem.h"
  12. #include "Globals.h"
  13. #include "ToolTip.h"
  14. using namespace Framework;
  15. // Inhalt der Knopf Klasse aus Knopf.h
  16. // Konstruktor
  17. Knopf::Knopf()
  18. : TextFeld(),
  19. klickFarbe( 0xFF000000 ),
  20. klickBild( 0 ),
  21. klickBuffer( 0 ),
  22. klickIndex( 0 )
  23. {
  24. style = Style::Erlaubt | Style::Buffered | Style::KlickBuffer | Style::Rahmen;
  25. this->setMausEreignis( _ret1ME );
  26. setSchriftFarbe( 0xFFFFFFFF );
  27. setSchriftSize( 12 );
  28. setRahmenBreite( 2 );
  29. setRahmenFarbe( 0xFF00FF00 );
  30. setAlphaFeldFarbe( 0x5500FF00 );
  31. setAlphaFeldStrength( -5 );
  32. setKBFarbe( 0xFF000000 );
  33. setKBStrength( 20 );
  34. addStyle( TextFeld::Style::Center );
  35. }
  36. // Destruktor
  37. Knopf::~Knopf()
  38. {
  39. if( klickBuffer )
  40. klickBuffer->release();
  41. if( klickBild )
  42. klickBild->release();
  43. }
  44. void Knopf::doMausEreignis( MausEreignis &me, bool userRet ) // Maus Ereignis
  45. {
  46. if( hatStyleNicht( Style::Erlaubt ) || !userRet )
  47. return;
  48. if( me.id == ME_Betritt )
  49. {
  50. klickIndex = MausStand[ M_Links ];
  51. if( klickIndex )
  52. rend = 1;
  53. }
  54. if( me.id == ME_RLinks || me.id == ME_Leaves )
  55. {
  56. if( klickIndex )
  57. rend = 1;
  58. klickIndex = 0;
  59. }
  60. if( !me.verarbeitet )
  61. {
  62. if( me.id == ME_PLinks )
  63. {
  64. klickIndex = 1;
  65. rend = 1;
  66. }
  67. me.verarbeitet = 1;
  68. }
  69. }
  70. // nicht constant
  71. void Knopf::setKlickFarbe( int fc ) // setzt die Klick Farbe
  72. {
  73. klickFarbe = fc;
  74. rend = 1;
  75. }
  76. void Knopf::setKlickBild( Bild *bild ) // setzt das Klick Bild
  77. {
  78. if( bild )
  79. {
  80. if( !klickBild )
  81. klickBild = new Bild();
  82. klickBild->neuBild( bild->getBreite(), bild->getHeight(), 0 );
  83. int *buff1 = klickBild->getBuffer();
  84. int *buff2 = bild->getBuffer();
  85. for( int i = 0; i < bild->getBreite() * bild->getHeight(); ++i )
  86. buff1[ i ] = buff2[ i ];
  87. bild->release();
  88. rend = 1;
  89. }
  90. }
  91. void Knopf::setKlickBildZ( Bild *bild ) // setzt einen Zeiger zum Klick Bild
  92. {
  93. if( klickBild )
  94. klickBild->release();
  95. klickBild = bild;
  96. rend = 1;
  97. }
  98. void Knopf::setKBZ( AlphaFeld *af )
  99. {
  100. if( klickBuffer )
  101. klickBuffer->release();
  102. klickBuffer = af;
  103. rend = 1;
  104. }
  105. void Knopf::setKBStrength( int st ) // setzt die Stärke des Klick Buffers
  106. {
  107. if( !klickBuffer )
  108. klickBuffer = new AlphaFeld();
  109. klickBuffer->setStrength( st );
  110. rend = 1;
  111. }
  112. void Knopf::setKBFarbe( int fc ) // setzt die Farbe des Klick Buffers
  113. {
  114. if( !klickBuffer )
  115. klickBuffer = new AlphaFeld();
  116. klickBuffer->setFarbe( fc );
  117. rend = 1;
  118. }
  119. // Verarbeitet Maus Nachrichten
  120. // te: Das Ereignis, was durch die Tastatur Eingabe ausgelößt wurde
  121. void Knopf::doTastaturEreignis( TastaturEreignis &te )
  122. {}
  123. void Knopf::render( Bild &zRObj ) // zeichenet nach zRObj
  124. {
  125. if( !hatStyle( Style::Sichtbar ) )
  126. return;
  127. addStyle( TextFeld::Style::Center );
  128. bool erlaubt = hatStyle( Style::Erlaubt );
  129. bool rA = 0;
  130. if( !hatStyle( Style::Erlaubt ) )
  131. {
  132. zRObj.setAlpha( 0x20 );
  133. rA = 1;
  134. }
  135. bool tmpRend = rend;
  136. removeStyle( Style::VScroll | Style::HScroll | Style::Erlaubt );
  137. TextFeld::render( zRObj );
  138. if( !zRObj.setDrawOptions( innenPosition, innenSize ) )
  139. {
  140. if( rA )
  141. zRObj.releaseAlpha();
  142. setStyle( Style::Erlaubt, erlaubt );
  143. return;
  144. }
  145. if( hatStyle( Style::Sichtbar ) && klickIndex == 1 )
  146. {
  147. if( hatStyle( Style::KlickFarbe ) )
  148. {
  149. if( hatStyle( Style::KlickAlpha ) )
  150. zRObj.alphaRegion( 0, 0, innenSize.x, innenSize.y, klickFarbe );
  151. else
  152. zRObj.fillRegion( 0, 0, innenSize.x, innenSize.y, klickFarbe );
  153. }
  154. if( hatStyle( Style::KlickBild ) && klickBild )
  155. {
  156. if( hatStyle( Style::KlickAlpha ) )
  157. zRObj.alphaBild( 0, 0, innenSize.x, innenSize.y, *klickBild );
  158. else
  159. zRObj.drawBild( 0, 0, innenSize.x, innenSize.y, *klickBild );
  160. }
  161. if( hatStyle( Style::KlickBuffer ) && klickBuffer )
  162. {
  163. klickBuffer->setSize( innenSize.x, innenSize.y );
  164. klickBuffer->render( zRObj );
  165. }
  166. }
  167. if( rA )
  168. zRObj.releaseAlpha();
  169. zRObj.releaseDrawOptions();
  170. setStyle( Style::Erlaubt, erlaubt );
  171. rend = tmpRend;
  172. }
  173. // constant
  174. int Knopf::getKlickFarbe() const // gibt getThis der Klick Farbe zurück
  175. {
  176. return klickFarbe;
  177. }
  178. Bild *Knopf::getKlickBild() const // gibt getThis des Klick Bildes zurück
  179. {
  180. if( !klickBild )
  181. return 0;
  182. return dynamic_cast<Bild *>( klickBild->getThis() );
  183. }
  184. Bild *Knopf::zKlickBild() const // gibt einen Zeiger zum Klick Bild zurück
  185. {
  186. return klickBild;
  187. }
  188. AlphaFeld *Knopf::getKB() const // gibt getThis des Klick Buffers zurück
  189. {
  190. if( !klickBuffer )
  191. return 0;
  192. return dynamic_cast<AlphaFeld *>( klickBuffer->getThis() );
  193. }
  194. AlphaFeld *Knopf::zKB() const // gibt den Klick Buffer zurück
  195. {
  196. return klickBuffer;
  197. }
  198. int Knopf::getKBFarbe() const // gibt getThis der Farbe des Klick Buffers zurück
  199. {
  200. if( !klickBuffer )
  201. return 0;
  202. return klickBuffer->getFarbe();
  203. }
  204. int Knopf::getKBStrength() const // gibt die Stärke des Klickbuffers zurück
  205. {
  206. if( !klickBuffer )
  207. return 0;
  208. return klickBuffer->getStrength();
  209. }
  210. Zeichnung *Knopf::dublizieren() const // Erzeugt eine Kopie des Zeichnungs
  211. {
  212. Knopf *obj = new Knopf();
  213. obj->setPosition( pos );
  214. obj->setSize( gr );
  215. obj->setMausEreignisParameter( makParam );
  216. obj->setTastaturEreignisParameter( takParam );
  217. obj->setMausEreignis( mak );
  218. obj->setTastaturEreignis( tak );
  219. if( toolTip )
  220. obj->setToolTipZ( (ToolTip *)toolTip->dublizieren() );
  221. obj->setStyle( style );
  222. obj->setSchriftSize( getSchriftSize() );
  223. if( zSchrift() )
  224. obj->setSchriftZ( getSchrift() );
  225. if( zText() )
  226. obj->setText( zText()->getText() );
  227. obj->setHintergrundFarbe( hintergrundFarbe );
  228. obj->setSchriftFarbe( getSchriftFarbe() );
  229. if( hintergrundFeld )
  230. obj->setAlphaFeldZ( (AlphaFeld *)hintergrundFeld->dublizieren() );
  231. if( rahmen )
  232. obj->setRahmenZ( (Rahmen *)rahmen->dublizieren() );
  233. if( hintergrundBild )
  234. obj->setHintergrundBild( dynamic_cast<Bild *>( hintergrundBild->getThis() ) );
  235. if( vertikalScrollBar )
  236. {
  237. obj->setVertikalKlickScroll( vertikalScrollBar->getKlickScroll() );
  238. obj->setVertikalScrollPos( vertikalScrollBar->getScroll() );
  239. obj->setVertikalScrollFarbe( vertikalScrollBar->getFarbe(), vertikalScrollBar->getBgFarbe() );
  240. }
  241. if( horizontalScrollBar )
  242. {
  243. obj->setHorizontalKlickScroll( horizontalScrollBar->getKlickScroll() );
  244. obj->setHorizontalScrollPos( horizontalScrollBar->getScroll() );
  245. obj->setHorizontalScrollFarbe( horizontalScrollBar->getFarbe(), horizontalScrollBar->getBgFarbe() );
  246. }
  247. obj->setSchowChar( getShowChar() );
  248. //obj->setAuswahl( getSelectionPos(), getCursorPos() );
  249. obj->setKlickFarbe( klickFarbe );
  250. if( klickBild )
  251. obj->setKlickBild( dynamic_cast<Bild *>( klickBild->getThis() ) );
  252. if( klickBuffer )
  253. obj->setKBZ( (AlphaFeld *)klickBuffer->dublizieren() );
  254. return obj;
  255. }
  256. // Inhalt der KontrollKnopf Klasse aus Knopf.h
  257. // Konstruktor
  258. KontrollKnopf::KontrollKnopf()
  259. : ZeichnungHintergrund(),
  260. txt( 0 ),
  261. sTxt( 0 ),
  262. sBgF( 0 ),
  263. kBgF( 0 ),
  264. sBgB( 0 ),
  265. kBgB( 0 ),
  266. sAf( 0 ),
  267. kAf( 0 ),
  268. kasten( 0 ),
  269. sKasten( 0 ),
  270. textRd( 0 ),
  271. sF( 0xFFFFFFFF ),
  272. sGr( 12 )
  273. {
  274. style = Style::Erlaubt | Style::KlickBuffer;
  275. setKAFFarbe( 0x00007500 );
  276. setKAFStrength( -30 );
  277. }
  278. // Destruktor
  279. KontrollKnopf::~KontrollKnopf()
  280. {
  281. if( txt )
  282. txt->release();
  283. if( sTxt )
  284. sTxt->release();
  285. if( sBgB )
  286. sBgB->release();
  287. if( kBgB )
  288. kBgB->release();
  289. if( sAf )
  290. sAf->release();
  291. if( kAf )
  292. kAf->release();
  293. if( kasten )
  294. kasten->release();
  295. if( sKasten )
  296. sKasten->release();
  297. if( textRd )
  298. textRd->release();
  299. }
  300. void KontrollKnopf::doMausEreignis( MausEreignis &me, bool userRet ) // Nachrichten verarbeitung
  301. {
  302. if( me.id == ME_Leaves || !userRet )
  303. style &= ~Style::MausKlick;
  304. if( hatStyleNicht( TextFeld::Style::Erlaubt ) || !userRet )
  305. return;
  306. if( me.id == ME_Betritt && hatStyle( Style::MausKlick ) != MausStand[ M_Links ] )
  307. setStyle( Style::MausKlick, MausStand[ M_Links ] );
  308. if( me.id == ME_PLinks )
  309. addStyle( Style::MausKlick );
  310. if( me.id == ME_RLinks )
  311. {
  312. removeStyle( Style::MausKlick );
  313. setStyle( Style::Selected, !hatStyle( Style::Selected ) );
  314. }
  315. me.verarbeitet = 1;
  316. }
  317. // nicht constant
  318. void KontrollKnopf::setTextZ( Text *txt ) // setzt den Text
  319. {
  320. if( this->txt )
  321. this->txt->release();
  322. this->txt = txt;
  323. rend = 1;
  324. }
  325. void KontrollKnopf::setText( Text *txt )
  326. {
  327. if( !this->txt )
  328. this->txt = new Text();
  329. this->txt->setText( txt->getText() );
  330. txt->release();
  331. rend = 1;
  332. }
  333. void KontrollKnopf::setText( const char *txt )
  334. {
  335. if( !this->txt )
  336. this->txt = new Text();
  337. this->txt->setText( txt );
  338. rend = 1;
  339. }
  340. void KontrollKnopf::setSTextZ( Text *txt ) // setzt den Text bei Selectiert
  341. {
  342. if( sTxt )
  343. sTxt->release();
  344. sTxt = txt;
  345. rend = 1;
  346. }
  347. void KontrollKnopf::setSText( Text *txt )
  348. {
  349. if( !sTxt )
  350. sTxt = new Text();
  351. sTxt->setText( txt->getText() );
  352. txt->release();
  353. rend = 1;
  354. }
  355. void KontrollKnopf::setSText( const char *txt )
  356. {
  357. if( !sTxt )
  358. sTxt = new Text();
  359. sTxt->setText( txt );
  360. rend = 1;
  361. }
  362. void KontrollKnopf::setTextRendererZ( TextRenderer *textRd )
  363. {
  364. if( this->textRd )
  365. this->textRd->release();
  366. this->textRd = textRd;
  367. }
  368. void KontrollKnopf::setSchriftZ( Schrift *schrift ) // setzt die Schrift
  369. {
  370. if( !this->textRd )
  371. textRd = new TextRenderer( schrift );
  372. else
  373. textRd->setSchriftZ( schrift );
  374. rend = 1;
  375. }
  376. void KontrollKnopf::setSFarbe( int f ) // setzt die Schrift Farbe
  377. {
  378. sF = f;
  379. rend = 1;
  380. }
  381. void KontrollKnopf::setSSize( int gr ) // setzt die Schrift Größe
  382. {
  383. sGr = gr;
  384. rend = 1;
  385. }
  386. void KontrollKnopf::setSBgFarbe( int f ) // setzt die Select Hintergrundfarbe
  387. {
  388. sBgF = f;
  389. rend = 1;
  390. }
  391. void KontrollKnopf::setKBgFarbe( int f ) // setzt die Klick Hintergrundfarbe
  392. {
  393. kBgF = f;
  394. rend = 1;
  395. }
  396. void KontrollKnopf::setSBgBildZ( Bild *b ) // setzt das Select Hintergrundbild
  397. {
  398. if( sBgB )
  399. sBgB->release();
  400. sBgB = b;
  401. rend = 1;
  402. }
  403. void KontrollKnopf::setSBgBild( Bild *b )
  404. {
  405. if( !sBgB )
  406. sBgB = new Bild();
  407. sBgB->neuBild( b->getBreite(), b->getHeight(), 0 );
  408. sBgB->drawBild( 0, 0, b->getBreite(), b->getHeight(), *b );
  409. b->release();
  410. rend = 1;
  411. }
  412. void KontrollKnopf::setKBgBildZ( Bild *b ) // setzt das Klick Hintergrundbild
  413. {
  414. if( kBgB )
  415. kBgB->release();
  416. kBgB = b;
  417. rend = 1;
  418. }
  419. void KontrollKnopf::setKBgBild( Bild *b )
  420. {
  421. if( !kBgB )
  422. kBgB = new Bild();
  423. kBgB->neuBild( b->getBreite(), b->getHeight(), 0 );
  424. kBgB->drawBild( 0, 0, b->getBreite(), b->getHeight(), *b );
  425. b->release();
  426. rend = 1;
  427. }
  428. void KontrollKnopf::setSAlphaFeldZ( AlphaFeld *af ) // setzt das Select Alpha Feld
  429. {
  430. if( sAf )
  431. sAf->release();
  432. sAf = af;
  433. rend = 1;
  434. }
  435. void KontrollKnopf::setSAFFarbe( int f ) // setzt die Select Alphafeld Farbe
  436. {
  437. if( !sAf )
  438. sAf = new AlphaFeld();
  439. sAf->setFarbe( f );
  440. rend = 1;
  441. }
  442. void KontrollKnopf::setSAFStrength( int st ) // setzt die Select AlphaFeld Stärke
  443. {
  444. if( !sAf )
  445. sAf = new AlphaFeld();
  446. sAf->setStrength( st );
  447. rend = 1;
  448. }
  449. void KontrollKnopf::setKAlphaFeldZ( AlphaFeld *af ) // setzt das Klick Alpha Feld
  450. {
  451. if( kAf )
  452. kAf->release();
  453. kAf = af;
  454. rend = 1;
  455. }
  456. void KontrollKnopf::setKAFFarbe( int f ) // setzt die Klick Alphafeld Farbe
  457. {
  458. if( !kAf )
  459. kAf = new AlphaFeld();
  460. kAf->setFarbe( f );
  461. rend = 1;
  462. }
  463. void KontrollKnopf::setKAFStrength( int st ) // setzt die Klick AlphaFeld Stärke
  464. {
  465. if( !kAf )
  466. kAf = new AlphaFeld();
  467. kAf->setStrength( st );
  468. rend = 1;
  469. }
  470. void KontrollKnopf::loadData( LTDBDatei *dat ) // läht die Systembilder
  471. {
  472. if( DateiExistiert( new Text( "data/normal.ltdb" ) ) && ( !dat || !dat->istOffen() ) )
  473. {
  474. LTDBDatei *dat = new LTDBDatei();
  475. dat->setDatei( new Text( "data/normal.ltdb" ) );
  476. dat->leseDaten( 0 );
  477. kasten = dat->laden( 0, new Text( "kasten.gif" ) );
  478. sKasten = dat->laden( 0, new Text( "skasten.gif" ) );
  479. dat->release();
  480. }
  481. else
  482. {
  483. kasten = dat->laden( 0, new Text( "kasten.gif" ) );
  484. sKasten = dat->laden( 0, new Text( "skasten.gif" ) );
  485. }
  486. rend = 1;
  487. }
  488. void KontrollKnopf::loadData( const char *ltdb ) // läht die Systembilder
  489. {
  490. if( DateiExistiert( new Text( ltdb ) ) )
  491. {
  492. LTDBDatei *dat = new LTDBDatei();
  493. dat->setDatei( new Text( ltdb ) );
  494. dat->leseDaten( 0 );
  495. kasten = dat->laden( 0, new Text( "kasten.gif" ) );
  496. sKasten = dat->laden( 0, new Text( "skasten.gif" ) );
  497. dat->release();
  498. rend = 1;
  499. }
  500. }
  501. void KontrollKnopf::render( Bild &zRObj ) // zeichnet nach zRObj
  502. {
  503. if( !hatStyle( Style::Sichtbar ) )
  504. return;
  505. removeStyle( Style::VScroll | Style::HScroll );
  506. ZeichnungHintergrund::render( zRObj );
  507. lockZeichnung();
  508. if( !zRObj.setDrawOptions( innenPosition, innenSize ) )
  509. {
  510. unlockZeichnung();
  511. return;
  512. }
  513. if( hatStyle( Style::MausKlick ) )
  514. {
  515. if( hatStyle( Style::KlickFarbe ) )
  516. {
  517. if( hatStyle( Style::KlickAlpha ) )
  518. zRObj.alphaRegion( 0, 0, innenSize.x, innenSize.y, kBgF );
  519. else
  520. zRObj.fillRegion( 0, 0, innenSize.x, innenSize.y, kBgF );
  521. }
  522. if( hatStyle( Style::KlickBild ) && kBgB )
  523. {
  524. if( hatStyle( Style::KlickAlpha ) )
  525. zRObj.alphaBild( 0, 0, innenSize.x, innenSize.y, *kBgB );
  526. else
  527. zRObj.drawBild( 0, 0, innenSize.x, innenSize.y, *kBgB );
  528. }
  529. if( hatStyle( Style::KlickBuffer ) && kAf )
  530. {
  531. kAf->setSize( innenSize.x, innenSize.y );
  532. kAf->render( zRObj );
  533. }
  534. int kbr = 0;
  535. if( hatStyle( Style::Selected ) && sKasten )
  536. {
  537. if( sTxt && textRd )
  538. zRObj.drawBild( 0, ( gr.y / 2 - sKasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - sKasten->getHeight() / 2 ), innenSize.x, innenSize.y, *sKasten );
  539. else
  540. zRObj.drawBild( gr.x / 2 - sKasten->getBreite() / 2, ( gr.y / 2 - sKasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - sKasten->getHeight() / 2 ), innenSize.x, innenSize.y, *sKasten );
  541. kbr = sKasten->getBreite();
  542. if( sTxt && textRd )
  543. {
  544. textRd->setSchriftSize( sGr );
  545. textRd->renderText( kbr + 5, gr.y / 2 - textRd->getTextHeight( sTxt->getText() ) / 2, sTxt->getText(), zRObj, sF );
  546. }
  547. }
  548. else if( kasten )
  549. {
  550. if( txt && textRd )
  551. zRObj.drawBild( 0, ( gr.y / 2 - kasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - kasten->getHeight() / 2 ), innenSize.x, innenSize.y, *kasten );
  552. else
  553. zRObj.drawBild( gr.x / 2 - kasten->getBreite() / 2, ( gr.y / 2 - kasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - kasten->getHeight() / 2 ), innenSize.x, innenSize.y, *kasten );
  554. kbr = kasten->getBreite();
  555. if( txt && textRd )
  556. {
  557. textRd->setSchriftSize( sGr );
  558. textRd->renderText( kbr + 5, gr.y / 2 - textRd->getTextHeight( txt->getText() ) / 2, txt->getText(), zRObj, sF );
  559. }
  560. }
  561. }
  562. else if( hatStyle( Style::Selected ) )
  563. {
  564. if( hatStyle( Style::SelectFarbe ) )
  565. {
  566. if( hatStyle( Style::SelectAlpha ) )
  567. zRObj.alphaRegion( 0, 0, innenSize.x, innenSize.y, sBgF );
  568. else
  569. zRObj.fillRegion( 0, 0, innenSize.x, innenSize.y, sBgF );
  570. }
  571. if( hatStyle( Style::SelectBild ) && sBgB )
  572. {
  573. if( hatStyle( Style::SelectAlpha ) )
  574. zRObj.alphaBild( 0, 0, innenSize.x, innenSize.y, *sBgB );
  575. else
  576. zRObj.drawBild( 0, 0, innenSize.x, innenSize.y, *sBgB );
  577. }
  578. if( hatStyle( Style::SelectBuffer ) && sAf )
  579. {
  580. sAf->setSize( innenSize.x, innenSize.y );
  581. sAf->render( zRObj );
  582. }
  583. int kbr = 0;
  584. if( sKasten )
  585. {
  586. if( sTxt && textRd )
  587. zRObj.drawBild( 0, ( gr.y / 2 - sKasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - sKasten->getHeight() / 2 ), innenSize.x, innenSize.y, *sKasten );
  588. else
  589. zRObj.drawBild( gr.x / 2 - sKasten->getBreite() / 2, ( gr.y / 2 - sKasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - sKasten->getHeight() / 2 ), innenSize.x, innenSize.y, *sKasten );
  590. kbr = sKasten->getBreite();
  591. }
  592. if( sTxt && textRd )
  593. {
  594. textRd->setSchriftSize( sGr );
  595. textRd->renderText( kbr + 5, gr.y / 2 - textRd->getTextHeight( sTxt->getText() ) / 2, sTxt->getText(), zRObj, sF );
  596. }
  597. }
  598. else
  599. {
  600. int kbr = 0;
  601. if( kasten )
  602. {
  603. if( txt && textRd )
  604. zRObj.drawBild( 0, ( gr.y / 2 - kasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - kasten->getHeight() / 2 ), innenSize.x, innenSize.y, *kasten );
  605. else
  606. zRObj.drawBild( gr.x / 2 - kasten->getBreite() / 2, ( gr.y / 2 - kasten->getHeight() / 2 ) < 0 ? 0 : ( gr.y / 2 - kasten->getHeight() / 2 ), innenSize.x, innenSize.y, *kasten );
  607. kbr = kasten->getBreite();
  608. }
  609. if( txt && textRd )
  610. {
  611. textRd->setSchriftSize( sGr );
  612. textRd->renderText( kbr + 5, gr.y / 2 - textRd->getTextHeight( txt->getText() ) / 2, txt->getText(), zRObj, sF );
  613. }
  614. }
  615. zRObj.releaseDrawOptions();
  616. unlockZeichnung();
  617. }
  618. // constant
  619. Text *KontrollKnopf::getText() const // gibt den Text zurück
  620. {
  621. return txt ? dynamic_cast<Text *>( txt->getThis() ) : 0;
  622. }
  623. Text *KontrollKnopf::zText() const
  624. {
  625. return txt;
  626. }
  627. Text *KontrollKnopf::getSText() const // gibt den Select Text zurück
  628. {
  629. return sTxt ? dynamic_cast<Text *>( sTxt->getThis() ) : 0;
  630. }
  631. Text *KontrollKnopf::zSText() const
  632. {
  633. return sTxt;
  634. }
  635. Schrift *KontrollKnopf::getSchrift() const // gibt die Schrift zurück
  636. {
  637. return textRd ? textRd->getSchrift() : 0;
  638. }
  639. Schrift *KontrollKnopf::zSchrift() const
  640. {
  641. return textRd ? textRd->zSchrift() : 0;
  642. }
  643. int KontrollKnopf::getSFarbe() const // gibt die Schrift Farbe zurück
  644. {
  645. return sF;
  646. }
  647. int KontrollKnopf::getSSize() const // gibt die Schrift Größe zurück
  648. {
  649. return sGr;
  650. }
  651. int KontrollKnopf::getSBgFarbe() const// gibt die Select Hintergrundfarbe zurück
  652. {
  653. return sBgF;
  654. }
  655. int KontrollKnopf::getKBgFarbe() const // gibt die Klick Hintergrundfarbe zurück
  656. {
  657. return kBgF;
  658. }
  659. Bild *KontrollKnopf::getSBgBild() const // gibt das Select Hintergrundbild zurück
  660. {
  661. return sBgB ? dynamic_cast<Bild *>( sBgB->getThis() ) : 0;
  662. }
  663. Bild *KontrollKnopf::zSBgBild() const
  664. {
  665. return sBgB;
  666. }
  667. Bild *KontrollKnopf::getKBgBild() const // gibt das Klick Hintergrundbild zurück
  668. {
  669. return kBgB ? dynamic_cast<Bild *>( kBgB->getThis() ) : 0;
  670. }
  671. Bild *KontrollKnopf::zKBgBild() const
  672. {
  673. return kBgB;
  674. }
  675. AlphaFeld *KontrollKnopf::getSAlphaFeld() const // gibt das Select AlphaFeld zurück
  676. {
  677. return sAf ? dynamic_cast<AlphaFeld *>( sAf->getThis() ) : 0;
  678. }
  679. AlphaFeld *KontrollKnopf::zSAlphaFeld() const
  680. {
  681. return sAf;
  682. }
  683. AlphaFeld *KontrollKnopf::getKAlphaFeld() const // gibt das Klick AlphaFeld zurück
  684. {
  685. if( !kAf )
  686. return 0;
  687. return dynamic_cast<AlphaFeld *>( kAf->getThis() );
  688. }
  689. AlphaFeld *KontrollKnopf::zKAlphaFeld() const
  690. {
  691. return kAf;
  692. }