насчет массивов - будем считать, что разобрались( бинарный поиск и SortedArray занесены в TODO и обязательно будут реализованы ), пошли дальше...
Bitmap( класс для работы с изображениями )
PHP код:
/**********************************************************************************************/
class LTAPI Bitmap
{
public://////////////////////////////////////////////////////////////////////////
// TODO: AUTO register/unregister in repository
Bitmap( void );
Bitmap( const Bitmap& bmp );
Bitmap( const Bitmap& bmp, const Rect& rect );
Bitmap( size_t width, size_t height );
Bitmap( const String& path, BitmapType type = AUTO );
Bitmap( void* data, size_t size, BitmapType type = AUTO );
Bitmap( const char* const* xpm );
virtual ~Bitmap( void );
public://////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Information
size_t GetWidth( void ) const;
size_t GetHeight( void ) const;
bool IsOk( void ) const;
//////////////////////////////////////////////////////////////////////////
// Load and save
bool LoadData( void* data, size_t size, BitmapType type = AUTO );
bool LoadFile( const String& path, BitmapType type = AUTO );
bool SaveData( void*& data, size_t& size, BitmapType type = PNG ) const;
bool SaveFile( const String& path, BitmapType type = AUTO ) const;
//////////////////////////////////////////////////////////////////////////
// Filters
Bitmap Blur( size_t radius ) const;
Bitmap& BlurSelf( size_t radius );
Bitmap BlurHorizontal( size_t radius ) const;
Bitmap& BlurHorizontalSelf( size_t radius );
Bitmap BlurVertical( size_t radius ) const;
Bitmap& BlurVerticalSelf( size_t radius );
Bitmap ColourReduction( size_t colours = 236 ) const;
Bitmap& ColourReductionSelf( size_t colours = 236 );
Bitmap ConvertToGreyscale( void ) const;
Bitmap& ConvertToGreyscaleSelf( void );
Bitmap ConvertToMono( void ) const;
Bitmap& ConvertToMonoSelf( void );
Bitmap GetSubBitmap( const Rect& rect ) const;
Bitmap MirrorHorizontal( void ) const;
Bitmap& MirrorHorizontalSelf( void );
Bitmap MirrorVertical( void ) const;
Bitmap& MirrorVerticalSelf( void );
Bitmap Scale(
size_t width,
size_t height,
bool highQuality = true ) const;
Bitmap& ScaleSelf(
size_t width,
size_t height,
bool highQuality = true );
Bitmap Resize(
size_t width,
size_t height,
Colour cl = BLACK ) const;
Bitmap& ResizeSelf(
size_t width,
size_t height,
Colour cl = BLACK );
Bitmap Rotate(
size_t angle,
size_t x,
size_t y,
bool highQuality = true ) const;
Bitmap& RotateSelf(
size_t angle,
size_t x,
size_t y,
bool highQuality = true );
Bitmap RotateHue( size_t angle ) const;
Bitmap& RotateHueSelf( size_t angle );
Bitmap Rotate90( bool clockwise = true ) const;
Bitmap& Rotate90Self( bool clockwise = true );
//////////////////////////////////////////////////////////////////////////
// Transparency and mask
void CreateMaskFromBitmap( const Bitmap& mask, Colour maskColour );
void CreateMaskFromColour( Colour mask );
void DeleteMask( void );
bool HasAlpha( void ) const;
bool HasMask( void ) const;
bool IsTransparent(
size_t x,
size_t y,
uchar threshold = 128 ) const;
void ConvertAlphaToMask( uchar threshold = 128 );
void InitAlpha( void );
Colour GetMaskColour( void ) const;
uchar GetMaskRed( void ) const;
uchar GetMaskGreen( void ) const;
uchar GetMaskBlue( void ) const;
//////////////////////////////////////////////////////////////////////////
// Pixels
uchar GetAlpha( size_t x, size_t y ) const;
Colour GetColour( size_t x, size_t y ) const;
uchar GetRed( size_t x, size_t y ) const;
uchar GetGreen( size_t x, size_t y ) const;
uchar GetBlue( size_t x, size_t y ) const;
void Replace( Colour c1, Colour c2 );
void Replace(
uchar r1, uchar g1, uchar b1,
uchar r2, uchar g2, uchar b2 );
void SetAlpha(
size_t x,
size_t y,
uchar value );
void SetColour(
size_t x,
size_t y,
Colour value );
const uchar* GetData( void ) const;
public://////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Operators
Bitmap& operator=( const Bitmap& value );
bool operator==( const Bitmap& value ) const;
protected://////////////////////////////////////////////////////////////////////////
BitmapData* mpData;
};
как всегда форматирование побилось
поддерживаются GIF, PNG, BMP, XPM, TGA, JPEG, PCX, TIFF, загрузка и сохранение в файл/буффер, базовые фильтры - все остальные будут реализованы отдельно, работа с альфа-каналом и маской, данный класс используется везде где надо хранить и передавать изображения( например иконки для gui )
может у кого-то есть предложения по данному классу( например чего-то не хватает )