RightTools.cpp 2.7 KB

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