#ifndef ROICIRCULARARC_H #define ROICIRCULARARC_H #include "showunit_global.h" #include "HalconCpp.h" #include "ROI.h" #include #include #include using namespace HalconCpp; class ROI; class SHOWUNITSHARED_EXPORT ROICircularArc:public ROI { Q_OBJECT public: ROICircularArc(); void createROI(double midX, double midY) override; void drawROI(HTuple winID, double scaleFactor) override; double distToClosestHandle(double x, double y) override; void displayActive(HTuple winID, double scaleFactor) override; void moveByHandle(double newX, double newY) override; QCursor showByHandle() override; HRegion getRegion() override; HTuple getROIData() override; void setROIData(HTuple) override; void save(QDataStream &dataStream) override; void load(QDataStream &dataStream)override; private: double midR, midC; // 0. handle: midpoint double sizeR, sizeC; // 1. handle double startR, startC; // 2. handle double extentR, extentC; // 3. handle //model data to specify the arc double radius; double startPhi, extentPhi; // -2*PI <= x <= 2*PI double TwoPI; QString circDir; //display attributes HXLDCont contour; HXLDCont arrowHandleXLD; HXLDCont startRect2XLD; void determineArcHandles(); void updateArrowHandle(); void updateStartRect2XLDHandle(int WindowsWidth); void setStartHandle(); void setExtentHandle(); #ifndef QT_NO_DATASTREAM friend QDataStream& operator>>(QDataStream &in, ROICircularArc& data); friend QDataStream& operator<<(QDataStream &out, ROICircularArc& data); #endif }; #endif // ROICIRCULARARC_H