SDC C-Project CF Review 프로그램
KEJ
2024-06-26 0c66940a8e2cf64c9890519901f433b3668216b6
ReviewHistory/ReveiwHistory/ReveiwHistoryDlg.h
»õ ÆÄÀÏ
@@ -0,0 +1,395 @@

// ReveiwHistoryDlg.h: í—¤ë” íŒŒì¼
//
#pragma once
#include "akFormationMap.h"
#include "akGridData.h"
#include "AlignDlg.h"
#include "akWndArrange.h"
#include "DitGlassRawServer.h"
#include "GlassRawBase.h"
#include "akCore/akFileDB.h"
#include "afxcmn.h"
#include "akGridCtrl/akGridCtrl.h"
#include "akImageView.h"
//#include "CameraImageView.h"
//#include "CHImageControls/CHRectTracker.h"
#define MAX_COUNT   100
/*< LYW 20211025 - #3684 ADD Start >*/
enum OFFSETCOUNT {
   CAM_MAX_COUNT = 20, XPOS_MAX_COUNT = 10, SCAN_MAX_COUNT = 10, PROGRESS_BAR_MAX = 2000
};
#define   REVIEW_OFFSET_CONFIGFILE_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\") //210805
#define   REVIEW_OFFSET_CONFIGFILE_NAME _T("ReviewOffSet.cfg")
#define REVIEW_OFFSET_CONFIGFILE_FULL_PATHNAME _T("D:\\DIT_Review\\ReviewServerConfig\\ReviewOffSet.cfg")
#define MOTOR_OFFSET_CONFIGFILE_FULL_PATHNAME _T("D:\\DIT_Review\\ReviewServerConfig\\MotorOffSet.cfg")
/*< LYW 20220525 - #4158 ADD Start >*/
#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT   _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig")
/*< LYW 20220525 - #4158 ADD End >*/
#define   REVIEW_OFFSET_BACKUP_FORDER_NAME _T("OffsetBackup")
#define   REVIEW_OFFSET_BACKUP_FORDER_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\OffsetBackup\\")
/*< LYW 20211111 - #3766 ADD Start >*/
#define COPYDATA_REVIEWHISTORYOR2REVIEWSYSTEM 1800
/*< LYW 20211111 - #3766 ADD End >*/
/*< LYW 20211025 - #3684 ADD End >*/
struct _DefectList
{
   int            m_nFileTime;
   CString         m_strFileName;
   CString         m_strLoading;
   CString         m_strGlassID;
   CString         m_strPPID;
   int            m_nReviewCount;
   int            m_nAllCount;
   CString         m_strJudge;
};
/*< LYW 20211025 - #3684 ADD Start >*/
struct OffSetInfo
{
   int nXposIndex;
   int nScanIndex;
   int nCamIndex;
   double dXposMax;
   double dXposMin;
   double dYposMax;
   double dYposMin;
   double dXoffSetValue;
   double dYoffSetValue;
   BOOL bCheckSave;
};
typedef std::vector<OffSetInfo> VecOffSetData;
typedef std::vector<VecOffSetData> VecOffSetScanData;
typedef std::vector<VecOffSetScanData> VecOffSetCameraInfo;
/*< LYW 20211025 - #3684 ADD End >*/
/*< LYW 20211029 - #3684 ADD Start >*/
DWORD RunThreadReviewHistory(LPVOID param);
/*< LYW 20211029 - #3684 ADD End >*/
// CReveiwHistoryDlg ëŒ€í™” ìƒìž
class CReveiwHistoryDlg : public CDialogEx
{
// ìƒì„±ìž…니다.
public:
   CReveiwHistoryDlg(CWnd* pParent = nullptr);   // í‘œì¤€ ìƒì„±ìžìž…니다.
   /*< LYW 20211029 - #3684 ADD Start >*/
   ~CReveiwHistoryDlg(void);
   /*< LYW 20211029 - #3684 ADD End >*/
// ëŒ€í™” ìƒìž ë°ì´í„°ìž…니다.
#ifdef AFX_DESIGN_TIME
   enum { IDD = IDD_DLG_REVIEWHISTORY };
#endif
   protected:
   virtual void DoDataExchange(CDataExchange* pDX);   // DDX/DDV ì§€ì›ìž…니다.
public:
   CFont m_Filelistfont;
   CFont m_Defectfont;
   _DefectDisplayOption m_DefectDisplayOption;
   CakFormationMap m_FormationMap;
   akDefectFormation m_Formation;
   CString m_strRawFilePath;
   CakWndArrange      m_WndArrange;
   CakImageView m_ImageView;
   CAlignDlg* m_pDlgAlign;
   CakGridCtrl m_gridMultiLIst;
   std::vector<CString> m_vecStrGridMultiHeader;
   CakGridCtrl m_gridReviewList;
   std::vector<CString> m_vecStrGridReviewHeader;
   std::vector<CString> m_vecStrGridReviewList;
   std::vector<CString> m_vecStrGridReviewPath;
   std::vector<CString> m_vecStrGridTimeList;
   std::vector<_DefectList> m_vecStrDefectList;
   CakGridCtrl m_gridDefectInfo;
   std::vector<CString> m_vecStrGridDefectHeader;
   CakGridCtrl m_gridGlassInfo;
   std::vector<CString> m_vecStrGridGlassHeader;
   std::vector<CString> m_vecStrReviewTemp;
   std::vector<_akFormation*>   m_vecSortForm;
   std::vector<_akDefect> m_vectest;
   CImage m_DefectImage;
   //LYW 20210825 #3486 ADD START
   CImage m_DefectRotateImage;
   //LYW 20210825 #3486 ADD END
   CImage m_ReviewImage;
   CRect m_picture_rect;
   CRect m_picture_rect2;
   CImage m_AlignFirst;
   CImage m_AlignSecend;
   CRect m_Align_rect;
   CRect m_Align_rect2;
   CButton m_chkAllDefect;
   CButton m_chkReviewDefect;
   CButton m_chkMuti;
   CButton m_chkSingle;
   CSliderCtrl m_sldImg;
   CEdit m_ctrCount;
   CStatic m_ctrReviewImage;
   CEdit m_ctlFileCount;
   CProgressCtrl m_ctlProgress;
   CakGridCtrl m_ctrlGridGlassList;
   /*< LYW 20211018 - #3684 ADD Start >*/
   //CurrentDefect, Offset ê³„ì‚° ì‚¬ìš©
   int m_dCurDefectIdx;
   int m_dCurDefectID;
   /*< LYW 20211018 - #3684 ADD End >*/
   /*< LYW 20211028 - #3684 ADD Start >*/
   CTime m_LastSaveOffsetTime;
   CTime m_CurrentResultFileTime;
   /*< LYW 20211028 - #3684 ADD End >*/
   /*< LYW 20211029 - #3684 ADD Start >*/
   DWORD m_ThreadId;
   /*< LYW 20211029 - #3684 ADD End >*/
   // tracker
   BOOL         m_bDrawTracker;
   CPoint         m_ptTrackerStart;
   //CCHRectTracker   m_rectTracker;
   // Scroll Pos
   int         m_nVScroll;
   int         m_nHScroll;
   // Max Scroll Pos
   int         m_nMaxVScroll;
   int         m_nMaxHScroll;
///////////////////////////////////////////////////////
   CDitGlassRawServer m_Server;
   CGlassRawBase* m_pGlassRawMaker;
   CgrmGlassRawData m_GlassRawDataBuffer;
///////////////////////////////////////////////////////
   int m_nSelectedCol;
   int m_nSelectedRow;
   char m_strConfigFile[MAX_PATH];
   bool m_bDefectAll;
   bool m_bFirst;
   int m_nCount;
   int m_nGlassSelect;
   int m_nFileCount;
   int m_nSelectFile[105];
   int m_nDefectSize[105];
   int m_nCellSize[105];
   int m_nCellSizeTemp[105];
   int m_nImageSize[105];
   int m_nSizeDefect;
   int m_nSizeImage;
   int m_nDefectCount;
   int m_nImageCount;
   int m_nCellCount;
   BOOL m_bAsending;
   struct _InitOption
   {
      int m_nMaxDataNumCell;
      int m_nMaxDataNumDefect;
      int m_nSelectRawType;
      char m_strLogFilePath[256];
      int  m_bUseStack;
      char m_strStackLocalPath[256];
      char m_strStackEquipID[32];
      char m_strStackParam1[32];
      char m_strStackParam2[32];
   }m_ConfigOption;
// êµ¬í˜„입니다.
protected:
   HICON m_hIcon;
   // ìƒì„±ëœ ë©”시지 ë§µ í•¨ìˆ˜
   virtual BOOL OnInitDialog();
   afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
   afx_msg void OnPaint();
   afx_msg HCURSOR OnQueryDragIcon();
   virtual BOOL PreTranslateMessage(MSG* pMsg);
   DECLARE_MESSAGE_MAP()
   void AddVecFileHeader();
   void AddVecGlassHeader();
   void AddVecDefectHeader();
   void SlideInit();
   void InitGridReviewLIst(CakGridCtrl* pGrid, UINT nRectCtrlID);
   void InitGridGlassLIst(CakGridCtrl * pGrid, UINT nRectCtrlID);
   void InitGridDefectLIst(CakGridCtrl* pGrid, UINT nRectCtrlID);
   void CreateUserDirectory();
   void CreateUserClass();
   void DestroyUserClass();
   void getDispInfoGlass(int nCol, int nRow, CString* pStrData);
   void getDispInfoGlassInfo(int nCol, int nRow, CString * pStrData);
   void getDispInfoDefect(int nCol, int nRow, CString* pStrData);
public:
   afx_msg void OnBnClickedButtonMapviewFit();
   afx_msg void OnDestroy();
   afx_msg LRESULT OnMapDefectSelected(WPARAM wParam, LPARAM lParam);
   afx_msg LRESULT OnDisplayWarning(WPARAM wParam, LPARAM lParam);
   afx_msg LRESULT OnMapDefectMouseOver(WPARAM wParam, LPARAM lParam);
   afx_msg LRESULT OnListDefectSelected(WPARAM wParam, LPARAM lParam);
   /*< LYW 20211018 - #3684 ADD Start >*/
   afx_msg LRESULT OnImageClick(WPARAM wParam, LPARAM lParam);
   /*< LYW 20211018 - #3684 ADD End >*/
   afx_msg void OnSize(UINT nType, int cx, int cy);
   afx_msg void OnOptionPathsetting();
   afx_msg void OnViewAlldefect();
   afx_msg void OnViewReviewdefect();
   afx_msg void OnAlignView();
   afx_msg void OnBnClickedBtnFindBin();
   afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
   afx_msg void OnChangeEditCount();
   afx_msg void OnClickedChkAllDefect();
   afx_msg void OnClickedChkMuti();
   afx_msg void OnClickedChkReviewDefect();
   afx_msg void OnClickedChkSingle();
   afx_msg void OnChangeEditFileCount();
   afx_msg void OnBnClickedButton3();
   virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
   void FileTime(CString strPath);
   void OpenFileHeader(CString strPath, CString strFullPath);
   void BinFileOpen(int nCount);
   void OnCbnSelchangeComboRawtype();
   /*< LYW 20211111 - #3766 ADD Start >*/
   void DrawInsViewCenterLine(CPaintDC *pDC);
   /*< LYW 20211111 - #3766 ADD End >*/
   /*< LYW 20211025 - #3684 ADD Start >*/
   afx_msg void OnBnClickedButtonOffsetApply();
   afx_msg void OnBnClickedButtonOffsetSave();
   BOOL LoadOffset(CString strFilePath);
   BOOL SaveOffset();
   /*< LYW 20211111 - #3766 ADD Start >*/
   BOOL SendMsg2ReviewSystem();
   /*< LYW 20211111 - #3766 ADD End >*/
   BOOL ApplyOffset(int nModuleidx, int nCamIndex, int ScanIndex, double dXOffsetValue, double dYOffsetValue);
   BOOL SetInputOffSet(int nModuleidx, int nCamIndex, int ScanIndex, int nXposIndex, double dXOffsetValue, double dYOffsetValue, double dXposMin, double dXposMax, BOOL bCheckSave = 0);
   void InitDataInfo();
   OffSetInfo GetOffSetInfo(int nMoudleidx, int nCamIndex, int ScanIndex, int nXposIndex);
   int m_nCameraCount;
   int m_nScanCount;
   int m_XposCount;
   double m_dWarnStandard;
   double m_dHardStandard;
   int m_nCurModelIdx;
   /*< LYW 20211025 - #3684 ADD End >*/
   //Xpos ìœ„치별 ì‹¤ì œ Offset Data ë¥¼ ê°€ì§€ê³  ìžˆëŠ” Vector
   VecOffSetData  m_vecOffSetData;
   //Scan Index를 í†µí•œ OffSet Data ë¥¼ ê´€ë¦¬í•˜ê¸°ìœ„한 Vector
   VecOffSetScanData m_vecOffSetScanData;
   //CamIndex를 í†µí•œ ê´€ë¦¬ë¥¼ ìœ„한 Vector  module 0
   VecOffSetCameraInfo  m_vecOffSetCameraInfo;
   //CamIndex를 í†µí•œ ê´€ë¦¬ë¥¼ ìœ„한 Vector  module 1
   VecOffSetCameraInfo  m_vecOffSetCameraInfo2;
   void ShowProgressBar();
   void setDefectShow(int nDefectID, BOOL bEnsureVisible);
   void ImageShow(int nDefectID);
   void SetScrollSetting();
   void SetScrollRest();
   void Imagenoload();
   //LYW 20210825 #3486 ADD START
   void ImageRotate(CImage& SrcImage, CImage& DstImage, double degree = 180.0);
   //LYW 20210825 #3486 ADD END
   /*< LYW 20211028 - #3684 ADD Start >*/
   void UpdateLastSaveOffsetTime(CString FileName);
   CTime GetCurrentResultFileTime(CString FileName);
   /*< LYW 20211028 - #3684 ADD End >*/
   BOOL GetCheckFileLoad(int nCount);
   void GlassInfoRest();
   BOOL MultiSelectCheck(int nSelectCount);
   int MultiInsert(int nSelectCount, int nDataCount);
   void InitSelectGlass(int nSelectCount);
   void AddVecDataImage(int nDataCount);
   void AddVecDataDefct(int nDataCount);
   void AddVecDataDefectAll(int nDataCount);
   void AddVecDataDefct2(int nDataCount/*, int nRawCount*/);
   void AddVecDataDefectAll2(int nDataCount/*, int nRawCount*/);
   void AddVecGlassData(int nCount);
   void AddVecCellData(int nCellCount);
   void AddVecDateSorting(int nDataCount);
   void AddVecImageSorting(int nDataCount);
   void AddVecCellSorting(int nCellCount);
   void SelectCell(int nDataCount);
   void SortFileList(int nCol);
   void SortListDefect(int nCol);
   void SetDefectCount() {   m_nDefectCount = m_nDefectCount + 1; }
   int   GetDefectCount() { return m_nDefectCount; }
   void SetImageCount() { m_nImageCount = m_nImageCount + 1; }
   int   GetImageCount() { return m_nImageCount; }
   void SetCellCount() { m_nCellCount = m_nCellCount + 1; }
   int   GetCellCount() { return m_nCellCount; }
   afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
   int m_nEditCamIdx;
   int m_nEditScanIdx;
   double m_dEditOffsetX;
   double m_dEditOffsetY;
   CString m_strGantryIdx;
   /*< LYW 20211028 - #index ADD Start >*/
   CString m_TextLastSaveOffsetTime;
   /*< LYW 20211028 - #index ADD End >*/
   CButton m_CheckInsViewCenterLine;
   afx_msg void OnBnClickedCheckInsViewCenterLine();
};