#ifndef CKERF_BASE_H
#define CKERF_BASE_H

#include <QDataStream>
#include "variant.h"
#include "export_kerf_base.h"
/**
 * @brief kerf检查的位置.
 */
enum Kerf_POS
{
    CENTER_KERF,    //!< 中心
    SIDE_KERF,      //!< 边缘
    SPEC_KERF,      //!< 特殊位置
    PLATFORM_KERF	//!< 加工盘上检查
};
/**
 * @brief kerf检查参数.
 */
typedef struct _tagKerfParam
{
    int		iLineCount; //< 线条数
    int		iPixelThres;
    int		iLight1;
    int		iLight2;
    int     iExposure;
    int     iGain;
    double	dRange;     //!< 最大范围
    double	dWidthMax;  //!< 最大宽度
    double	dWidthMin;  //!< 最小宽度
    double	dGAPMax;    //!< 最大间距
    double	dGAPMin;    //!< 最小间距
    double	dOffsetMax; //!< 最大偏移
    double	dOffsetMin; //!< 最小偏移
    double	dRangeMin;   //!< 范围小，即中间过滤
    int		ikerfPos;   //!< kerf检查的位置\sa Kerf_POS
    double  dSpecKerfPos;   //!< 特殊位置坐标或偏移
    int     iBinaryThres;//!< 灰度阈值
    _tagKerfParam()
    {
        iLineCount=1;
        iLight1=0;
        iLight2=0;
        iExposure=7000;
        iGain=1000;
        dRange=0;
        dWidthMax=0;
        dWidthMin=0;
        dGAPMax=0;
        dGAPMin=0;
        dOffsetMax=0;
        dOffsetMin=0;
        iPixelThres=0;
        dRangeMin=0;
        ikerfPos= CENTER_KERF;
        dSpecKerfPos=0;
        iBinaryThres=128;
    }
}KERFPARAM,*PKERFPARAM;
KERF_BASE_EXPORT QDataStream &operator<<(QDataStream &out,const KERFPARAM& param);
KERF_BASE_EXPORT QDataStream &operator>>(QDataStream &in, KERFPARAM& param);
KERF_BASE_EXPORT ConfigStreamWriter &operator<<(ConfigStreamWriter &out, const KERFPARAM &param);
KERF_BASE_EXPORT ConfigStreamReader &operator >> (ConfigStreamReader &in, KERFPARAM &param);
#endif // CKERF_BASE_H
