00001
00028 #ifndef __VETLIBVETFRAMERGBA32_H__
00029 #define __VETLIBVETFRAMERGBA32_H__
00030
00031 #define VETFRAMERGB24_SLOWMODE
00032
00033 #include "vetDefs.h"
00034
00035
00036 #include "vetFrame.h"
00037
00038 class vetFrameRGBA32;
00039 #include "vetFrameYUV420.h"
00040 #include "vetFrameRGB24.h"
00041 #include "vetFrameRGB96.h"
00042
00043 typedef char* PixelRGBA32;
00044
00045 class vetFrameRGBA32 : public virtual vetFrame
00046 {
00047
00048 public:
00049
00053 bool autoFreeData;
00054
00055
00059 unsigned char *data;
00060
00061
00062 public:
00063
00067 enum ChannelRGBA { RED, GREEN, BLUE, ALPHA };
00068
00072 vetFrameRGBA32();
00073
00079 vetFrameRGBA32(unsigned int width, unsigned int height);
00080
00085 vetFrameRGBA32(vetFrameRGBA32& img);
00086
00091 vetFrameRGBA32(vetFrameRGB24& img);
00092
00097 vetFrameRGBA32(vetFrameRGB96& img);
00098
00102 ~vetFrameRGBA32();
00103
00104
00105 void* dump_buffer() { return static_cast<void*>(data); };
00106
00107 unsigned int getBufferSize() { return (unsigned int)( width * height * 4); };
00108
00109
00110 VETRESULT reAllocCanvas(unsigned int w, unsigned int h);
00111
00112 unsigned int getBpp() { return 32; };
00113 VETRESULT setBlack();
00114 VETRESULT setWhite();
00115
00116 VETRESULT extractBrightness(unsigned char* buffer, unsigned int* size = NULL );
00117
00125 vetFrameRGBA32& clearWith(unsigned char* bg);
00126
00127
00137 VETRESULT setPixel(unsigned int x, unsigned int y, unsigned char* p);
00138
00139
00149 VETRESULT getPixel(unsigned int x, unsigned int y, unsigned char* p);
00150
00151
00152
00161 vetFrameRGBA32& operator = (vetFrameRGBA32& img);
00162
00171 vetFrameRGBA32& operator += (vetFrameRGBA32& img);
00172
00181 vetFrameRGBA32& operator -= (vetFrameRGBA32& img);
00182
00183
00184 void operator << (const vetFrameRGB24& img);
00185 void operator << (const vetFrameRGB96& img);
00186
00187 vetFrameRGBA32& operator >> (vetFrameRGB24& img);
00188 vetFrameRGBA32& operator >> (vetFrameRGB96& img);
00189
00190
00191 VETFRAME_PROFILE getProfile() { return vetFrame::VETFRAME_RGBA32; };
00192 VETFRAME_CHANNEL_TYPE getChannelType() { return vetFrame::VETFRAME_CT_PLANAR; };
00193
00194 int getFOURCC() { return 0x41424752; };
00195
00196 };
00197
00198
00199
00200 #endif //__VETLIBVETFRAMERGBA32_H__
00201