Тема: Less Toolkit
Показать сообщение отдельно
Старый 25.01.2009, 19:46   #11 (Ссылка на пост)
Lester
Гаденыш
 
Аватар для Lester
Пол:
 
Активность Longevity
2/20 16/20
Today Сообщения
0/5 sssss4648
Благодарил(а): 2,442
Благодарили 5,834 раз в 2,093 постах
Галерея: 0
Вес репутации: 78 Lester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторы
ну и ес-но раз есть изображения, то должно быть удобное хранилище для них:

PHP код:
/**********************************************************************************************/
interface LTAPI I_BitmapRepository
{
public:
//////////////////////////////////////////////////////////////////////////

        //////////////////////////////////////////////////////////////////////////
        // Add bitmaps

virtual    void                    AddBitmap( const Bitmapbmp, const Stringname ) = 0;
virtual    void                    AddBitmap( const Bitmapbmpsize_t idsize_t size ) = 0;
virtual    void                    AddBitmap( const Bitmapbmp, const Stringnamesize_t idsize_t size ) = 0;

        
//////////////////////////////////////////////////////////////////////////
        // Load from files

virtual    void                    LoadFromDir( const Stringpath, const Stringmask "*.*" ) = 0;
virtual    void                    SmartLoad( const Stringpathsize_t id ) = 0;

virtual    void                    LoadFromFile( const Stringname ) = 0;
virtual    void                    LoadFromFile( const Stringnamesize_t idsize_t size ) = 0;

virtual    void                    SetBasePath( const Stringpath ) = 0;

        
//////////////////////////////////////////////////////////////////////////
        // Retrieve bitmaps

virtual    bool                    IsExistsize_t idsize_t size ) = 0;
virtual    bool                    IsExist( const Stringname ) = 0;

virtual    const Bitmap&            GetBitmapsize_t idsize_t size ) = 0;
virtual    const Bitmap&            GetBitmap( const Stringname ) = 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;

virtual    void                    GenerateDisabledBitmap(
                                    
size_t                id
                                    
size_t                idSource ) = 0;
}; 
это интерфейс, в тулките есть его реализация - BitmapRepository, также есть глобальный объект theBitmapRepository, который создается автоматом при старте приложения и может быть доступен из любого места в программе

доступ к картинкам воможен по:
  • имени
PHP код:
theBitmapRepository->AddBitmapBitmap"test.png"), "test" );
Bitmap bmp theBitmapRepository->GetBitmap"test" ); 
  • идентификатору
PHP код:
theBitmapRepository->AddBitmapBitmap"test.png"), ID_BMP_TEST );
Bitmap bmp theBitmapRepository->GetBitmapID_BMP_TEST ); 
  • идентификатору и размеру
PHP код:
theBitmapRepository->AddBitmapBitmap"test_16.png"), ID_BMP_TEST16 );
theBitmapRepository->AddBitmapBitmap"test_32.png"), ID_BMP_TEST32 );
  
Bitmap bmp32 theBitmapRepository->GetBitmapID_BMP_TEST32 ); 
некоторые методы:
  • LoadFromDir( const String& path, const String& mask = "*.*" )
загружает все изображения из папки, потом изображения можно получить по имени, например - test_16
  • SmartLoad( const String& path, size_t id )
небольшая отсебятина, часто надо иметь одно изображения разных размеров, и чтоб не писать:

PHP код:
theBitmapRepository->AddBitmapBitmap"test_16.png"), ID_BMP_TEST16 );
theBitmapRepository->AddBitmapBitmap"test_32.png"), ID_BMP_TEST32 );
theBitmapRepository->AddBitmapBitmap"test_48.png"), ID_BMP_TEST48 );
... 
можно один раз написать:

PHP код:
theBitmapRepository->SmartLoad"test_*.png"ID_BMP_TEST ); 
будут добавлены все файлы по маске - размер будет взят из части имени на месте *
  • GenerateBitmap
см. выше про объединение нескольких изображений в одно
__________________
- Слава Україні! - закричали они, вместо приветствия.
- Что это за фашизм?! - возмутился журналист Гундырев. - Откуда у них столько ненависти к русским?

Последний раз редактировалось Lester, 25.01.2009 в 19:49.
Lester вне форума  
Ответить с цитированием