#pragma once


#ifndef SARCALIBRATION_H
#define SARCALIBRATION_H
/**
*  SAR定标函数
* 
*/
#include "referenceHeader.h"

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <Eigen/Core>
#include <Eigen/Dense>
#include <complex.h>
#include <gdal.h>
#include <gdal_priv.h>
#include <gdalwarper.h>


using namespace std;
using namespace Eigen;
// 判断是否需要输出为DLL
#define DLLOUT


// 定标计算
// 输入定标系统，保证数据能够正常定标
Eigen::Matrix2cd  CalibrationMatrix(Eigen::MatrixXcd in_matrix, double calibrationValue);
int CalibrationComplex(const QString& out_path, const QString& in_sar_path, double calibrationValue);
int CalibrationComplex2dB(const QString& out_path, const QString& in_sar_path, double calibrationValue);
#ifndef DLLOUT

#else

#ifdef __cplusplus
extern "C" {
#endif
	#define DllExport   __declspec( dllexport )
	int  __declspec(dllexport) CalibrationComplex_DLL(const QString& out_path, const QString& in_sar_path, double calibrationValue);
	int  __declspec(dllexport) CalibrationComplex2dB_DLL(const QString& out_path, const QString& in_sar_path, double calibrationValue);
#ifdef __cplusplus
}
#endif



#endif

#endif // !SARCALIBRATION_H