RightTools.cpp 3.1 KB

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