// *****************************************************************************
// 版权所有(C)2023~2099 上海骄成超声波技术有限公司
// 保留所有权利
// *****************************************************************************
// 作者 : 杨坚
// 版本 : 1.0
// 功能说明:
//             管理一组窗口
// *****************************************************************************
#ifndef CAMERAIMAGEHANDLER_H
#define CAMERAIMAGEHANDLER_H
#include "CameraMaterialGroupWnd/Group.h"
#include "CameraMaterialGroupWnd/MaterialWindow/Wafer.h"
#include "CameraMaterialGroupWnd/MaterialWindow/Waffle.h"
#include "CameraMaterialGroupWnd/MaterialWindow/Bond.h"
#include <CViewInterface.h>


class CameraImageHandler : public QWidget {
    Q_OBJECT
public:
    CameraImageHandler(const int groupId,const CameraInfo& cameraInfo);

    Group* getGroup() const;
    Wafer* getWafer() const;
    Waffle* getWaffle() const;
    MaterialBox* getMaterialBox() const;
    Bond* getBond() const;
    QList<QPair<QString, QString>> getFileList();
    QList<QPair<QString, QString>> loadImages(const CameraInfo& cameraInfo,const QString &dirPath);

private:
    void captureAndConvertImage(const int groupId, const CameraInfo& cameraInfo);

    void initGroup(int CameraId);

    /**分组
     */
    void CreateGroupData(const int groupId,const CameraInfo& cameraInfo);

    /**创建物料类型
     */
    QString CreateMaterialType(MATERIAL_TYPE materialType);

private:
    /**存储 Group 对象的容器
     */
    Group* m_pGroup = nullptr; 

    /**晶圆台
     */
    Wafer* m_pWafer = nullptr;

    /**华夫盒
     */
    Waffle* m_pWaffle = nullptr;

    MaterialBox* m_pMaterialBox = nullptr;

    Bond* m_pBond = nullptr;

    int MaterialWindowType; // 物料窗口类型标识,1代表圆晶 后面接口获取标识

    /**接口指针
     */
    ns_module::CViewInterface* m_pCViewInterface;

    QList<QPair<QString, QString>> m_pfileList;
};

#endif // CAMERAIMAGEHANDLER_H