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
/**************************************************************************************************
        Copyright 2020-2022 ÉîÛÚÊаËÁãÁªºÏ×°±¸ÓÐÏÞ¹«Ë¾
        All rights reserved.
 
        Author: zhenbin,jiang
        Date: 2021-03-23
        Version: V1.0.0
 
        Description:
            ±¾Ä£¿éÖ÷ÒªÊÇÏÔʾ»ùÀ࣬°üÀ¨´´½¨ROI,±à¼­ROIµÈ
 
***************************************************************************************************/
#ifndef I_CLS_DISPLAY_H
#define I_CLS_DISPLAY_H
 
typedef enum DISP_TYPE
{
    DISP_OBJECT = 0,        //ÍⲿÏÔʾµÄÌØÕ÷£¬ ÈçDispObj();
    DISP_REGION = 1,        //ROIÇøÓò£¬ ÈçDispRegion();
    DISP_CROSS = 2,         //ÏÔʾʮ×Ö£¬ÈçDispCross()
    DISP_SELECT = 3         //ÏÔʾÐýת£¬ ÈçDispSelect()
}DISP_TYPE;
 
typedef enum BOOUNION_MOUSE_EVENT
{
    NO_EVENT = -1,                //ÎÞʼþ
    LEFT_MOUSE_BUTTON_DOWN = 0,   //×ó¼ü°´ÏÂ
    LEFT_MOUSE_BUTTON_UP = 1,     //×ó¼ü°´ÉÏ
    LEFT_MOUSE_BUTTON_DOUBLE = 2, //×ó¼üË«»÷
    RIGHT_MOUSE_BUTTON_DOWN = 3,  //ÓÒ¼ü°´ÏÂ
    RIGHT_MOUSE_BUTTON_UP = 4,    //ÓÒ¼ü°´ÉÏ
    WHEEL_MOUSE_BUTTON = 5,       //¹ö¶¯Ê¼þ
    MOUSE_BUTTON_MOVE = 6,       //Êó±êÒÆ¶¯
    DRAG_SCROLL_MOVE = 7         //Í϶¯Ê¼þ
}BOOUNION_MOUSE_EVENT;
 
typedef struct _InfRegion
{
    int tyShape;  //1ÊǾØÐÎ1£»2ÊǾØÐÎ2£»4ÊÇÔ²ÐΣ»8ÊÇÈÎÒâÐÎ×´
    std::vector<double> vInfPos;    //λÖÃÐÅÏ¢
}InfRegion;
 
//ÏÔʾλÖᢱÈÀý¡¢ÏñËØÖµ
typedef std::function<void(int msgEvent, int x, int y, double rate, int pixel)> ImageOperateCallback;
class IClsDisplay
{
public:
    virtual ~IClsDisplay() {};
 
    //0. ´´½¨´°Ìå
    virtual void OpenWindow(__int64 id, int width, int height) = 0;
 
    //1. ×Ô¶¯´°Ìå´óС
    virtual void AutoWindowSize(int width, int height) = 0;
 
    //2. ÉèÖÃÀàÐÍ
    virtual void SetShapeType(int shape) = 0;
 
    //3. ÏÔʾ¶ÔÏó
    virtual void DispObj(HalconCpp::HObject &hObject) = 0;
 
    //4. ÇåÀí´°Ìå
    virtual void ClearWindow(void) = 0;
 
    //5. ÏÔʾ·¶Î§
    virtual void SetPart(int x1, int y1, int x2, int y2) = 0;
 
    //6. ÉèÖÃ×ÖÌå
    virtual void SetFont(int font) = 0;
 
    //7. ÏÔʾ×Ö·û
    virtual void DispMessage(int x, int y, std::string str, std::string strColor, std::string strBox) = 0;
 
    //8. »­Í¼
    virtual void DrawRegion(void) = 0;
 
    //9. ±à¼­ÇøÓò
    virtual void EditRegion(void) = 0;
 
