#pragma once #include #include "Global_Define.h" #include "cv.h" #include "GlassRecipe.h" #include "HardwareSettings.h" #include "Glass_Data.h" #define VIEWER_PI 3.14159265358979323846 #define VIEWER_ToRadian(degree) ( (degree) * (VIEWER_PI/180.0) ) #define VIEWER_ToDegree(radian) ( (radian) * (180.0/VIEWER_PI) ) #define WM_AREA_ITEM_SELECT_CHANGE WM_USER + 0x18 #define WM_AREA_ITEM_MODIFY WM_USER + 0x19 #define WM_FRAME_IMG_MOUSE_DN WM_USER + 0x1A #define ID_MODE_USER_SELECT (30000 + 0) #define ID_MODE_VIEW_INSPECT_ALL (30000 + 1) #define ID_MODE_VIEW_INSPECT_AREA (30000 + 2) #define ID_MODE_VIEW_NOTCH_AREA (30000 + 3) #define ID_MODE_VIEW_NOTCH_MEASURE (30000 + 4) #define ID_MODE_VIEW_INSPECT_SIDE_DIMENSION (30000 + 5) #define ID_MODE_VIEW_CORNER_AREA (30000 + 6) #define ID_MODE_VIEW_MARK_AREA (30000 + 7) #define ID_MODE_VIEW_USER_DEFECT_AREA (30000 + 8) #define ID_MODE_VIEW_EXCEPTION_AREA (30000 + 9) #define ID_MODE_VIEW_START_END_LINE (30000 + 10) #define ID_MODE_VIEW_DEFECT_ALL (30000 + 11) #define ID_MODE_VIEW_DEFECT (30000 + 12) #define ID_MODE_VIEW_MEASURE (30000 + 13) #define ID_MODE_MODIFY_BRUSH_BLACK (30000 + 14) #define ID_MODE_MODIFY_BRUSH_WHITE (30000 + 15) #define ID_MODE_VIEW_FRAME_INDEX (30000 + 16) enum eModeEdgeImageViewer { MODE_USER_SELECT, MODE_VIEW_INSPECT_AREA, MODE_VIEW_NOTCH_AREA, MODE_VIEW_NOTCH_MEASURE, MODE_VIEW_INSPECT_SIDE_DIMENSION, MODE_VIEW_CORNER_AREA, MODE_VIEW_MARK_AREA, MODE_VIEW_USER_DEFECT_AREA, MODE_VIEW_EXCEPTION_AREA, MODE_VIEW_START_END_LINE, MODE_VIEW_DEFECT, MODE_VIEW_MEASURE, MODE_MODIFY_BRUSH_BLACK, MODE_MODIFY_BRUSH_WHITE, MODE_VIEW_FRAME_IDX, MAX_DISPLAY_SET, }; typedef struct stEdgeViewer_ManualMeasure { BOOL bStart; BOOL bModifyStart; BOOL bModifyEnd; int nTextPos; CPoint ptMeasureStart; CPoint ptMeasureEnd; }EdgeViewer_ManualMeasure; class CEdgeImageViewer : public CWnd { DECLARE_DYNAMIC(CEdgeImageViewer) public: CEdgeImageViewer(); virtual ~CEdgeImageViewer(); protected: afx_msg void OnPaint(); afx_msg void OnDestroy(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnContextMenu(CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnUserSelect(); afx_msg void OnViewInspetAll(); afx_msg void OnViewInspectArea(); afx_msg void OnViewInspectNotchArea(); afx_msg void OnViewInspectNotchMeasure(); afx_msg void OnViewInspectSideDimension(); afx_msg void OnViewCornerArea(); afx_msg void OnViewMarkArea(); afx_msg void OnViewUserDefectArea(); afx_msg void OnViewExceptionArea(); afx_msg void OnViewStartEndLine(); afx_msg void OnViewResultAll(); afx_msg void OnViewDefect(); afx_msg void OnViewMeasur(); afx_msg void OnModifyDrawbrushBlack(); afx_msg void OnModifyDrawbrushWhite(); afx_msg void OnViewFrameIdx(); DECLARE_MESSAGE_MAP() public: void SetImageBuffer(BYTE *pImg, int nWidth, int nHeight, int nFrameCount); void SetImageBuffer(BYTE *pImg); private: void InitBitMap(); void DeleteBitMap(); private: void UpdateView(); void UpdateView_Image(CDC* memDC); void UpdateView_SideName(CDC* memDC); void UpdateView_MousePosInfo(CDC* memDC); void UpdateView_InspectArea(CDC* memDC); void UpdateView_NotchArea(CDC* memDC); void UpdateView_NotchMeasure(CDC* memDC); void UpdateView_Notch_Circle_Measure(CDC* memDC); void UpdateView_Corner(CDC* memDC); void UpdateView_Mark(CDC* memDC); void UpdateView_UserDefectArea(CDC* memDC); void UpdateView_ExceptionArea(CDC* memDC); void UpdateView_StartEndLine(CDC* memDC); void UpdateView_Defect(CDC* memDC); void UpdateView_ManualMeasure(CDC* memDC); void UpdateView_MeasureSideDimensionResult(CDC* memDC); void UpdateView_Frame(CDC* memDC); void UpdateView_MousePoint(CDC* memDC); public: CRect GetManualMeasureRect(); public: // Display void SetDisplayPos(CPoint ptDisplayStart_pxl); CPoint GetDisplayPos() {return m_ptDisplayStart_pxl;} void SetZoom(double dZoom); double GetZoom(); void SetWndRect(CRect rtWnd) {m_rtWnd = rtWnd;} CRect GetWndRect() {return m_rtWnd;} public: void SetViewOption(eModeEdgeImageViewer emOption); void ResetViewOption(eModeEdgeImageViewer emOption); private: // Mouse Command void ModifyImageBack(); void ModifyImageWhite(); private: // Wnd <-> Pxl int GetWndPosX(int nX_pxl); int GetWndPosY(int nY_pxl); CPoint GetWndPos(CPoint ptPxl); CRect GetWndPos(CRect rtPxl); int GetPixlPosX(int nX_Wnd); int GetPixlPosY(int nY_Wnd); CPoint GetPxlPos(CPoint ptWnd); CRect GetPxlPos(CRect rtWnd); public: void SetSideIdx(int nSideIdx) {m_nSideIdx = nSideIdx;} void SetGlassData(CGlass_Data* pGlassData) {m_pGlassData = pGlassData;} void SetHardwareSetting(CHardwareSettings* pHWSetting) {m_pHardware = pHWSetting;} void SetRecipe(CGlassRecipe* pRecipe) {m_pRecipe = pRecipe;} void SetPixelSize(double dPixelSizeX, double dPixelSizeY) {m_dPixelSizeX = dPixelSizeX, m_dPixelSizeY = dPixelSizeY;} private: CRect m_rtWnd; BITMAPINFO* m_pBmInfo; BYTE* m_pBuffer; int m_nFrameWidth; int m_nFrameHeight; int m_nFrameCount; int m_nTotalHeight; double m_dPixelSizeX; // Resolution X double m_dPixelSizeY; // Resolution Y double m_dZoom; bitset m_MenuStatus; // È­¸é ¸ðµå »óÅ EdgeViewer_ManualMeasure m_ManualMeasureStatus; // ¼öµ¿ ÃøÁ¤ »óÅ CPoint m_ptDisplayStart_pxl; // ViewÀÇ 0,0 ÀÇ Pxl À§Ä¡ CPoint m_ptMousePos_Wnd; // WndÀÇ ¸¶¿ì½º À§Ä¡ CPoint m_ptMousePos_Pxl; // PixelÀÇ ¸¶¿ì½º À§Ä¡ public: int m_nSideIdx; // Side Idx CGlass_Data * m_pGlassData; CHardwareSettings* m_pHardware; CGlassRecipe* m_pRecipe; /* BOOL m_bModify; BOOL m_bMouseLDown; BOOL m_bVCRDraw; BYTE* m_pBuffer; CSize m_szTotBuffer; double m_dZoom; int m_nModeTracker; CPoint m_ptOldMouse; int m_nCam; int m_nSide; SIZE m_szImg; SIZE m_szMark; MANUAL_MEASURE m_ManualMeausre; CPoint m_ptMouseSaved; // Profile Save ±â´É½Ã »ç¿ë IViewInterface2Parent *m_pI2M; CRect m_rcROI; // ÇöÁ¦ º¸¿©Áö°í ÀÖ´Â ¿µ¿ª CFont m_sideFont; CImage m_ImageMagnify; EXECPTION_AREA m_refMark; EXECPTION_AREA *m_pCompareArea; _ST_GDI_ITEM m_st_GdiItem; CGlass_Data * m_pGlassData; CHardwareSettings* m_pHardware; CGlassRecipe* m_pRecipe; public: CPoint m_ptMouseCurrent; // ÇöÀç ¸¶¿ì½º ÁÂÇ¥ EXECPTION_AREA *m_pTracker; CRect m_WndRect; POINT m_ptOrg; // Àüü À̹ÌÁö¿¡¼­ Display ½ÃÀÛ ÁÂÇ¥ int m_nModeTrackerVCR; CPoint m_ptOldMouseVCR; */ #if HALCON_VISION_KEY private: BOOL m_isMouseDown; CPoint m_ptMouseDown; public: void UpdataVisionResult(void); private: void UpdateView_VisionResult(CDC* memDC); public: afx_msg void OnLButtonUp(UINT nFlags, CPoint point); #endif // HALCON_VISION_KEY };