QuakeGod
2024-01-16 6ff05a44b01c6ac6e33db2ec28dcf6e2a7c2abb0
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
#pragma once
#include <memory>
#include <functional>
 
// LCDDisplay1 对话框
 
class LCDDisplay1 : public CStatic
{
    DECLARE_DYNAMIC(LCDDisplay1)
    //typedef int (* pMenuCallBack)(void * pParam);
public:
    typedef std::function<int(void * pParam)> pMenuCallBack;
    enum HvResult
    {
        HvOk = 0,
        HvErr = 1,
    };
    enum enMouseMode
    {
        MouseModeNone = 0,
        MouseModeCursor = 1,
        MouseModeHand = 2,
        MouseModeZoomIn = 3,
        MouseModeZoomOut = 4,
    };
    enum enMenuItemId
    {
        ID_Point,
        ID_Move,
        ID_ZoomIn,
        ID_ZoomOut,
        ID_PixelGrid,
        ID_SubPixelGrid,
        ID_ZoomFit,
        ID_OrgScale,
        ID_Seprate_Window,
        ID_Restore_Window,
        ID_LoadImage,
        ID_SaveImageAs,
        ID_MenuItemCustom,
    };
    enum enTextMode
    {
        TextModeDefault=0,
        TextMode3_5,
        TextMode5_7,
        TextMode5_11,
        TextMode7_11,
        TextMode7_12,
        TextMode7_15
    };
public:
    LCDDisplay1();   // 标准构造函数
    virtual ~LCDDisplay1();
    int m_nBkColor;
    int m_nHideColor;
    int m_nFntColor;
 
    int left_margin, top_margin;
    int pixelsizex, pixelsizey;
    int pixelgapx, pixelgapy;
    //int xspace, yspace;
    int m_TextMode=0;
    int text_cols, text_rows;
    int char_width, char_height;
 
    int m_cursor_x, m_cursor_y;
 
    unsigned char displayarray[64][128] = { 0 };
 
    CToolTipCtrl m_tooltip;
    int m_nMouseMode;
 
protected:
    DECLARE_MESSAGE_MAP()
public:
    virtual BOOL PreTranslateMessage(MSG* pMsg);
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
    afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
    virtual void PreSubclassWindow();
    virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);
    afx_msg void OnMouseLeave();
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    afx_msg void OnKillFocus(CWnd* pNewWnd);
 
    LONG m_nMouseWndX, m_nMouseWndY;
    float m_MousePicX, m_MousePicY;
 
    int m_nClientW, m_nClientH;
    float m_fScaleX, m_fScaleY;
 
    float m_fZoom;    //缩放系数,等于1表示100%比例显示
    int m_nOffsetXMax, m_nOffsetYMax;
 
    int m_fDispOffsetX, m_fDispOffsetY;    //偏移值,以中心对齐为0偏移;
    int m_nLastMouseX, m_nLastMouseY;
 
    int nOldMenuSel;
    int bHasChanged;
    int bViewMoving;
 
    long nTargetPoint;
    float fDragStartx;
    float fDragStarty;
 
    short FreqBuf1[8192];
 
    BYTE pullBuf1[1024][256] = { 0 };
 
    int nDataSize = 0;
 
    afx_msg void OnStnClicked();
    afx_msg void OnStnDblclick();
    afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
    afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
    afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
    afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    CMenu m_menu1;
    afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/);
    afx_msg void OnMenuS1(UINT nId);
    afx_msg void OnMenuS(UINT nId);
 
    typedef struct tagCallBacks
    {
        int bIsSet;
        pMenuCallBack pFunc;
        void * pParam;
    }stCallBacks;
    int nExtMenuCount;
    stCallBacks myCallBack[10];
 
    int AddMenuItem(CString sMenuStr, pMenuCallBack pFunc, void * pParam);
 
    int SetZoom(float fZoom);
 
    //    int SetBestFitZoom();
 
    //显示到像素坐标
    //像素到尺寸坐标
    //    PointF anchor;
 
//    std::vector<pHvShape> MyGraphics;
//    std::vector<pHvShapeCollection> MyShapeCollections;
    int Clear(int bRedraw = 1);
    int AddData(short * pData, int nSize, int bRedraw = 1);
    //    int UpdateData(short * pData, int nSize, int bRedraw = 1);
 
    int FFT(float *pBuf1, int nSize, float *pBufOut);
 
    //    int Add(pHvShape theshape, int bRedraw = 1);
    //    int AddList(pHvShapeCollection theShapeColletion, int bRedraw = 1);
    //    int Remove(pHvShape theshape, int bRedraw = 1);
    //    int RemoveList(pHvShapeCollection theShapeColletion, int bRedraw = 1);
    afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
    //    int QLoadImage();
    //    int QSaveImage();
    int SetTextMode(int nMode);
    int putText(const char * text);
    int putTextXY(int x, int y, const char * text);
    int TranslatePTtoColRow(int x, int y, int& nCol, int& nRow);
 
    int SetBkColor(COLORREF bkcolor);
    int SetFontColor(COLORREF fntColor);
    int SetHideColor(COLORREF hideColor);
 
};