#include "VideoChat.h" #include #include #include #include #include #include #include // Inhalt der VideoChat Klasse aus VideoChat.h // Konstruktor VideoChat::VideoChat( Schrift *zSchrift ) { verlauf = new TextFeld(); verlauf->setStyle( TextFeld::Style::TextGebiet & ~TextFeld::Style::Erlaubt ); verlauf->setLinienRahmenFarbe( 0xFF909090 ); verlauf->setLinienRahmenBreite( 1 ); verlauf->setText( "" ); verlauf->setSchriftFarbe( 0xFFFFFFFF ); verlauf->setSchriftSize( 12 ); verlauf->setPosition( 20, BildschirmGröße().y - 210 ); verlauf->setSize( 450, 200 ); verlauf->setSchriftZ( zSchrift->getThis() ); ref = 1; } // Destruktor VideoChat::~VideoChat() { verlauf->release(); } // nicht constant void VideoChat::addNachricht( char *nachricht ) { verlauf->addZeile( nachricht ); verlauf->updateVScroll(); } void VideoChat::addNachricht( char *nachricht, int farbe ) { verlauf->zText()->appendColor( farbe ); verlauf->addZeile( nachricht ); verlauf->zText()->appendColor( 0xFFFFFFFF ); verlauf->updateVScroll(); } void VideoChat::removeNachricht( char *nachricht ) { Text *txt = new Text( nachricht ); txt->append( "\n" ); Schrift *schrift = verlauf->zSchrift(); if( schrift ) { schrift->lock(); schrift->textFormatieren( txt, verlauf->getBreite() - 15 - 2, 12 ); schrift->unlock(); } int n = txt->anzahlVon( '\n' ); int n2 = verlauf->zText()->anzahlVon( '\n' ); if( n2 > n ) verlauf->zText()->remove( verlauf->zText()->positionVon( '\n', n2 - n - 1 ) + 1 ); else verlauf->setText( "" ); verlauf->updateVScroll(); } void VideoChat::doMausEreignis( MausEreignis &me ) { bool vera = me.verarbeitet; verlauf->doMausEreignis( me ); if( !vera && me.verarbeitet ) { verlauf->setLinienRahmenFarbe( 0xFFFFFFFF ); verlauf->setVertikalScrollFarbe( 0xFF808080, 0 ); } else { verlauf->setLinienRahmenFarbe( 0xFF909090 ); verlauf->setVertikalScrollFarbe( 0xFF404040, 0 ); } } void VideoChat::tick( double z ) { verlauf->tick( z ); } void VideoChat::render( Bild &zRObj ) { verlauf->render( zRObj ); } // constant // Reference Counting VideoChat *VideoChat::getThis() { ref++; return this; } VideoChat *VideoChat::relese() { ref--; if( !ref ) delete this; return 0; }