Knopf.cpp 19 KB

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