Тема: Less Toolkit
Показать сообщение отдельно
Старый 25.01.2009, 03:21   #10 (Ссылка на пост)
Lester
Гаденыш
 
Аватар для Lester
Пол:
 
Активность Longevity
3/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 скоро в модераторы
Цитата:
Сообщение от zwitter Посмотреть сообщение
каша полнейшая. не торт совершенно
проповедники ООП плачут крокодильими слезами.
нафига все было сбивать в 1 класс ?
в том же VCL есть три разных понятия - TBitmap, TPicture, TImage
вынесите все функции нафиг из класса, ООП тут нет.
как по мне наоборот, в данном случае есть только один объект - изображение и делить тут нечего, и расскажите плз:

1. смысл разделения на TBitmap, TPicture, TImage( особенно для того кто пользуется ими - так удобнее? )
2. как вырезать из картинки в VCL подкартинку( ее произвольную часть ) , как отразить изображение, повернуть, размыть и т.д., т.е. те действия которые я добавил в класс

насчет методов - да, есть смысл убрать операции которые возвращают новые изображения, и оставить только ...Self, ес-но переименовав, так и сделаю - будет компактнее и выглядеть опрятнее

Lester добавил 25.01.2009 в 04:29
сейчас выглядит как:

PHP код:
/**********************************************************************************************/
class LTAPI Bitmap
{
public:
//////////////////////////////////////////////////////////////////////////
    
    // TODO: AUTO register/unregister in repository

                                
Bitmapvoid );
                                
Bitmap( const Bitmapbmp );
                                
Bitmap( const Bitmapbmp, const Rectrect );
                                
Bitmapsize_t widthsize_t height );
                                
Bitmap( const StringpathBitmapType type AUTO );
                                
Bitmapvoiddatasize_t sizeBitmapType type AUTO );
                                
Bitmap( const char* const* xpm );

virtual                            ~Bitmapvoid );

public:
//////////////////////////////////////////////////////////////////////////

        //////////////////////////////////////////////////////////////////////////
        // Information

        
size_t                    GetWidthvoid ) const;
        
size_t                    GetHeightvoid ) const;

        
bool                    IsOkvoid ) const;

        
//////////////////////////////////////////////////////////////////////////
        // Load and save

        
bool                    LoadDatavoiddatasize_t sizeBitmapType type AUTO );
        
bool                    LoadFile( const StringpathBitmapType type AUTO );

        
bool                    SaveDatavoid*& datasize_tsizeBitmapType type PNG ) const;
        
bool                    SaveFile( const StringpathBitmapType type AUTO ) const;

        
//////////////////////////////////////////////////////////////////////////
        // Filters

        
Bitmap&                    Blursize_t radius );

        
Bitmap&                    ColourReductionsize_t colours 236 );
        
Bitmap&                    ConvertToGreyscalevoid );
        
Bitmap&                    ConvertToMonovoid );

        
Bitmap                    GetSubBitmap( const Rectrect ) const;

        
Bitmap&                    MirrorHorizontalvoid );
        
Bitmap&                    MirrorVerticalvoid );

        
Bitmap&                    Scale
                                    
size_t                width
                                    
size_t                height
                                    
bool                highQuality true );

        
Bitmap&                    Resize(
                                    
size_t                width,
                                    
size_t                height,
                                    
Colour                cl BLACK );

        
Bitmap&                    Rotate
                                    
size_t                angle
                                    
size_t                x
                                    
size_t                y
                                    
bool                highQuality true );

        
Bitmap&                    Rotate90bool clockwise true );
        
Bitmap&                    RotateHuesize_t angle );

        
//////////////////////////////////////////////////////////////////////////
        // Transparency and mask

        
void                    CreateMaskFromBitmap( const BitmapmaskColour maskColour );
        
void                    CreateMaskFromColourColour mask );
        
void                    DeleteMaskvoid );

        
bool                    HasAlphavoid ) const;
        
bool                    HasMaskvoid ) const;
        
bool                    IsTransparent(
                                    
size_t                x
                                    
size_t                y
                                    
uchar                threshold 128 ) const;

        
void                    ConvertAlphaToMaskuchar threshold 128 );
        
void                    InitAlphavoid );

        
Colour                    GetMaskColourvoid ) const;

        
//////////////////////////////////////////////////////////////////////////
        // Pixels

        
uchar                    GetAlphasize_t xsize_t y ) const;
        
Colour                    GetColoursize_t xsize_t y ) const;

        
void                    ReplaceColour c1Colour c2 );

        
void                    SetAlpha
                                    
size_t                x
                                    
size_t                y,
                                    
uchar                value );

        
void                    SetColour
                                    
size_t                x
                                    
size_t                y,
                                    
Colour                value );

        const 
uchar*            GetDatavoid ) const;

public:
//////////////////////////////////////////////////////////////////////////

        //////////////////////////////////////////////////////////////////////////
        // Operators

        
Bitmap&                    operator=( const Bitmapvalue );
        
bool                    operator==( const Bitmapvalue ) const;

protected:
//////////////////////////////////////////////////////////////////////////

        
BitmapData*                mpData;
}; 
Lester добавил 25.01.2009 в 13:10
кстати разделение таки будет, но разумное - будет BitmapEx( туда будут вынесены ColourReduction, RotateHue и Rotate ), в котором будут реализованы изменения яркости/контрастности, дополнительные фильтры( скопирую алгоритмы из gimp ) и т.п., то что надо редко, но может пригодится, например для создания анимаций

Lester добавил 25.01.2009 в 13:41
ну и забыл добавить - пути в именах файлов для загрузки могут быть относительными. По умолчанию от папки программы, но базовый путь может быть выставлен через SetResourcesPath:

PHP код:
// Show splash
SetResourcesPath"resources" ); // так-же может быть относительным, ес-но от папки программы
Splash splashBitmap"splash.png" ) );
...
Bitmap bmp"sample/sample.gif" ); // будет читать из resources/sample/sample.gif 
Lester добавил 25.01.2009 в 13:56
добавил еще операторы "+" и "+=", может пригодится, например есть набор иконок для объектов( БД, таблица и т.п. ), надо еще для тех же объектов иконки - добавить/удалить/флушить/заблокировать/разблокировать и т.п., чтоб не иметь зоопарк иконок в папке ресурсов создаем только иконки самих объектов + отдельные( с маской ) иконки - добавить/удалить/флушить/заблокировать/разблокировать, а потом накладываем одни на другие, например так:

PHP код:
Bitmap dbIcon"db.png" );
Bitmap tableIcon"table.png" );
...
Bitmap addIcon"add.png" );
Bitmap deleteIcon"delete.png" );
...
Bitmap addDbIcon dbIcon addIcon;
Bitmap addTableIcon tableIcon addIcon;
... 
__________________
- Слава Україні! - закричали они, вместо приветствия.
- Что это за фашизм?! - возмутился журналист Гундырев. - Откуда у них столько ненависти к русским?

Последний раз редактировалось Lester, 25.01.2009 в 13:35. Причина: Добавлено сообщение
Lester вне форума  
Ответить с цитированием