ROICircularArc.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef ROICIRCULARARC_H
  2. #define ROICIRCULARARC_H
  3. #include "showunit_global.h"
  4. #include "HalconCpp.h"
  5. #include "ROI.h"
  6. #include<QObject>
  7. #include <QString>
  8. #include <QDataStream>
  9. using namespace HalconCpp;
  10. class ROI;
  11. class SHOWUNITSHARED_EXPORT ROICircularArc:public ROI
  12. {
  13. Q_OBJECT
  14. public:
  15. ROICircularArc();
  16. void createROI(double midX, double midY) override;
  17. void drawROI(HTuple winID, double scaleFactor) override;
  18. double distToClosestHandle(double x, double y) override;
  19. void displayActive(HTuple winID, double scaleFactor) override;
  20. void moveByHandle(double newX, double newY) override;
  21. QCursor showByHandle() override;
  22. HRegion getRegion() override;
  23. HTuple getROIData() override;
  24. void setROIData(HTuple) override;
  25. void save(QDataStream &dataStream) override;
  26. void load(QDataStream &dataStream)override;
  27. private:
  28. double midR, midC; // 0. handle: midpoint
  29. double sizeR, sizeC; // 1. handle
  30. double startR, startC; // 2. handle
  31. double extentR, extentC; // 3. handle
  32. //model data to specify the arc
  33. double radius;
  34. double startPhi, extentPhi; // -2*PI <= x <= 2*PI
  35. double TwoPI;
  36. QString circDir;
  37. //display attributes
  38. HXLDCont contour;
  39. HXLDCont arrowHandleXLD;
  40. HXLDCont startRect2XLD;
  41. void determineArcHandles();
  42. void updateArrowHandle();
  43. void updateStartRect2XLDHandle(int WindowsWidth);
  44. void setStartHandle();
  45. void setExtentHandle();
  46. #ifndef QT_NO_DATASTREAM
  47. friend QDataStream& operator>>(QDataStream &in, ROICircularArc& data);
  48. friend QDataStream& operator<<(QDataStream &out, ROICircularArc& data);
  49. #endif
  50. };
  51. #endif // ROICIRCULARARC_H