00001 /* 00002 * This file contains class that load images from specified file. 00003 * 00004 * Author: 00005 * Tomas Mrkvicka 00006 * xmrkvi03@stud.fit.vutbr.cz 00007 * 00008 */ 00009 00010 #include "CameraAbstract/CameraAbstract.h" 00011 00012 //deklarace funkce pro export tridy ven z DLL 00013 extern "C" __declspec(dllexport) TCameraAbstract* CreateCamera(const char * filename); 00014 00015 // FORWARD DECLARATIONS 00016 namespace NSCameras 00017 { 00018 class TCameraImage; 00019 }; 00020 00021 #ifndef _CAMERAS_CAMERAIMAGE_HH_ 00022 #define _CAMERAS_CAMERAIMAGE_HH_ 00023 00024 namespace NSCameras 00025 { 00026 00027 //////////////////////////////////////////////////////////////////////////////// 00028 //////////////////////////////////////////////////////////////////////////////// 00029 //////////////////////////////////////////////////////////////////////////////// 00030 // TCameraImage 00031 00032 /** Tato trida reprezentuje kameru ziskavajici snimky ze zadaneho obrazku. 00033 * 00034 * Trida plne respektuje pravidla bazove tridy TCameraAbstract a proto by manipulace 00035 * s vytvorenym objektem mela probihat pouze pres bazovou tridu (rozhrani). 00036 * 00037 * Protoze se jedna o obrazek, data jsou nactena pouze pri inicializaci a dale 00038 * jsou pouze vracena pri zadostech o vysledek. Trida sam o sobe tedy neni vypocetne 00039 * narocna. Vyuzit ji lze v situacich, kdy napr. potrebujeme testovat nejaky algoritmus 00040 * pouze na zadanem obrazku a v budoucnu chceme algoritmus rozsirit na praci s videem. 00041 * 00042 * \note Trida vyuziva pro nacitani obrazku knihovnu GDI+, takze je vyzadovana jeji pritomnost 00043 * v systemu. 00044 */ 00045 class TCameraImage : public TCameraAbstract 00046 { 00047 //PUBLIC OVERRIDEN METHODS 00048 public: 00049 virtual DWORD GetDataSize(void); 00050 virtual void GetData(void * dest); 00051 00052 00053 virtual int GetWidth(void); 00054 virtual int GetHeight(void); 00055 00056 virtual void Destroy(void); 00057 00058 //PUBLIC STATIC METHODS 00059 public: 00060 static TCameraImage* CreateCamera(const char * filename); 00061 00062 //PRIVATE METHODS 00063 private: 00064 bool Initialize( const char * filename ); 00065 00066 TCameraImage(void); 00067 ~TCameraImage(void); 00068 00069 TCameraImage( const TCameraImage & orig ); ///< falesny kopirovaci kontruktor 00070 void operator=( const TCameraImage & orig ); ///< falesny prirazovaci operator 00071 00072 //PRIVATE COMPONENTS 00073 private: 00074 int m_width; ///< sirka nacteneho obrazu 00075 int m_height; ///< vyska nacteneho obrazu 00076 00077 unsigned char* m_data; ///< pixely obrazu 00078 }; 00079 00080 // TCameraImage 00081 //////////////////////////////////////////////////////////////////////////////// 00082 //////////////////////////////////////////////////////////////////////////////// 00083 //////////////////////////////////////////////////////////////////////////////// 00084 00085 }; //END of namespace NSCameras 00086 using namespace NSCameras; 00087 00088 #endif