#pragma once
#ifndef PUTTEXT_H_
#define PUTTEXT_H_

#include <string>
#include <opencv2/opencv.hpp>
#include "lib_common_depence.h"

using namespace std;
#define font_family "宋体"
#define font_size   30
#define chk_width   30
#define main_wdith  1430
#define max_line	14

void GetStringSize(HDC hDC, const char* str, int* w, int* h);
//获取字符串的宽高
cv::Size GetTextSize(const char* str, int fontSize, const char *fn = "Arial", bool italic = false, bool underline = false);
void putTextZH(cv::Mat &dst, cv::Size & rSize, const char* str, cv::Point org, cv::Scalar color, int fontSize,
	const char *fn = "Arial", bool italic = false, bool underline = false);


/// 数据收集卡 功能样式设计


/********************************************************
	*  @function :  获取字符串的画布上的宽度
	*  @brief    :  brief
	*  @input    :  str:	字符串
	*  @input    :  fontSize:	信息区域字体大小
	*  @input    :  ttBoxW:		填涂框宽度
	*  @input    :  tiSl:		题号和题干的距离
	*  @input	 :  backPix:	每行的预留空间
	*  @return   :
	*  @author   :  qqm  2022/08/31 19:42
*********************************************************/
int getLineStrWidth(string str, int fontSize, int ttBoxW, int tiSl, int backPix);

/******************************************************** 
    *  @function :  生成一张数据收集卡
    *  @brief    :  brief 
    *  @input    :  cols:	栏数
	*  @input    :  index:	关联ID
	*  @input    :  fontSize:	信息区域字体大小
	*  @input    :  linGrayPix:	横线的灰度值
	*  @input    :  vecLines:	本张数据行
	*  @input	 :  engShow:	是否显示词性
    *  @return   : 
    *  @author   :  qqm  2022/08/31 19:42
*********************************************************/
int dataCollectionPaper(int cols, int index, int fontSize, int lineGrayPix, bool engShow, std::vector<std::string> & vecLines, CString dir, std::string& strPngPath);

/********************************************************
	*  @function :  答题卡切割
	*  @brief    :  brief
	*  @input    :  pageNum:	    页面二进制编码
	*  @input    :  strJsonPath:	模板Json路径
	*  @input    :  strPaperPath:	答题卡路径
	*  @input    :  strSavePath:	存储路径
	*  @return   :  > 0 失败
	*  @author   :  qqm  2022/08/31 19:42
*********************************************************/
int cutPaper(int pageNum, std::string strJsonPath, std::string strPaperPath, std::string strSavePath);


int PareseModeJson(preinfo::templatesInfo&  temeplatInfo);
#endif // PUTTEXT_H_