00001
00028 #ifndef __VETLIB_VETFRAMEGREY_H__
00029 #define __VETLIB_VETFRAMEGREY_H__
00030
00031
00032
00033 #include "vetDefs.h"
00034
00035
00036 #include "vetFrame.h"
00037 class vetFrameGrey;
00038 #include "vetFrameYUV420.h"
00039 #include "vetFrameRGB24.h"
00040 #include "vetFrameRGB96.h"
00041 #include "vetFrameRGBA32.h"
00042
00044 typedef unsigned char PixelGrey;
00045
00046
00047 #define RED_COEF .2989961801
00048 #define GREEN_COEF .5869947588
00049 #define BLUE_COEF .1139912943
00050
00051
00052 class vetFrameGrey : public virtual vetFrame
00053 {
00054 public:
00055
00059 PixelGrey *data;
00060
00061 public:
00062
00066 vetFrameGrey();
00067
00073 vetFrameGrey(unsigned int width, unsigned int height);
00074
00079 vetFrameGrey(vetFrameGrey& img);
00080
00085 vetFrameGrey(vetFrameYUV420& img);
00086
00091 vetFrameGrey(vetFrameRGB24& img);
00092
00097 vetFrameGrey(vetFrameRGB96& img);
00098
00103 vetFrameGrey(vetFrameRGBA32& img);
00104
00108 ~vetFrameGrey();
00109
00110
00111 int setWidth(unsigned int newWidth);
00112 int setHeight(unsigned int newHeight);
00113
00114
00115
00116 void* dump_buffer() { return static_cast<void*>(data); };
00117
00118 VETRESULT reAllocCanvas(unsigned int w, unsigned int h);
00119
00120
00121
00122
00123 unsigned int getBpp() { return sizeof(PixelGrey) * 8; };
00124 VETRESULT setBlack();
00125 VETRESULT setWhite();
00126
00127 unsigned int getBufferSize() { return (unsigned int)( width * height); };
00128
00129
00130 VETRESULT extractBrightness(unsigned char* buffer, unsigned int* size = NULL );
00131
00132
00133
00144 VETRESULT setPixel(unsigned int x, unsigned int y, PixelRGB24 p);
00145
00155 VETRESULT setPixel(unsigned int x, unsigned int y, PixelGrey level);
00156
00166 VETRESULT getPixel(unsigned int x, unsigned int y, PixelGrey& p) const;
00167
00168 const PixelGrey& getPixel(unsigned int x, unsigned int y) const;
00169
00170
00178 vetFrameGrey& clearWith(PixelGrey bg = 0);
00179
00181 vetFrameGrey& copy(vetFrameGrey& img);
00182
00183
00185 VETRESULT invert();
00186
00188 VETRESULT threshold(PixelGrey thresh) ;
00189
00190
00191
00192
00201 vetFrameGrey& operator = (vetFrameGrey& img) { return this->copy(img); };
00202
00204 vetFrameGrey& operator += (vetFrameGrey& img) ;
00205
00207 vetFrameGrey& operator -= (vetFrameGrey& img) ;
00208
00210 vetFrameGrey& operator += (PixelGrey offset) ;
00211
00213 vetFrameGrey& operator -= (PixelGrey offset) ;
00214
00216 vetFrameGrey& operator /= (float factor) ;
00217
00219 vetFrameGrey& operator *= (float factor) ;
00220
00221
00222 vetFrameGrey& operator >> (vetFrameYUV420& img);
00223 vetFrameGrey& operator >> (vetFrameRGB24& img);
00224 vetFrameGrey& operator >> (vetFrameRGB96& img);
00225 vetFrameGrey& operator >> (vetFrameRGBA32& img);
00226
00227 void operator << (const vetFrameYUV420& img);
00228 void operator << (const vetFrameRGB24& img);
00229 void operator << (const vetFrameRGBA32& img);
00230 void operator << (const vetFrameRGB96& img);
00231
00232 VETFRAME_PROFILE getProfile() { return vetFrame::VETFRAME_MONO; };
00233
00234 VETFRAME_CHANNEL_TYPE getChannelType() { return vetFrame::VETFRAME_CT_PACKED; };
00235
00236 int getFOURCC() { return 0;};
00237 };
00238
00239
00240 #endif // __VETLIB_VETFRAMEGREY_H__
00241