Knopf.cpp 20 KB

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