areaDetector 1-8
/home/epics/devel/areaDetector/ADApp/pluginSrc/NDPluginOverlay.h
Go to the documentation of this file.
00001 #ifndef NDPluginOverlay_H
00002 #define NDPluginOverlay_H
00003 
00004 #include <epicsTypes.h>
00005 #include <asynStandardInterfaces.h>
00006 
00007 #include "NDPluginDriver.h"
00008 
00009 typedef enum {
00010     NDOverlayCross,
00011     NDOverlayRectangle
00012 } NDOverlayShape_t;
00013 
00014 typedef enum {
00015     NDOverlaySet,
00016     NDOverlayXOR
00017 } NDOverlayDrawMode_t;
00018 
00020 typedef struct NDOverlay {
00021     int PositionX;
00022     int PositionY;
00023     int SizeX;
00024     int SizeY;
00025     NDOverlayShape_t shape;
00026     NDOverlayDrawMode_t drawMode;
00027     int red;
00028     int green;
00029     int blue;
00030 } NDOverlay_t;
00031 
00032 
00033 #define NDPluginOverlayMaxSizeXString           "MAX_SIZE_X"            /* (asynInt32,   r/o) Maximum size of overlay in X dimension */
00034 #define NDPluginOverlayMaxSizeYString           "MAX_SIZE_Y"            /* (asynInt32,   r/o) Maximum size of overlay in Y dimension */
00035 #define NDPluginOverlayNameString               "NAME"                  /* (asynOctet,   r/w) Name of this overlay */
00036 #define NDPluginOverlayUseString                "USE"                   /* (asynInt32,   r/w) Use this overlay? */
00037 #define NDPluginOverlayPositionXString          "OVERLAY_POSITION_X"    /* (asynInt32,   r/o) X positoin of overlay */
00038 #define NDPluginOverlayPositionYString          "OVERLAY_POSITION_Y"    /* (asynInt32,   r/w) X position of overlay */
00039 #define NDPluginOverlaySizeXString              "OVERLAY_SIZE_X"        /* (asynInt32,   r/o) X size of overlay */
00040 #define NDPluginOverlaySizeYString              "OVERLAY_SIZE_Y"        /* (asynInt32,   r/w) X size of overlay */
00041 #define NDPluginOverlayShapeString              "OVERLAY_SHAPE"         /* (asynInt32,   r/w) Shape of overlay */
00042 #define NDPluginOverlayDrawModeString           "OVERLAY_DRAW_MODE"     /* (asynInt32,   r/w) Drawing mode for overlay */
00043 #define NDPluginOverlayRedString                "OVERLAY_RED"           /* (asynInt32,   r/w) Red value for overlay */
00044 #define NDPluginOverlayGreenString              "OVERLAY_GREEN"         /* (asynInt32,   r/w) Green value for overlay */
00045 #define NDPluginOverlayBlueString               "OVERLAY_BLUE"          /* (asynInt32,   r/w) Blue value for overlay */
00046 
00048 class NDPluginOverlay : public NDPluginDriver {
00049 public:
00050     NDPluginOverlay(const char *portName, int queueSize, int blockingCallbacks, 
00051                  const char *NDArrayPort, int NDArrayAddr, int maxOverlays, 
00052                  int maxBuffers, size_t maxMemory,
00053                  int priority, int stackSize);
00054     /* These methods override the virtual methods in the base class */
00055     void processCallbacks(NDArray *pArray);
00056     template <typename epicsType> void doOverlayT(NDArray *pArray, NDOverlay_t *pOverlay);
00057     int doOverlay(NDArray *pArray, NDOverlay_t *pOverlay);
00058     template <typename epicsType> void setPixel(epicsType *pValue, NDOverlay_t *pOverlay);
00059 
00060 protected:
00061     int NDPluginOverlayMaxSizeX;
00062     #define FIRST_NDPLUGIN_OVERLAY_PARAM NDPluginOverlayMaxSizeX
00063     int NDPluginOverlayMaxSizeY;
00064     int NDPluginOverlayName;
00065     int NDPluginOverlayUse;
00066     int NDPluginOverlayPositionX;
00067     int NDPluginOverlayPositionY;
00068     int NDPluginOverlaySizeX;
00069     int NDPluginOverlaySizeY;
00070     int NDPluginOverlayShape;
00071     int NDPluginOverlayDrawMode;
00072     int NDPluginOverlayRed;
00073     int NDPluginOverlayGreen;
00074     int NDPluginOverlayBlue;
00075     #define LAST_NDPLUGIN_OVERLAY_PARAM NDPluginOverlayBlue
00076                                 
00077 private:
00078     int maxOverlays;
00079     NDArrayInfo arrayInfo;
00080     NDOverlay_t *pOverlays;    /* Array of NDOverlay structures */
00081     NDOverlay_t *pOverlay;
00082 };
00083 #define NUM_NDPLUGIN_OVERLAY_PARAMS (&LAST_NDPLUGIN_OVERLAY_PARAM - &FIRST_NDPLUGIN_OVERLAY_PARAM + 1)
00084     
00085 #endif