Bilder.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "Bilder.h"
  2. #include <DateiSystem.h>
  3. // Inhalt der Bilder Klasse aus Bilder.h
  4. // Konstruktor
  5. Bilder::Bilder()
  6. {
  7. bilder = new RCArray< Bild >();
  8. paths = new RCArray< Text >();
  9. ref = 1;
  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->getIterator(); i; i++, index++ )
  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( b->getThis() );
  43. c.unlock();
  44. return b;
  45. }
  46. BilderV *Bilder::getThis()
  47. {
  48. ref++;
  49. return this;
  50. }
  51. BilderV *Bilder::release()
  52. {
  53. if( !--ref )
  54. delete this;
  55. return 0;
  56. }