areaDetector 1-9
|
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 size_t PositionX; 00022 size_t PositionY; 00023 size_t SizeX; 00024 size_t 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 ((int)(&LAST_NDPLUGIN_OVERLAY_PARAM - &FIRST_NDPLUGIN_OVERLAY_PARAM + 1)) 00084 00085 #endif