ну и ес-но раз есть изображения, то должно быть удобное хранилище для них:
PHP код:
/**********************************************************************************************/
interface LTAPI I_BitmapRepository
{
public://////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Add bitmaps
virtual void AddBitmap( const Bitmap& bmp, const String& name ) = 0;
virtual void AddBitmap( const Bitmap& bmp, size_t id, size_t size = 0 ) = 0;
virtual void AddBitmap( const Bitmap& bmp, const String& name, size_t id, size_t size = 0 ) = 0;
//////////////////////////////////////////////////////////////////////////
// Load from files
virtual void LoadFromDir( const String& path, const String& mask = "*.*" ) = 0;
virtual void SmartLoad( const String& path, size_t id ) = 0;
virtual void LoadFromFile( const String& name ) = 0;
virtual void LoadFromFile( const String& name, size_t id, size_t size = 0 ) = 0;
virtual void SetBasePath( const String& path ) = 0;
//////////////////////////////////////////////////////////////////////////
// Retrieve bitmaps
virtual bool IsExist( size_t id, size_t size = 0 ) = 0;
virtual bool IsExist( const String& name ) = 0;
virtual const Bitmap& GetBitmap( size_t id, size_t size = 0 ) = 0;
virtual const Bitmap& GetBitmap( const String& name ) = 0;
//////////////////////////////////////////////////////////////////////////
// Combine/Modify bitmaps
virtual void GenerateBitmap(
size_t id,
size_t idSource,
size_t idAddedFirst = 0,
size_t idAddedSecond = 0,
size_t idAddedThird = 0 ) = 0;
virtual void GenerateDisabledBitmap(
size_t id,
size_t idSource ) = 0;
};
это интерфейс, в тулките есть его реализация - BitmapRepository, также есть глобальный объект theBitmapRepository, который создается автоматом при старте приложения и может быть доступен из любого места в программе
доступ к картинкам воможен по:
PHP код:
theBitmapRepository->AddBitmap( Bitmap( "test.png"), "test" );
Bitmap bmp = theBitmapRepository->GetBitmap( "test" );
PHP код:
theBitmapRepository->AddBitmap( Bitmap( "test.png"), ID_BMP_TEST );
Bitmap bmp = theBitmapRepository->GetBitmap( ID_BMP_TEST );
PHP код:
theBitmapRepository->AddBitmap( Bitmap( "test_16.png"), ID_BMP_TEST, 16 );
theBitmapRepository->AddBitmap( Bitmap( "test_32.png"), ID_BMP_TEST, 32 );
Bitmap bmp32 = theBitmapRepository->GetBitmap( ID_BMP_TEST, 32 );
некоторые методы:
- LoadFromDir( const String& path, const String& mask = "*.*" )
загружает все изображения из папки, потом изображения можно получить по имени, например - test_16
- SmartLoad( const String& path, size_t id )
небольшая отсебятина, часто надо иметь одно изображения разных размеров, и чтоб не писать:
PHP код:
theBitmapRepository->AddBitmap( Bitmap( "test_16.png"), ID_BMP_TEST, 16 );
theBitmapRepository->AddBitmap( Bitmap( "test_32.png"), ID_BMP_TEST, 32 );
theBitmapRepository->AddBitmap( Bitmap( "test_48.png"), ID_BMP_TEST, 48 );
...
можно один раз написать:
PHP код:
theBitmapRepository->SmartLoad( "test_*.png", ID_BMP_TEST );
будут добавлены все файлы по маске - размер будет взят из части имени на месте *
см. выше про объединение нескольких изображений в одно