Bilder.cpp 1011 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "Bilder.h"
  2. #include <DateiSystem.h>
  3. // Inhalt der Bilder Klasse aus Bilder.h
  4. // Konstruktor
  5. Bilder::Bilder()
  6. : ReferenceCounter()
  7. {
  8. bilder = new RCArray< Bild >();
  9. paths = new RCArray< Text >();
  10. }
  11. // Destruktor
  12. Bilder::~Bilder()
  13. {
  14. bilder->release();
  15. paths->release();
  16. }
  17. // nicht constant
  18. Bild* Bilder::get( const char* path )
  19. {
  20. c.lock();
  21. int index = 0;
  22. for( auto i : *paths )
  23. {
  24. if( i->istGleich( path ) )
  25. {
  26. c.unlock();
  27. return bilder->get( index );
  28. }
  29. }
  30. Text p( path );
  31. p.ersetzen( "\\", "/" );
  32. LTDBDatei dat;
  33. dat.setDatei( p.getTeilText( 0, p.positionVon( "/", p.anzahlVon( "/" ) - 1 ) ) );
  34. dat.leseDaten( 0 );
  35. Bild* b = dat.laden( 0, p.getTeilText( p.positionVon( "/", p.anzahlVon( "/" ) - 1 ) + 1 ) );
  36. if( !b )
  37. {
  38. c.unlock();
  39. return 0;
  40. }
  41. paths->add( new Text( path ) );
  42. bilder->add( dynamic_cast<Bild*>(b->getThis()) );
  43. c.unlock();
  44. return b;
  45. }