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"
00034 #define NDPluginOverlayMaxSizeYString "MAX_SIZE_Y"
00035 #define NDPluginOverlayNameString "NAME"
00036 #define NDPluginOverlayUseString "USE"
00037 #define NDPluginOverlayPositionXString "OVERLAY_POSITION_X"
00038 #define NDPluginOverlayPositionYString "OVERLAY_POSITION_Y"
00039 #define NDPluginOverlaySizeXString "OVERLAY_SIZE_X"
00040 #define NDPluginOverlaySizeYString "OVERLAY_SIZE_Y"
00041 #define NDPluginOverlayShapeString "OVERLAY_SHAPE"
00042 #define NDPluginOverlayDrawModeString "OVERLAY_DRAW_MODE"
00043 #define NDPluginOverlayRedString "OVERLAY_RED"
00044 #define NDPluginOverlayGreenString "OVERLAY_GREEN"
00045 #define NDPluginOverlayBlueString "OVERLAY_BLUE"
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
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;
00081 NDOverlay_t *pOverlay;
00082 };
00083 #define NUM_NDPLUGIN_OVERLAY_PARAMS (&LAST_NDPLUGIN_OVERLAY_PARAM - &FIRST_NDPLUGIN_OVERLAY_PARAM + 1)
00084
00085 #endif