mrDarker
2025-07-09 8364edfb293e9e31e0fa7899bedcef9cd393e130
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#pragma once
 
 
// CFrameImg
#include <bitset>
#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<MAX_DISPLAY_MODE>        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;    
};