00001 /* 00002 * This file contains class that simulates null camera. 00003 * This camera always return black image with size 640x480. 00004 * 00005 * Author: 00006 * Tomas Mrkvicka 00007 * xmrkvi03@stud.fit.vutbr.cz 00008 * 00009 */ 00010 00011 #include "StdAfx.h" 00012 #include "CameraNullSrc.h" 00013 00014 #include <cstdlib> 00015 #include <cstring> 00016 #include <cmath> 00017 00018 //////////////////////////////////////////////////////////////////////////////// 00019 //////////////////////////////////////////////////////////////////////////////// 00020 //////////////////////////////////////////////////////////////////////////////// 00021 // TCameraNull 00022 00023 /** Funkce pro vytvoreni tridy a preneseni ven z DLL. 00024 * 00025 * \note Muze vratit NULL pri chybe. 00026 * 00027 * \param filename [in] jmeno souboru s obrazkem 00028 */ 00029 extern "C" TCameraAbstract* CreateCamera(const char * filename) 00030 { 00031 return TCameraNull::CreateCamera(filename); 00032 } 00033 00034 /** Tato staticka metoda vytvori kameru. 00035 * 00036 * \note Vraci NULL pri chybe. 00037 * 00038 * \param filename [in] jmeno souboru s obrazkem 00039 */ 00040 TCameraNull* TCameraNull::CreateCamera(const char * filename) 00041 { 00042 //vytvorime objekt 00043 TCameraNull * cam = new TCameraNull; 00044 00045 //inicializujeme 00046 if ( cam->Initialize( filename ) ) 00047 { 00048 //ok - kamera inicializovana v poradku 00049 return cam; 00050 } 00051 else 00052 { 00053 //nejaka chyba 00054 delete cam; 00055 return NULL; 00056 } 00057 } 00058 00059 /** Soukromy konstruktor. 00060 */ 00061 TCameraNull::TCameraNull(void) 00062 { 00063 m_data = NULL; 00064 } 00065 00066 /** Soukromy destruktor. 00067 */ 00068 TCameraNull::~TCameraNull(void) 00069 { 00070 delete [] m_data; 00071 m_data = NULL; 00072 } 00073 00074 /** Tato metoda inicializuje tridu po vytvoreni. 00075 * 00076 * \param filename [in] jmeno souboru s nacitanym obrazkem 00077 */ 00078 bool TCameraNull::Initialize( const char * filename) 00079 { 00080 //naalokuje pamet pro snimek a vyplnime cernou barvou 00081 m_width = 640; 00082 m_height = 480; 00083 00084 m_data = new unsigned char[m_width * m_height * 3]; 00085 memset( m_data, 0, m_width * m_height * 3 ); 00086 00087 return TRUE; 00088 } 00089 00090 /** Velikost obrazku v bajtech. 00091 */ 00092 DWORD TCameraNull::GetDataSize(void) 00093 { 00094 return this->GetWidth() * this->GetHeight() * 3; 00095 } 00096 00097 /** Ulozi data do pripraveneho bufferu. 00098 * 00099 * \param dest [in out] buffer pro data obrazku 00100 */ 00101 void TCameraNull::GetData(void * dest) 00102 { 00103 memcpy( dest, m_data, this->GetDataSize() ); 00104 } 00105 00106 /** Vrati sirku obrazku v pixelech. 00107 */ 00108 int TCameraNull::GetWidth(void) 00109 { 00110 return m_width; 00111 } 00112 00113 /** Vrati vysku obrazku v pixelech. 00114 */ 00115 int TCameraNull::GetHeight(void) 00116 { 00117 return m_height; 00118 } 00119 00120 /** Zrusi tento objekt. 00121 */ 00122 void TCameraNull::Destroy(void) 00123 { 00124 delete this; 00125 } 00126 00127 // TCameraNull 00128 //////////////////////////////////////////////////////////////////////////////// 00129 //////////////////////////////////////////////////////////////////////////////// 00130 ////////////////////////////////////////////////////////////////////////////////