00001 #ifndef _IGS_IMAGE_H_ 00002 #define _IGS_IMAGE_H_ 00003 00004 #include "synchronization/semaphore.h" 00005 #ifndef NOGL 00006 #include "opengl/glos.h" 00007 #include <gl/gl.h> 00008 #endif 00009 00010 #include "IGS_Pixel.h" 00011 00012 class IGS_Image 00013 { 00014 public: 00015 IGS_Image(); 00016 IGS_Image( const IGS_Image& right ); 00017 ~IGS_Image(); 00018 void Draw() const; 00019 virtual void*& GetBuffer() = 0; 00020 virtual const void* const GetBuffer() const = 0; 00021 int GetSizeX() const; 00022 int GetSizeY() const; 00023 virtual void Initialize() = 0; 00024 virtual void ScreenCapture(); 00025 00026 #ifndef NOGL 00027 void SetFormat( const GLenum format ); 00028 #endif 00029 void SetPosition( const int x, const int y ); 00030 void SetResolution( const int xres, const int yres ); 00031 #ifndef NOGL 00032 void SetType( const GLenum type ); 00033 static int SizeOfType( const GLenum type ); 00034 #endif 00035 bool Valid() const; 00036 00037 protected: 00038 00039 int ComputeIndex( const int x, const int y ) const; 00040 int ComputeMaxIndex() const; 00041 virtual void Invalidate(); 00042 00043 int guid; 00044 mutable Semaphore semaphore; 00045 // void* pixels; //void* yuck! 00046 int posX; 00047 int poxY; 00048 int sizeX; 00049 int sizeY; 00050 #ifndef NOGL 00051 GLenum format; 00052 GLenum type; 00053 #endif 00054 }; 00055 00056 #endif