    //10. ÏÔʾͼÏñ
    virtual void DispImage(void) = 0;
 
    //11. ÏÔʾROIÇøÓò
    virtual void DispRegion(void) = 0;
 
    //12. ÏÔʾÆÁ±ÎÇøÓò
    virtual void DispCross(void) = 0;
 
    //13. ´°ÌåÊÇ·ñ´æÔÚ
    virtual bool WindowIsExist(void) = 0;
 
    //14. ¹Ø±Õ´°Ìå
    virtual void CloseWindow(void) = 0;
 
    //15. ¼ÓÔØÏÔʾͼ
    virtual void GenImage(const unsigned char* data, int imgType, int width, int height) = 0;
 
    //16. »ñȡͼÏñ
    virtual HalconCpp::HObject& GetImage(void) = 0;
 
    //17. »ñÈ¡ÇøÓò
    virtual HalconCpp::HObject& GetRegion(void) = 0;
 
    //18. »ñȡѡÔñÇøÓò
    virtual HalconCpp::HObject& GetSelect(void) = 0;
 
    //19. ÉèÖÃͼÏñ
    virtual void SetImage(HalconCpp::HObject &hObject) = 0;
 
    //20. ÉèÖÃÇøÓò
    virtual void SetRegion(HalconCpp::HObject &hRegion) = 0;
 
    //21. ÉèÖÃÑ¡ÔñÇøÓò
    virtual void SetSelect(HalconCpp::HObject &hRegion) = 0;
 
    //22. ÉèÖÃÑÕÉ«
    virtual void SetColor(std::string color, DISP_TYPE disp) = 0;
 
    //23. ÉèÖÃģʽ
    virtual void SetDraw(std::string draw, DISP_TYPE disp) = 0;
 
    //24. ÏÔʾѡÔñ
    virtual void DispSelect(void) = 0;
 
    //25. ÉèÖõ±Ç°µÄ²Ù×÷״̬
    virtual void SetOperFlag(OPER_FLAG flag) = 0;
 
    //26 »Øµ÷º¯Êý
    virtual void SetOperatorCallback(ImageOperateCallback callback) = 0;
 
    //27. »ñȡʮ×Ö
    virtual HalconCpp::HObject& GetCross(void) = 0;
 
    //28. ÉèÖÃÊ®×Ö
    virtual void SetCross(HalconCpp::HObject &cross) = 0;
 
    //29. ÉèÖñ³¾°ÑÕÉ«
    virtual void SetBackgroundColor(std::string strColor) = 0;
 
    //30. ÉèÖÃÏÔʾÏßµÄÀàÐÍ. <1ΪʵÏߣ¬ ·ñÔòΪÐéÏß
    virtual void SetLineStyle(int lineStyle, DISP_TYPE disp) = 0;
 
    //31. Í¼Ïñ×ø±êת»»Îª´°ÌåµÄ×ø±ê
    virtual Point2I PixelToClient(Point2I pos) = 0;
 
    //32. Ë¢Ð²»Ê¹ÄÜ
    virtual void UnableFlush(void) = 0;
 
    //33. Ë¢ÐÂʹÄÜ
    virtual void AbleFlush(void) = 0;
 
    //34. µ±Ç°µÄ±à¼­×´Ì¬
    virtual OPER_FLAG GetOperMode(void) = 0;
 
    //35. ´°ÌåID
    virtual int GetDisplayID(void) = 0;
 
    //36. Î»ÖÃÐÅÏ¢
    virtual InfRegion GetInfRegion(void) = 0;
 
    //37. ÉèÖÃλÖÃÐÅÏ¢
    virtual void SetInfRegion(InfRegion inf) = 0;
 
    //38. ÉèÖÃ×óÉ϶¨µã×ø±ê
    virtual void SetLtPoint(int xPos, int yPos) = 0;
 
    //39. »ñÈ¡×óÉϵãµÄ×ø±ê
    virtual Point2I GetLtPoint(void) = 0;
};
 
#endif