#pragma once
|
#include <bitset>
|
#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<MAX_DISPLAY_SET> 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
|
};
|