VideoChat.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #include "VideoChat.h"
  2. #include <Rahmen.h>
  3. #include <MausEreignis.h>
  4. #include <TastaturEreignis.h>
  5. #include <Text.h>
  6. #include <Schrift.h>
  7. #include <Punkt.h>
  8. #include <Bild.h>
  9. // Inhalt der VideoChat Klasse aus VideoChat.h
  10. // Konstruktor
  11. VideoChat::VideoChat( Schrift *zSchrift )
  12. {
  13. verlauf = new TextFeld();
  14. verlauf->setStyle( TextFeld::Style::TextGebiet & ~TextFeld::Style::Erlaubt );
  15. verlauf->setLinienRahmenFarbe( 0xFF909090 );
  16. verlauf->setLinienRahmenBreite( 1 );
  17. verlauf->setText( "" );
  18. verlauf->setSchriftFarbe( 0xFFFFFFFF );
  19. verlauf->setSchriftSize( 12 );
  20. verlauf->setPosition( 20, BildschirmGröße().y - 210 );
  21. verlauf->setSize( 450, 200 );
  22. verlauf->setSchriftZ( zSchrift->getThis() );
  23. ref = 1;
  24. }
  25. // Destruktor
  26. VideoChat::~VideoChat()
  27. {
  28. verlauf->release();
  29. }
  30. // nicht constant
  31. void VideoChat::addNachricht( char *nachricht )
  32. {
  33. verlauf->addZeile( nachricht );
  34. verlauf->updateVScroll();
  35. }
  36. void VideoChat::addNachricht( char *nachricht, int farbe )
  37. {
  38. verlauf->zText()->appendColor( farbe );
  39. verlauf->addZeile( nachricht );
  40. verlauf->zText()->appendColor( 0xFFFFFFFF );
  41. verlauf->updateVScroll();
  42. }
  43. void VideoChat::removeNachricht( char *nachricht )
  44. {
  45. Text *txt = new Text( nachricht );
  46. txt->append( "\n" );
  47. Schrift *schrift = verlauf->zSchrift();
  48. if( schrift )
  49. {
  50. schrift->lock();
  51. schrift->textFormatieren( txt, verlauf->getBreite() - 15 - 2, 12 );
  52. schrift->unlock();
  53. }
  54. int n = txt->anzahlVon( '\n' );
  55. int n2 = verlauf->zText()->anzahlVon( '\n' );
  56. if( n2 > n )
  57. verlauf->zText()->remove( verlauf->zText()->positionVon( '\n', n2 - n - 1 ) + 1 );
  58. else
  59. verlauf->setText( "" );
  60. verlauf->updateVScroll();
  61. }
  62. void VideoChat::doMausEreignis( MausEreignis &me )
  63. {
  64. bool vera = me.verarbeitet;
  65. verlauf->doMausEreignis( me );
  66. if( !vera && me.verarbeitet )
  67. {
  68. verlauf->setLinienRahmenFarbe( 0xFFFFFFFF );
  69. verlauf->setVertikalScrollFarbe( 0xFF808080, 0 );
  70. }
  71. else
  72. {
  73. verlauf->setLinienRahmenFarbe( 0xFF909090 );
  74. verlauf->setVertikalScrollFarbe( 0xFF404040, 0 );
  75. }
  76. }
  77. void VideoChat::tick( double z )
  78. {
  79. verlauf->tick( z );
  80. }
  81. void VideoChat::render( Bild &zRObj )
  82. {
  83. verlauf->render( zRObj );
  84. }
  85. // constant
  86. // Reference Counting
  87. VideoChat *VideoChat::getThis()
  88. {
  89. ref++;
  90. return this;
  91. }
  92. VideoChat *VideoChat::relese()
  93. {
  94. ref--;
  95. if( !ref )
  96. delete this;
  97. return 0;
  98. }