00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __igstkFrame_h
00019 #define __igstkFrame_h
00020
00021 #include "itkVector.h"
00022 #include "itkVersor.h"
00023
00024 #include "igstkTimeStamp.h"
00025 #include "igstkMacros.h"
00026 #include "itkStdStreamLogOutput.h"
00027
00028 class vtkImageData;
00029
00030 namespace igstk
00031 {
00032
00049 class Frame
00050 {
00051 public:
00052
00053 friend class VideoImager;
00054 friend class VideoImagerTool;
00055
00056 igstkLoggerMacro();
00057
00058 typedef TimeStamp::TimePeriodType TimePeriodType;
00059
00060 igstkSetMacro( Width, unsigned int );
00061 igstkGetMacro( Width, unsigned int );
00062
00063 igstkSetMacro( Height, unsigned int );
00064 igstkGetMacro( Height, unsigned int );
00065
00066 igstkSetMacro( NumberOfChannels, unsigned int );
00067 igstkGetMacro( NumberOfChannels, unsigned int );
00068
00070 Frame();
00071 Frame(unsigned int width, unsigned int height, unsigned int channels);
00072 Frame( const Frame & t );
00073 virtual ~Frame();
00074
00075 void * GetImagePtr();
00076
00084 TimePeriodType GetStartTime() const;
00085
00086
00094 TimePeriodType GetExpirationTime() const;
00095
00096 void SetTimeToExpiration( TimePeriodType millisecondsToExpiration );
00097
00106 bool IsValidAtTime( TimePeriodType timeToTestInMilliseconds ) const;
00107
00113 bool IsValidNow() const;
00114
00116 void Print(std::ostream& os, itk::Indent indent) const;
00117
00118 protected:
00119
00120 void PrintHeader(std::ostream& os, itk::Indent indent) const;
00121
00122 void PrintTrailer(std::ostream& itkNotUsed(os),
00123 itk::Indent itkNotUsed(indent)) const;
00124
00126 virtual void PrintSelf( std::ostream& os, itk::Indent indent ) const;
00127
00128 private:
00129
00130 void SetFrameDimensions( unsigned int, unsigned int, unsigned int);
00131 void SetImagePtr( void*, TimePeriodType millisecondsToExpiration);
00132
00133 std::vector< unsigned char > *m_Image;
00134 TimeStamp m_TimeStamp;
00135 void* m_ImagePtr;
00136 unsigned int m_Width;
00137 unsigned int m_Height;
00138 unsigned int m_NumberOfChannels;
00139
00140 };
00141
00142 std::ostream& operator<<(std::ostream& os, const igstk::Frame& o);
00143 }
00144
00145 #endif