#include "VideoKarte.h" #include #include #include "..\Kamera\VideoKamera.h" // Inhalt der VideoKarte Klasse aus VideoKarte.h // Konstruktor VideoKarte::VideoKarte() { map = new RCArray< Bild >(); rahmen = new RCArray< LRahmen >(); runde = 0; map->set( new Bild(), runde ); rahmen->set( new LRahmen(), runde ); rahmen->z( runde )->setFarbe( 0xFFFFFFFF ); rahmen->z( runde )->setRamenBreite( 2 ); ref = 1; } // Destruktor VideoKarte::~VideoKarte() { map->release(); rahmen->release(); } // nicht constant void VideoKarte::setSize( int br, int hö ) { map->z( runde )->neuBild( br, hö, 0 ); rahmen->z( runde )->setSize( br, hö ); } void VideoKarte::nextRunde( bool vorwärts ) { if( vorwärts ) { runde++; map->set( new Bild(), runde ); rahmen->set( new LRahmen(), runde ); rahmen->z( runde )->setFarbe( 0xFFFFFFFF ); rahmen->z( runde )->setRamenBreite( 2 ); } else runde--; } void VideoKarte::render( VideoKamera *zKam, Bild &zRObj ) { rahmen->z( runde )->setPosition( zKam->getRX( 0 ), zKam->getRY( 0 ) ); zRObj.drawBild( rahmen->z( runde )->getX(), rahmen->z( runde )->getY(), map->z( runde )->getBreite(), map->z( runde )->getHeight(), *map->z( runde ) ); rahmen->z( runde )->render( zRObj ); } // constant int VideoKarte::getBreite() const { return map->z( runde )->getBreite(); } int VideoKarte::getHeight() const { return map->z( runde )->getHeight(); } Bild *VideoKarte::zMap() const { return ( map->z( runde )->getBreite() != 0 && map->z( runde )->getHeight() != 0 ) ? map->z( runde ) : 0; } Bild *VideoKarte::zMap( int runde ) const { return ( map->z( runde )->getBreite() != 0 && map->z( runde )->getHeight() != 0 ) ? map->z( runde ) : 0; } // Reference Counting VideoKarte *VideoKarte::getThis() { ref++; return this; } VideoKarte *VideoKarte::release() { ref--; if( !ref ) delete this; return 0; }