00001 /* 00002 * This file contains class that load images from first DirectShow camera in system. 00003 * 00004 * Author: 00005 * Tomas Mrkvicka 00006 * xmrkvi03@stud.fit.vutbr.cz 00007 * 00008 */ 00009 00010 #include "CameraAbstract/CameraAbstract.h" 00011 00012 #include "CameraSource.h" 00013 00014 //deklarace funkce pro export tridy ven z DLL 00015 extern "C" __declspec(dllexport) TCameraAbstract* CreateCamera( void ); 00016 00017 //FORWARD DECLARATIONS 00018 namespace NSCameras 00019 { 00020 class TCameraDshow; 00021 }; 00022 00023 #ifndef _CAMERAS_CAMERA_HH_ 00024 #define _CAMERAS_CAMERA_HH_ 00025 00026 namespace NSCameras 00027 { 00028 00029 //////////////////////////////////////////////////////////////////////////////// 00030 //////////////////////////////////////////////////////////////////////////////// 00031 //////////////////////////////////////////////////////////////////////////////// 00032 // TCameraDshow 00033 00034 /** Tato trida reprezentuje kameru ziskavajici snimky z prvni fyzicke kamery 00035 * umistene v systemu a umoznujici pristup pres DirectShow. 00036 * 00037 * Trida plne respektuje pravidla bazove tridy TCameraAbstract a proto by manipulace 00038 * s vytvorenym objektem mela probihat pouze pres bazovou tridu (rozhrani). 00039 */ 00040 class TCameraDshow : public TCameraAbstract 00041 { 00042 //PUBLIC OVERRIDEN METHODS 00043 public: 00044 virtual DWORD GetDataSize(void); 00045 virtual void GetData(void * dest); 00046 00047 00048 virtual int GetWidth(void); 00049 virtual int GetHeight(void); 00050 00051 virtual void Destroy(void); 00052 00053 //PUBLIC STATIC METHODS 00054 public: 00055 static TCameraDshow* CreateCamera( void ); 00056 00057 //PRIVATE METHODS 00058 private: 00059 bool Initialize( void ); 00060 00061 TCameraDshow(void); 00062 ~TCameraDshow(void); 00063 00064 TCameraDshow( const TCameraDshow & orig ); ///< falesny kopirovaci konstruktor 00065 void operator=( const TCameraDshow & orig ); ///< falesny prirazovaci operator 00066 00067 //PRIVATE COMPONENTS 00068 private: 00069 TVideoDSFile* m_source; ///< zdroj videa 00070 }; 00071 00072 // TCameraDshow 00073 //////////////////////////////////////////////////////////////////////////////// 00074 //////////////////////////////////////////////////////////////////////////////// 00075 //////////////////////////////////////////////////////////////////////////////// 00076 00077 }; //END of namespace NSCameras 00078 using namespace NSCameras; 00079 00080 #endif