package com.mvc.model.aihcxd;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * LED表服务侧识别的输入对象
 */
public class LedInModel {
    public int cishu;//测试使用的变量，代表目录中的第几张图片
    public String tsetBegin_time;//测试使用的变量，代表这一次运行的时间
    private static Logger LedLogger = LoggerFactory.getLogger(LedInModel.class);//输出日志log的类
    //
    private String imagePath;//输入图像路径
    private String outputPath;//图像输出路径
    //
    private int numNumbers;//水表数字个数，这里用成整数部分了
    private double numberUnit;//水表最后一个数字单位
    private String meterDiameter;//水表口径
    private double lastOkValue;//最近一次的可靠值

    public String getLastOkValueStr() {
        return lastOkValueStr;
    }

    public void setLastOkValueStr(String lastOkValueStr) {
        this.lastOkValueStr = lastOkValueStr;
    }

    private String lastOkValueStr;//最近一次的可靠值,qjz
    private String lastOkValueTime;//最近一次可靠值的识别时间
    private boolean isUseConfig;//预测时是否用用户配置的 旋转角度、数字区域信息

    private int[][] lastDebugInfo;//AI调试信息，值域是 0-255

    private int meterFontStyle;//液晶屏中数字字体风格：0=段码式不发光（黑字); 1=未使用; 2=未使用；

    private int configRotateAngle;//用户配置的旋转角度
    private int[] configNumberRegion;//用户配置的数字区域坐标，4个值，[xmin,ymin,xmax,ymax]，即upleft,downright的中心点的四个坐标

    public String getImagePath() {
        return imagePath;
    }

    public void setImagePath(String imagePath) {
        this.imagePath = imagePath;
    }

    public String getOutputPath() {
        return outputPath;
    }

    public void setOutputPath(String outputPath) {
        this.outputPath = outputPath;
    }

    public int getNumNumbers() {
        return numNumbers;
    }

    public void setNumNumbers(int numNumbers) {
        this.numNumbers = numNumbers;
    }

    public double getNumberUnit() {
        return numberUnit;
    }

    public void setNumberUnit(double numberUnit) {
        this.numberUnit = numberUnit;
    }

    public String getMeterDiameter() {
        return meterDiameter;
    }

    public void setMeterDiameter(String meterDiameter) {
        this.meterDiameter = meterDiameter;
    }


    public double getLastOkValue() {
        return lastOkValue;
    }

    public void setLastOkValue(double lastOkValue) {
        this.lastOkValue = lastOkValue;
    }

    public String getLastOkValueTime() {
        return lastOkValueTime;
    }

    public void setLastOkValueTime(String lastOkValueTime) {
        this.lastOkValueTime = lastOkValueTime;
    }

    public boolean getIsUseConfig() {
        return isUseConfig;
    }

    public void setIsUseConfig(boolean useConfig) {
        this.isUseConfig = useConfig;
    }

    public int getConfigRotateAngle() {
        return configRotateAngle;
    }

    public int[] getConfigNumberRegion() {
        return configNumberRegion;
    }

    public void setConfigRotateAngle(int configRotateAngle) {
        this.configRotateAngle = configRotateAngle;
    }

    public void setConfigNumberRegion(int i, int param_value) {
        this.configNumberRegion[i] = param_value;
    }

    public int[][] getLastDebugInfo() {
        return lastDebugInfo;
    }

    public void setLastDebugInfo(int[][] lastDebugInfo) {
        this.lastDebugInfo = lastDebugInfo;
    }

    public void setMeterFontStyle(int meterFontStyle) {
        this.meterFontStyle = meterFontStyle;
    }

    public int getMeterFontStyle() {
        return meterFontStyle;
    }

    public LedInModel() {
        this.imagePath = "";//输入图像路径
        this.outputPath= "";//图像输出路径
        this.numNumbers=0;//水表数字个数
        this.numberUnit=0.0;//水表最后一个数字单位
        this.meterDiameter="";//水表口径
        this.lastOkValue=0.0;//最近一次的可靠值
        this.lastOkValueStr="";//最近一次的可靠值,qjz
        this.lastOkValueTime="";//最近一次可靠值的识别时间
        this.configRotateAngle= 0;//用户配置的旋转角度
        this.configNumberRegion=new int[]{888, 888, 888, 888};//用户配置的数字区域坐标，4个值，[xmin,ymin,xmax,ymax]
        this.lastDebugInfo = new int[][]{{888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888}, {888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888}};
        this.meterFontStyle = 0;
    }

    /**
     * 将结果输出到logger文件中
     */
    public void loggerLedInModel()
    {
        {
            LedLogger.info("****LED表检测，本次输入信息如下*************************************");
            LedLogger.info("输入水表图像路径 : {}",this.imagePath);
            LedLogger.info("输出图像路径 : {}",this.outputPath);
            LedLogger.info("水表数字个数 : {}",this.numNumbers);
            LedLogger.info("水表最后一个数字的单位 : {}",this.numberUnit);
            LedLogger.info("水表口径 : {}",this.meterDiameter);
            LedLogger.info("最近一次可靠值 : {}",this.lastOkValue);
            LedLogger.info("最近一次可靠值检测时间 : {}",this.lastOkValueTime);
            LedLogger.info("用户配置的旋转角度和数字区域坐标生效吗 : {} ",this.getIsUseConfig());
            LedLogger.info("用户配置的旋转角度 : {} ",this.configRotateAngle);
            LedLogger.info("用户配置的数字区域坐标 : {},{},{},{} ",this.configNumberRegion[0],this.configNumberRegion[1],this.configNumberRegion[2],this.configNumberRegion[3]);
            LedLogger.info("");
        }
    }

    public String loggerLedInModel_toString()
    {
        StringBuffer return_string = new StringBuffer();
        return_string.append("\n****LED表检测，本次输入信息如下*************************************\n");
        return_string.append(String.format("输入水表图像路径 : %s\n",this.imagePath));
        return_string.append(String.format("输出图像路径 : %s\n",this.outputPath));
        return_string.append(String.format("水表数字个数 : %d\n",this.numNumbers));
        return_string.append(String.format("水表最后一个数字的单位 : %f\n",this.numberUnit));
        return_string.append(String.format("水表口径 : %s\n",this.meterDiameter));
        return_string.append(String.format("最近一次可靠值 : %f\n",this.lastOkValue));
        return_string.append(String.format("最近一次可靠值检测时间 : %s\n",this.lastOkValueTime));
        return_string.append(String.format("用户配置的旋转角度和数字区域坐标生效吗 : %s\n",this.getIsUseConfig()));
        return_string.append(String.format("用户配置的旋转角度 :  %d\n",this.configRotateAngle));
        return_string.append(String.format("用户配置的数字区域坐标 : %d,%d,%d,%d\n",this.configNumberRegion[0],this.configNumberRegion[1],this.configNumberRegion[2],this.configNumberRegion[3]));

        return return_string.toString();
    }
}