00001 #ifndef EDDIMAGEDATASOURCE_H
00002 #define EDDIMAGEDATASOURCE_H
00003 
00004 #include <EDDSourceLib/inc/EDDDataSource.h>
00005 #include <proto/EDDImageDataMsg.h>
00006 
00007 #ifndef EDD_EXPORT
00008 #define EDD_EXPORT
00009 #endif
00010 
00017 class EDD_EXPORT tcEDDImageDataSource : public tcEDDDataSource
00018 {
00019 public:
00021         typedef enum
00022         {
00023                 eeX,
00024                 eeY,
00025                 eeZ     
00026         } teAxis;
00027         
00028         tcEDDImageDataSource(char* apDesc);
00029         
00030         virtual ~tcEDDImageDataSource(void);
00031         
00032         virtual int HandleMsg(tsEDDMsgHdr* apMsg);
00033 
00035 
00047         int SendImageData(uint16_t* apData, uint16_t anRows, uint16_t anCols,
00048                           uint8_t anType = EDDIMGMSG_MONO_16BIT);
00049                           
00050         int SendImageData(uint8_t* apData, uint16_t anRows, uint16_t anCols, 
00051                           uint8_t anType = EDDIMGMSG_MONO_8BIT);
00053         
00055 
00072         int SendSparseImageData(uint16_t anDefault, uint16_t anRows, uint16_t anCols,
00073                                 uint32_t* apImageOffset, uint16_t* apValue, uint16_t anNumPts,
00074                                 uint8_t anType = EDDIMGMSG_MONO_16BIT);
00075 
00076         int SendSparseImageData(uint8_t anDefault, uint16_t anRows, uint16_t anCols,
00077                                 uint32_t* apImageOffset, uint8_t* apValue, uint16_t anNumPts,
00078                                 uint8_t anType = EDDIMGMSG_MONO_8BIT);
00080         
00081         int SetLabel(teAxis aeAxis, char* apLabel);
00082         int SetDescription(char* apDesc);
00083 
00084         static const int gnMaxStringLen = 64;  
00085         
00086 protected:
00087     void      BuildOutputBuffer(void);
00088     void      SendImageDescriptor(uint16_t anRows, uint16_t anCols, uint8_t anType, uint8_t anFlags);
00089     int       Send3DData(void* apData, uint16_t anRows, uint16_t anCols, int WordSizeBytes, uint8_t anDataType);
00090     int       SendSparseData(void* apDefault, uint16_t anRows, uint16_t anCols,
00091                                  uint32_t* apImageOffset, void* apValue, uint16_t anNumPts,
00092                                  int WordSizeBytes, uint8_t anType);
00093 
00094         int       mnImageType;  
00095         char      maDescription[gnMaxStringLen];  
00096         char      maXLabel[gnMaxStringLen]; 
00097         char      maYLabel[gnMaxStringLen]; 
00098         char      maZLabel[gnMaxStringLen]; 
00099         uint16_t  mnImageNo;  
00100     char*     mpOutputBuffer; 
00101     int       mnOutputBufferLen; 
00102 };
00103 
00104 
00105 #endif