#ifndef __I_PICOPERATE_H__
#define __I_PICOPERATE_H__

// *****************************************************************************
// ��Ȩ���У�C��2023~2099 �Ϻ����ɳ������������޹�˾
// ��������Ȩ��
// *****************************************************************************
// ���� : ½�̷�
// �汾 : 1.0
// ���봴�����ڣ�2025/01/09
// �汾�������ڣ�2025/01/09
// ����˵��:��ԭʼͼ������������
// *****************************************************************************

#include <vector>
#include <string>
#include "TypeDef.h"

namespace JVision
{
	/**
	 * @brief ԭʼͼ���������Ľӿڻ���
	 *
	 */
	class JVision_API IPicOperate
	{

	public:
		virtual ~IPicOperate() = 0 {}

		/**
		* @brief ����ͼ��
		*
		* @param[in] imageIn �豣���JVisisonͼ��ṹ��
		* @param[in] FileExtension ������ͼ�����չ��
		* @param[in] FilePath ������ͼ����ļ��������������·��
		*
		* @note ��Ӧ�Ĵ��������Ϳ���ͨ��ExecuteErrorCode�нӿڻ�ȡʧ����Ϣ
		*/
		virtual JVision::ResultCode SaveImage(const JVision::ImageInfo& imageIn,
			const std::string& FileExtension, const std::string& FilePath) = 0;

		/**
		* @brief ��ȡͼ�񻺴�
		*
		* @param[in] imagePath ͼ���·��
		* @param[out] imageOut ͼ�񻺴�
		*
		* @note ��Ӧ�Ĵ��������Ϳ���ͨ��ExecuteErrorCode�нӿڻ�ȡʧ����Ϣ
		*/
		virtual JVision::ResultCode GetImageInfo(const std::string& imagePath,
			JVision::ImageInfo& imageOut) = 0;

		/**
		 * @brief ��ȡģ��ͼ��
		 *
		 * @param[in] index ��������
		 * @param[out] imageOut ����JVisisonͼ��ṹ�������
		 * @return ResultCode        0��ʾ�ɹ� �����ʾʧ��
		 *
		 * @note ��Ӧ�Ĵ��������Ϳ���ͨ��ExecuteErrorCode�нӿڻ�ȡʧ����Ϣ
		 */
		virtual JVision::ResultCode GetModelImage(int index,
			std::vector<JVision::ImageInfo>& imageOut) = 0;

		/**
		 * @brief ��ȡ������ӿ�ָ��
		 */
		static IPicOperate* GetPicOperate();
	};
}

#endif