#pragma once // CFrameImg #include #include "Global_Define.h" #include "cv.h" #include "GlassRecipe.h" #include "HardwareSettings.h" #include "Glass_Data.h" using namespace std; #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 enum eModeFrameImg{MODE_ZOOM_X=0,MODE_ZOOM_Y,MODE_PROFILE_X,MODE_PROFILE_Y,MODE_PROJECTION_X,MODE_PROJECTION_Y,MODE_SAVED_X,MODE_SAVED_Y ,MODE_DISTANCE_X,MODE_DISTANCE_Y,MODE_DIAGONAL,MODE_MARK_REG,MODE_MANIFY,MODE_AUTO_MEASURE,MODE_SHOW_MEASURE_LINE,MODE_SHOW_REF_LINE ,MODE_SHOW_SUB_LINE,MODE_MODIFY_BRUSH,MODE_SHOW_FRAM_RATE,MODE_COMPARE_PANEL,MODE_USER_DEFECT_AREA,MAX_DISPLAY_MODE, }; typedef struct tagMANUAL_MEASURE { BOOL bStart; BOOL bModifyStart; BOOL bModifyEnd; int nTextPos; CPoint ptMeasureStart; CPoint ptMeasureEnd; }MANUAL_MEASURE; typedef struct tagMARK_REG { BOOL bDown; CPoint ptMark; }MARK_REG; class CFrameImg : public CWnd { DECLARE_DYNAMIC(CFrameImg) public: CFrameImg(); virtual ~CFrameImg(); protected: afx_msg void OnPaint(); afx_msg void OnDestroy(); afx_msg void OnProfileCheckall(); afx_msg void OnProfileClearall(); afx_msg void OnProfileCurrentx(); afx_msg void OnProfileCurrenty(); afx_msg void OnProfileSavedx(); afx_msg void OnProfileSavedy(); afx_msg void OnProfileProjectionx(); afx_msg void OnProfileProjectiony(); afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnMeasureCheckall(); afx_msg void OnMeasureClearall(); afx_msg void OnMeasureDistancex(); afx_msg void OnMeasureDistancey(); afx_msg void OnMeasureDiagonal(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnImageManify(); afx_msg void OnViewCheckall(); afx_msg void OnViewClearall(); afx_msg void OnViewShowMeasureLine(); afx_msg void OnViewShowRefLine(); afx_msg void OnViewShowSubLine(); afx_msg void OnImgmodifyDrawbrush(); DECLARE_MESSAGE_MAP() public: void SetEventWnd(HWND hWnd) {m_Wnd_Event = hWnd; } void InitBitMap(); void SetImage(BYTE *pImg) {m_pBuffer = pImg; m_szTotBuffer=GetScanBufSize(m_nSide);} void SetGlassData(CGlass_Data *pGlassData); void SetSide(int nSide); int GetSide(){return m_nSide;} int GetSideCamID(int nSide); int GetSideScanIdx(int nSide); void SetImgSize(long nX, long nY) {m_szImg.cx =nX; m_szImg.cy = nY;} void SetMode(int nMode); BOOL GetMode(int nMode); void ResetMode(int nMode); void SetRecipe(CHardwareSettings *pHW,CGlassRecipe *pRecipe); BYTE* GetImage() {return m_pBuffer;} double GetZoomData() {return m_dZoom;} void SetZommMode(double dZoom) {m_dZoom = dZoom;} BOOL IsAutoMeasureMode() {return m_bitModeDisplay[MODE_AUTO_MEASURE];} void ChangeRect(); void DrawProfile(CDC &dc ,int nMode, CPoint pt); void DrawProfileSaved(CDC &dc ,int nMode, CPoint pt); void DrawMagnify(CDC &dc); void DrawManualMeasure(CDC &dc); void DrawProcessData(CDC &dc); void ViewUpdate(int nOpt = 0); void DrawTest(CDC &dc); //void DrawExpectionAear(CDC &dc); void Draw_Rectangle(CDC &dc,CRect rc, int nMode = 0); void Draw_TrakerRect(CRect rcTracker,CDC &dc); void Draw_CompareRect(CRect rcCompareArea, CDC &dc); void DrawDefect(CDC &dc); void DrawMeasureLine(CDC &dc,CvPoint2D32f *ptMark); void DrawStartEndLine(CDC &dc); void DrawReferenceLine(CDC &dc,CvPoint2D32f *ptMark,BOOL *bMark,int nHafMarkW,int nHafMarkH); void DrawCorner(CDC &dc,CvPoint2D32f *ptMark); //void DrawInspectArea(CDC &dc); // Tracker Function void SetTrackerModify(BOOL bAlbe) { m_bModify = bAlbe;} void TrackerInsert(); void SetTrackerPos(int nTrackerMode,CRect * pRc,CPoint pt , int nMode = 0); BOOL SetAcitveTracker(EXECPTION_AREA *pTracker,BOOL bReDraw = TRUE); int ChkTrackerAear(CRect &rcTracker,CPoint pt); //LRESULT OnSelectExeptionItem(WPARAM wParam, LPARAM lParam); CRect GetMartRect(); void SetMarkRect(CRect rc); CRect GetCompareRect(void); void SetMainInterface(IViewInterface2Parent *pI2M){m_pI2M=pI2M;} CRect GetMeasureRect(); private: void GetResolution(double &dH,double &dV); CSize GetScanBufSize(int iSide); private: HWND m_Wnd_Event; BOOL m_bModify; BOOL m_bMouseLDown; BOOL m_bVCRDraw; BYTE *m_pBuffer; CSize m_szTotBuffer; BITMAPINFO *m_pBmInfo; 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; bitset m_bitModeDisplay; // È­¸é ¸ðµå bit 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; };