GrabBag/App/WorkpieceHole/WorkpieceHoleApp/IYWorkpieceHoleStatus.h

65 lines
2.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef IYWORKPIECEHOLESTATUS_H
#define IYWORKPIECEHOLESTATUS_H
#include <string>
#include <functional>
#include <vector>
#include <cstdint>
#include <QImage>
#include <QMetaType>
// 使用 AppCommon 提供的通用接口和类型
#include "IVisionApplicationStatus.h"
// 算法 workpieceType 的高16位表示方向1=反向0=正向。
inline bool IsReversedWorkpieceType(int workpieceType)
{
const std::uint32_t packedType = static_cast<std::uint32_t>(workpieceType);
return ((packedType >> 16) & 0xFFFFu) == 1u;
}
// 孔位置结构体
struct HolePosition : public PositionData<double> {
int workpieceType = 0; // 算法原始工件类型高16位为方向1=反向0=正向
// 默认构造函数
HolePosition() : PositionData<double>() {}
// 带参构造函数
HolePosition(double _x, double _y, double _z, double _roll, double _pitch, double _yaw)
: PositionData<double>(_x, _y, _z, _roll, _pitch, _yaw) {}
// 拷贝构造函数和赋值运算符
HolePosition(const HolePosition&) = default;
HolePosition& operator=(const HolePosition&) = default;
// 从 PositionData 拷贝构造
HolePosition(const PositionData<double>& pos)
: PositionData<double>(pos) {}
};
// 工件孔检测结果结构体
struct WorkpieceHoleDetectionResult : public DetectionResultData<HolePosition> {
int workpieceType = 0; // 第一个工件的算法原始类型包含高16位方向
// 默认构造函数
WorkpieceHoleDetectionResult() = default;
// 拷贝构造函数和赋值运算符
WorkpieceHoleDetectionResult(const WorkpieceHoleDetectionResult&) = default;
WorkpieceHoleDetectionResult& operator=(const WorkpieceHoleDetectionResult&) = default;
};
// 状态回调接口
class IYWorkpieceHoleStatus : public IVisionApplicationStatus<WorkpieceHoleDetectionResult>
{
public:
virtual ~IYWorkpieceHoleStatus() = default;
};
// 声明Qt元类型使这些结构体能够在信号槽中传递
Q_DECLARE_METATYPE(HolePosition)
Q_DECLARE_METATYPE(WorkpieceHoleDetectionResult)
#endif // IYWORKPIECEHOLESTATUS_H