#ifndef ROICONTROLLER_H #define ROICONTROLLER_H #include "showunit_global.h" #include #include "ROI.h" #include #include "QHalconWindow.h" using namespace HalconCpp; enum class SHOWUNITSHARED_EXPORT ViewMessage { UpdateROI = 50, ChangedROISign, MovingROI, DeletedActROI, DelectedAllROIs, ActivatedROI, MouseMove, CreatedROI, UpdateImage, ErrReadingImage, ErrDefiningGC }; class QHalconWindow; class SHOWUNITSHARED_EXPORT ROIController: public QObject { Q_OBJECT public: ROIController(); ~ROIController(); QList ROIList; void setViewController(QHalconWindow * view); HRegion getModelRegion(){ return modelROI; } ROI* getActiveROI(); int getActiveROIidx(){ return activeROIidx; } int getDelROIIdx() { return deletedIdx; } void setROIShape(ROI *r); void setROIShapeNoOperator(ROI *r); void setROISign(ROIOperation mode); void setActiveROIidx(const int &index); void removeActive(); bool defineModelROI(); void reset(); void paintData(const HTuple &winID, int handleWidth, double zoomWndFactor); int mouseDownAction(const double &imgX, const double &imgY); void mouseMoveAction(const double &newX, const double &newY); void tiggerROINotifySignals(const ViewMessage &sign); QCursor GetCursor(); void save(QDataStream& ar); void load(QDataStream& ar); signals: void ROIChange(const ViewMessage &sign); private: ROI *roiSeed; HRegion modelROI; ROIOperation stateROIOperation = ROIOperation::Positive; double currX, currY; int activeROIidx; int deletedIdx; HTuple activeCol = "green"; HTuple activeHdlCol = "red"; HTuple inactiveCol = "yellow"; HTuple serachRegionCol = "blue"; QHalconWindow *viewController; }; Q_DECLARE_METATYPE(ViewMessage) #endif // ROICONTROLLER_H