00001
00002
00003
00004
00005 #ifndef __I_IMAGE_H_INCLUDED__
00006 #define __I_IMAGE_H_INCLUDED__
00007
00008 #include "IReferenceCounted.h"
00009 #include "position2d.h"
00010 #include "rect.h"
00011 #include "SColor.h"
00012
00013 namespace irr
00014 {
00015 namespace video
00016 {
00017
00019
00020 enum ECOLOR_FORMAT
00021 {
00023
00026 ECF_A1R5G5B5 = 0,
00027
00029 ECF_R5G6B5,
00030
00032 ECF_R8G8B8,
00033
00035 ECF_A8R8G8B8
00036 };
00037
00038
00040
00043 class IImage : public virtual IReferenceCounted
00044 {
00045 public:
00046
00048
00053 virtual void* lock() = 0;
00054
00056
00058 virtual void unlock() = 0;
00059
00061 virtual const core::dimension2d<s32>& getDimension() const = 0;
00062
00064 virtual u32 getBitsPerPixel() const = 0;
00065
00067 virtual u32 getBytesPerPixel() const = 0;
00068
00070 virtual u32 getImageDataSizeInBytes() const = 0;
00071
00073 virtual u32 getImageDataSizeInPixels() const = 0;
00074
00076 virtual SColor getPixel(u32 x, u32 y) const = 0;
00077
00079 virtual void setPixel(u32 x, u32 y, const SColor &color ) = 0;
00080
00082 virtual ECOLOR_FORMAT getColorFormat() const = 0;
00083
00085 virtual u32 getRedMask() const = 0;
00086
00088 virtual u32 getGreenMask() const = 0;
00089
00091 virtual u32 getBlueMask() const = 0;
00092
00094 virtual u32 getAlphaMask() const = 0;
00095
00097 virtual u32 getPitch() const =0;
00098
00100 virtual void copyToScaling(void* target, s32 width, s32 height, ECOLOR_FORMAT format=ECF_A8R8G8B8, u32 pitch=0) =0;
00101
00103 virtual void copyToScaling(IImage* target) =0;
00104
00106 virtual void copyTo(IImage* target, const core::position2d<s32>& pos=core::position2d<s32>(0,0)) =0;
00107
00109 virtual void copyTo(IImage* target, const core::position2d<s32>& pos, const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect=0) =0;
00110
00112 virtual void copyToWithAlpha(IImage* target, const core::position2d<s32>& pos,
00113 const core::rect<s32>& sourceRect, const SColor &color,
00114 const core::rect<s32>* clipRect = 0) =0;
00115
00117 virtual void fill(const SColor &color) =0;
00118
00119 };
00120
00121 }
00122 }
00123
00124 #endif
00125