00001 /* 00002 * This file contains abstract class for camera loaded from DLL. 00003 * 00004 * Author: 00005 * Tomas Mrkvicka 00006 * xmrkvi03@stud.fit.vutbr.cz 00007 * 00008 */ 00009 00010 #include <windows.h> 00011 00012 //FORWARD DECLARATIONS 00013 namespace NSCameras 00014 { 00015 class TCameraAbstract; 00016 }; 00017 00018 #ifndef _CAMERAS_CAMERAABSTRACT_HH_ 00019 #define _CAMERAS_CAMERAABSTRACT_HH_ 00020 00021 namespace NSCameras 00022 { 00023 00024 //////////////////////////////////////////////////////////////////////////////// 00025 //////////////////////////////////////////////////////////////////////////////// 00026 //////////////////////////////////////////////////////////////////////////////// 00027 // TCameraAbstract 00028 00029 /** Tato trida reprezentuje rozhrani pro kameru, ze ktere se ziskavaji snimky ve formatu RGB. 00030 * 00031 * Objekt tridy musi byt odstranen pomoci metody Destroy() - operator DELETE nelze pouzit 00032 * protoze pamet je alokovana uvnitr DLL. 00033 * 00034 * \note Zarovnani bajtu v pixelu typu RGB na pocitacich s ukladanim bajtu little endian je 00035 * nasledujici [ADRESA 0]BGRBGRBGR... 00036 */ 00037 class TCameraAbstract 00038 { 00039 //PUBLIC METHODS 00040 public: 00041 virtual DWORD GetDataSize(void) = 0; ///< velikost jednoho snimku v bajtech 00042 virtual void GetData(void * dest) = 0; ///< ulozi do pripravene pameti aktualni 00043 ///< obrazova data 00044 ///< data jsou vzdy ve formatu RGB a jsou ulozena 00045 ///< souvisle v pameti 00046 00047 virtual int GetWidth(void) = 0; ///< sirka dat v pixelech 00048 virtual int GetHeight(void) = 0; ///< vyska dat v pixelech 00049 00050 virtual void Destroy(void) = 0; ///< zniceni tohoto objektu 00051 00052 //PROTECTED METHODS 00053 protected: 00054 TCameraAbstract(void){}; ///< konstruktor 00055 ~TCameraAbstract(void){}; ///< destruktor 00056 TCameraAbstract( const TCameraAbstract & orig );///< falesny kopirovaci konstruktor 00057 void operator=( const TCameraAbstract & orig ); ///< falesny kopirovaci konstruktor 00058 }; 00059 00060 // TCameraAbstract 00061 //////////////////////////////////////////////////////////////////////////////// 00062 //////////////////////////////////////////////////////////////////////////////// 00063 //////////////////////////////////////////////////////////////////////////////// 00064 00065 //ukazatele na funkce pro ziskani kamery z DLL 00066 00067 typedef TCameraAbstract* (*PTR_CAMERAGET)(void); 00068 typedef TCameraAbstract* (*PTR_CAMERAGETIMAGE)( const char * filename ); 00069 00070 }; //END of namespace NSCameras 00071 using namespace NSCameras; 00072 00073 #endif