areaDetector 1-9
/home/epics/devel/areaDetector/ADApp/pluginSrc/NDFileMagick.h
Go to the documentation of this file.
00001 /*
00002  * NDFileMagick.h
00003  * Writes NDArrays to any file format supported by ImageMagick
00004  * Mark Rivers
00005  * September 20, 2010 
00006  */
00007 
00008 #ifndef DRV_NDFileMagick_H
00009 #define DRV_NDFileMagick_H
00010 
00011 #include "NDPluginFile.h"
00012 #include "Magick++.h"
00013 using namespace Magick;
00014 using namespace std;
00015     
00016 #define NDFileMagickQualityString      "MAGICK_QUALITY"        /* (asynInt32, r/w) File quality */
00017 #define NDFileMagickCompressTypeString "MAGICK_COMPRESS_TYPE"  /* (asynInt32, r/w) Compression type */
00018 #define NDFileMagickBitDepthString     "MAGICK_BIT_DEPTH"      /* (asynInt32, r/w) Bit depth */
00019 
00020 class NDFileMagick : public NDPluginFile {
00021 public:
00022     NDFileMagick(const char *portName, int queueSize, int blockingCallbacks,
00023                  const char *NDArrayPort, int NDArrayAddr,
00024                  int priority, int stackSize);
00025 
00026     /* The methods that this class implements */
00027     virtual asynStatus openFile(const char *fileName, NDFileOpenMode_t openMode, NDArray *pArray);
00028     virtual asynStatus readFile(NDArray **pArray);
00029     virtual asynStatus writeFile(NDArray *pArray);
00030     virtual asynStatus closeFile();
00031 
00032 protected:
00033     int NDFileMagickQuality;
00034     #define FIRST_NDFILE_MAGICK_PARAM NDFileMagickQuality
00035     int NDFileMagickCompressType;
00036     int NDFileMagickBitDepth;
00037     #define LAST_NDFILE_MAGICK_PARAM NDFileMagickBitDepth
00038 
00039 private:
00040     size_t sizeX;
00041     size_t sizeY;
00042     StorageType storageType;
00043     NDColorMode_t colorMode;
00044     ImageType imageType;
00045     string colorMap;
00046     Image image;
00047     char fileName[MAX_FILENAME_LEN];
00048 };
00049 #define NUM_NDFILE_MAGICK_PARAMS ((int)(&LAST_NDFILE_MAGICK_PARAM - &FIRST_NDFILE_MAGICK_PARAM + 1))
00050 #endif