#include "stdafx.h"

#include "QBStru.h"

// openCV Library
#include <opencv2/opencv.hpp>  
using namespace cv;


// 解码后通用情报结构体数据回调
// 参数意义:
//         1. qbstru: 情报结构体指针
//         2. purpose:用途(目的)
typedef void (CALLBACK* SendQBStruProc)(const QBStru* qbstru, int purpose);


// 作用:人工选定目标时,对外输出目标点像素坐标
typedef void (CALLBACK* SendCoordinateProc)(CPoint Value); 

// 鼠标移动输出像素信息
typedef void (CALLBACK* SendPixInfoProc)(CPoint xy, double Lon, double Lat, double H); 

// 回调文件保存路径
// 参数意义:
//         1. FilePath: 文件路径
//         2. type    :文件类型
//           type = -1: 未知
//           type = 0:  单帧图像采集或图像连续采集(后面) 图像路径 bmp格式
//           type = 1:  单帧图像采集或图像连续采集(后面) 复接数据路径 xml格式
//           type = 2:  多帧图像采集(前面图像) 图像路径 bmp格式
//           type = 3:  多帧图像采集(前面图像) 复接数据路径 xml格式
//           type = 4:  系统级几何校正后图像路径 tif格式
//           type = 5:  拼接图像自动几何校正前 bmp格式
//           type = 6:  拼接图像自动几何校正后 tif格式
//           type = 7:  目标图像
typedef void (CALLBACK* SendFilePath)(CString FilePath, int type); 

// 回调输出信息
typedef void (CALLBACK* SendMessageProc)(CString msg); 
// 
// 回调输出图像(显示)
typedef void (CALLBACK* SendImgProc)(const cv::Mat &img); 
// 
// 回调输出最近一张图像(4个角点图像坐标)
typedef void (CALLBACK* SendNewImgProc)(const POINT *pt); 

// 回调输出 目标定位导引 输出经纬度
typedef void (CALLBACK* SendTgrLocLeadLonLatProc)(double lon0, double lat0, 
	                                              double lon1, double lat1, 
	                                              double lon2, double lat2, 
	                                              double lon3, double lat3, 
	                                              double lon4, double lat4);


// 回调输出 输出火炮校射 炸点相对于目标的距离和角度
typedef void (CALLBACK* SendArtilleryReviseInfoProc)(float dist, float angle);


// 回调输出 通知简单图像显示对话框被双击
typedef void (CALLBACK* SendLButtonDblClkInfoProc)();

// 通知简单图像显示对话框被右键按下
typedef void (CALLBACK* SendButtonDownInfoProc)(int type);

// 输出双击图像时的脱靶量
typedef void (CALLBACK* SendPixXYOffsetProc)(CPoint xy, int flag); 

// 输出双击点与对话框中点的夹角
typedef void (CALLBACK* SendAngleProc)(double angle); 

// 当鼠标按下时,输出鼠标点与对话框中心点的距离比例系数和角度
typedef void (CALLBACK* SendDistRatioAndAngleProc)(double distRatio, double angle);