VideoKarte.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include "VideoKarte.h"
  2. #include <Rahmen.h>
  3. #include <Punkt.h>
  4. #include "..\Kamera\VideoKamera.h"
  5. // Inhalt der VideoKarte Klasse aus VideoKarte.h
  6. // Konstruktor
  7. VideoKarte::VideoKarte()
  8. {
  9. map = new RCArray< Bild >();
  10. rahmen = new RCArray< LRahmen >();
  11. runde = 0;
  12. map->set( new Bild(), runde );
  13. rahmen->set( new LRahmen(), runde );
  14. rahmen->z( runde )->setFarbe( 0xFFFFFFFF );
  15. rahmen->z( runde )->setRamenBreite( 2 );
  16. ref = 1;
  17. }
  18. // Destruktor
  19. VideoKarte::~VideoKarte()
  20. {
  21. map->release();
  22. rahmen->release();
  23. }
  24. // nicht constant
  25. void VideoKarte::setSize( int br, int hö )
  26. {
  27. map->z( runde )->neuBild( br, hö, 0 );
  28. rahmen->z( runde )->setSize( br, hö );
  29. }
  30. void VideoKarte::nextRunde( bool vorwärts )
  31. {
  32. if( vorwärts )
  33. {
  34. runde++;
  35. map->set( new Bild(), runde );
  36. rahmen->set( new LRahmen(), runde );
  37. rahmen->z( runde )->setFarbe( 0xFFFFFFFF );
  38. rahmen->z( runde )->setRamenBreite( 2 );
  39. }
  40. else
  41. runde--;
  42. }
  43. void VideoKarte::render( VideoKamera *zKam, Bild &zRObj )
  44. {
  45. rahmen->z( runde )->setPosition( zKam->getRX( 0 ), zKam->getRY( 0 ) );
  46. zRObj.drawBild( rahmen->z( runde )->getX(), rahmen->z( runde )->getY(), map->z( runde )->getBreite(), map->z( runde )->getHeight(), *map->z( runde ) );
  47. rahmen->z( runde )->render( zRObj );
  48. }
  49. // constant
  50. int VideoKarte::getBreite() const
  51. {
  52. return map->z( runde )->getBreite();
  53. }
  54. int VideoKarte::getHeight() const
  55. {
  56. return map->z( runde )->getHeight();
  57. }
  58. Bild *VideoKarte::zMap() const
  59. {
  60. return ( map->z( runde )->getBreite() != 0 && map->z( runde )->getHeight() != 0 ) ? map->z( runde ) : 0;
  61. }
  62. Bild *VideoKarte::zMap( int runde ) const
  63. {
  64. return ( map->z( runde )->getBreite() != 0 && map->z( runde )->getHeight() != 0 ) ? map->z( runde ) : 0;
  65. }
  66. // Reference Counting
  67. VideoKarte *VideoKarte::getThis()
  68. {
  69. ref++;
  70. return this;
  71. }
  72. VideoKarte *VideoKarte::release()
  73. {
  74. ref--;
  75. if( !ref )
  76. delete this;
  77. return 0;
  78. }