RightTools.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #include "RightTools.h"
  2. #include "../../../Initialisierung/Initialisierung.h"
  3. RightTool::RightTool()
  4. : Zeichnung()
  5. {}
  6. RightTool::~RightTool()
  7. {}
  8. void RightTool::renderDialogs( Bild &rObj )
  9. {}
  10. RightTools::RightTools( UIInit &uiFactory, Punkt maxSize )
  11. : ZeichnungHintergrund()
  12. {
  13. this->maxSize = maxSize;
  14. toolAuswahl = initAuswahlBox( 5, 5, 290, 20, uiFactory, AuswahlBox::Style::Normal | AuswahlBox::Style::Hintergrund, {} );
  15. toolAuswahl->setEventAktion( [this]( void *, AuswahlBox *, int, int neu )
  16. {
  17. this->selectTool( neu );
  18. } );
  19. tools = new RCArray< RightTool >();
  20. setSize( 300, maxSize.y );
  21. setPosition( maxSize.x - 300, 0 );
  22. setStyle( ZeichnungHintergrund::Style::Sichtbar | ZeichnungHintergrund::Style::Rahmen |
  23. ZeichnungHintergrund::Style::Hintergrund );
  24. setHintergrundFarbe( 0xFF000000 );
  25. setRahmenBreite( 1 );
  26. setRahmenFarbe( 0xFFFFFFFF );
  27. }
  28. RightTools::~RightTools()
  29. {
  30. tools->release();
  31. toolAuswahl->release();
  32. }
  33. void RightTools::addTool( RightTool *tool, char *name )
  34. {
  35. if( !toolAuswahl->getEintragAnzahl() )
  36. tool->addStyle( Zeichnung::Style::Sichtbar );
  37. toolAuswahl->addEintrag( name );
  38. tools->add( tool );
  39. tool->setPosition( 5, 30 );
  40. tool->setSize( 290, maxSize.y - 35 );
  41. }
  42. void RightTools::doPublicMausEreignis( MausEreignis &me )
  43. {
  44. me.mx -= pos.x, me.my -= pos.y;
  45. toolAuswahl->doPublicMausEreignis( me );
  46. int anz = tools->getEintragAnzahl();
  47. for( int i = 0; i < anz; i++ )
  48. {
  49. tools->z( i )->doPublicMausEreignis( me );
  50. }
  51. me.mx += pos.x, me.my += pos.y;
  52. }
  53. void RightTools::doTastaturEreignis( TastaturEreignis &te )
  54. {
  55. toolAuswahl->doTastaturEreignis( te );
  56. int anz = tools->getEintragAnzahl();
  57. for( int i = 0; i < anz; i++ )
  58. {
  59. tools->z( i )->doTastaturEreignis( te );
  60. }
  61. }
  62. bool RightTools::tick( double tickVal )
  63. {
  64. bool ret = __super::tick( tickVal );
  65. ret |= toolAuswahl->tick( tickVal );
  66. int anz = tools->getEintragAnzahl();
  67. for( int i = 0; i < anz; i++ )
  68. {
  69. ret |= tools->z( i )->tick( tickVal );
  70. }
  71. return ret;
  72. }
  73. void RightTools::render( Bild &rObj )
  74. {
  75. __super::render( rObj );
  76. if( rObj.setDrawOptions( pos, gr ) )
  77. {
  78. int anz = tools->getEintragAnzahl();
  79. for( int i = 0; i < anz; i++ )
  80. {
  81. tools->z( i )->render( rObj );
  82. }
  83. toolAuswahl->render( rObj );
  84. rObj.releaseDrawOptions();
  85. }
  86. int anz = tools->getEintragAnzahl();
  87. for( int i = 0; i < anz; i++ )
  88. {
  89. tools->z( i )->renderDialogs( rObj );
  90. }
  91. }
  92. void RightTools::selectTool( int index )
  93. {
  94. int i = 0;
  95. for( auto e = tools->getIterator(); e; e++ )
  96. e->setStyle( Zeichnung::Style::Sichtbar, i++ == index );
  97. }