CameraNullSrc.cpp

Go to the documentation of this file.
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 ////////////////////////////////////////////////////////////////////////////////

Generated on Sat Nov 17 16:23:33 2007 for Image Processing Pipeline - Camera Sources Implementation by  doxygen 1.4.6-NO