RightTools.cpp 2.8 KB

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