VideoChat.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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->setRahmenFarbe( 0xFF909090 );
  16. verlauf->setRahmenBreite( 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. TextRenderer *textRd = verlauf->zTextRenderer();
  48. if( textRd )
  49. {
  50. textRd->setSchriftSize( 12 );
  51. textRd->textFormatieren( txt, verlauf->getBreite() - 15 - 2 );
  52. }
  53. int n = txt->anzahlVon( '\n' );
  54. int n2 = verlauf->zText()->anzahlVon( '\n' );
  55. if( n2 > n )
  56. verlauf->zText()->remove( verlauf->zText()->positionVon( '\n', n2 - n - 1 ) + 1 );
  57. else
  58. verlauf->setText( "" );
  59. verlauf->updateVScroll();
  60. }
  61. void VideoChat::doMausEreignis( MausEreignis &me )
  62. {
  63. bool vera = me.verarbeitet;
  64. verlauf->doMausEreignis( me );
  65. if( !vera && me.verarbeitet )
  66. {
  67. verlauf->setRahmenFarbe( 0xFFFFFFFF );
  68. verlauf->setVertikalScrollFarbe( 0xFF808080, 0 );
  69. }
  70. else
  71. {
  72. verlauf->setRahmenFarbe( 0xFF909090 );
  73. verlauf->setVertikalScrollFarbe( 0xFF404040, 0 );
  74. }
  75. }
  76. void VideoChat::tick( double z )
  77. {
  78. verlauf->tick( z );
  79. }
  80. void VideoChat::render( Bild &zRObj )
  81. {
  82. verlauf->render( zRObj );
  83. }
  84. // constant
  85. // Reference Counting
  86. VideoChat *VideoChat::getThis()
  87. {
  88. ref++;
  89. return this;
  90. }
  91. VideoChat *VideoChat::relese()
  92. {
  93. ref--;
  94. if( !ref )
  95. delete this;
  96. return 0;
  97. }