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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
|
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef _JS_CONSOLE_H_
#define _JS_CONSOLE_H_
#include "../res/resource.h"
#define WST_NONE 0x00 // No size changed
#define WST_LEFT 0x01 // size to left
#define WST_TOP 0x02 // size to top
#define WST_RIGHT 0x04 // size to right
#define WST_BOTTOM 0x08 // size to bottom
#define WST_TOPLEFT (WST_TOP|WST_LEFT) // size to top & left
#define WST_TOPRIGHT (WST_TOP|WST_RIGHT) // size to top & right
#define WST_BOTTOMRIGHT (WST_BOTTOM|WST_RIGHT) // size to bottom & right
#define WST_BOTTOMLEFT (WST_BOTTOM|WST_LEFT) // size to bottom & right
#ifndef IDC_DLGSIZEBOX
#define IDC_DLGSIZEBOX 50
#endif /* IDC_DLGSIZEBOX */
enum { m_idSizeIcon = IDC_DLGSIZEBOX };
enum { // possible Control reSize Type
CST_NONE = 0,
CST_RESIZE, // NOMOVE + SIZE, add all delta-size of dlg to control
CST_REPOS, // MOVE(absolutely) + NOSIZE, move control's pos by delta-size
CST_RELATIVE, // MOVE(proportional) + NOSIZE, keep control always at a relative pos
CST_ZOOM, // MOVE + SIZE (both are automatically proportional)
CST_DELTA_ZOOM // MOVE(proportional, set manually) + SIZE(proportional, set manuall)
};
// contained class to hold item state
//
class CJS_ItemCtrl
{
public:
UINT m_nID;
UINT m_stxLeft : 4; // when left resizing ...
UINT m_stxRight : 4; // when right resizing ...
UINT m_styTop : 4; // when top resizing ...
UINT m_styBottom : 4; // when bottom resizing ...
UINT m_bFlickerFree : 1;
UINT m_bInvalidate : 1; // Invalidate ctrl's rect(eg. no-automatical update for static when resize+move)
UINT m_r0 : 14;
CRect m_wRect;
double m_xRatio, m_cxRatio;
double m_yRatio, m_cyRatio;
protected:
void Assign(const CJS_ItemCtrl& src);
public:
CJS_ItemCtrl();
CJS_ItemCtrl(const CJS_ItemCtrl& src);
HDWP OnSize(HDWP hdwp, int sizeType, CRect *pnCltRect, CRect *poCltRect, CRect *pR0, CWnd *pDlg);
CJS_ItemCtrl& operator=(const CJS_ItemCtrl& src);
};
class CJS_ResizeDlg : public CDialog
{
// DECLARE_DYNAMIC(CJS_ResizeDlg)
public:
CJS_ResizeDlg(UINT nID,CWnd *pParentWnd = NULL);
virtual ~CJS_ResizeDlg();
public:
std::vector<CJS_ItemCtrl> m_Items; // array of controlled items
CRect m_cltRect, m_cltR0;
int m_xMin, m_yMin;
int m_xSt, m_ySt; //step?
UINT m_nDelaySide; //drag side of window
CStatic m_wndSizeIcon; // size icon window
protected:
void AddControl( UINT nID, int xl, int xr, int yt, int yb, int bFlickerFree = 0,
double xRatio = -1.0, double cxRatio = -1.0,
double yRatio = -1.0, double cyRatio = -1.0 );
void AllowSizing(int xst, int yst);
void HideSizeIcon(void);
virtual BOOL OnInitDialog();
void OnSizing(UINT nSide, LPRECT lpRect);
void OnSize(UINT nType, int cx, int cy);
void OnGetMinMaxInfo(MINMAXINFO *pmmi);
BOOL OnEraseBkgnd(CDC* pDC);
public:
int UpdateControlRect(UINT nID, CRect *pnr);
};
//------------------------CIconListBox for CWndElementList-------------------------------------
class CIconListBox : public CListBox
{
public:
CIconListBox();
virtual ~CIconListBox();
public:
int InsertString(int nIndex, LPCWSTR lpszItem , int nImage);
virtual void ResetContent();
virtual void GetText(int nIndex, CString& rString);
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
protected:
// Generated message map functions
//{{AFX_MSG(CIconListBox)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
struct ItemDatas
{
CString csText;
int nImage;
};
};
//----------------------------------CWndElementList--------------------------------------------
#define IDC_LIST_JS_ELEMENT 10070
#define ELEMENT_LIST_WIDTH 140
#define ELEMENT_LIST_HEIGHT 180
#define ELEMENT_LIST_TOP_OFFSET 13
#define ELEMENT_TYPE_NAME 0
#define ELEMENT_TYPE_CONST 1
#define ELEMENT_TYPE_FUN 2
#define ELEMENT_TYPE_PRO 3
class CWndElementList : public CWnd
{
public:
CWndElementList();
virtual ~CWndElementList();
public:
virtual void OnSize(UINT nType, int cx, int cy);
virtual BOOL Create(CWnd* pParentWnd);
virtual BOOL ShowWindow(int nCmdShow);
void RemoveAllElement();
void SetElementList(LPCWSTR* pElement, int* pType , int iCount);
void AddElement(CFX_WideString csValue , int nType);
BOOL GetElementSel(CString &csElement);
BOOL SelectNext();
BOOL SelectPrevious();
BOOL SelectFirst();
BOOL SelectLast();
BOOL SelectNextPage();
BOOL SelectPreviousPage();
int GetListHeight();
protected:
// Generated message map functions
//{{AFX_MSG(CWndElementList)
afx_msg void OnPaint();
afx_msg BOOL OnNcActivate(BOOL bActive);
afx_msg void OnSelJSElement();
afx_msg void OnDblclkJSElement();
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
CIconListBox m_ListBox;
BOOL m_bBlock;
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CJS_ConsoleDlg �Ի���
class CJS_ConsoleDlg : public CJS_ResizeDlg
{
DECLARE_DYNAMIC(CJS_ConsoleDlg)
public:
CJS_ConsoleDlg(CReader_App* pApp, CWnd* pParent);
virtual ~CJS_ConsoleDlg();
enum { IDD = IDD_JS_CONSOLE };
void Create();
void AppendConsoleText(const CFX_WideString& swText);
void SetConsoleText(const CFX_WideString& swText);
CFX_WideString GetConsoleText() const;
CFX_WideString GetScriptText() const;
BOOL ResetElementList(LPCWSTR lpstrRef);
IFXJS_Runtime* GetJSRuntime();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧��
protected:
virtual BOOL OnInitDialog();
virtual void OnCancel();
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
// Generated message map functions
//{{AFX_MSG(CJS_ConsoleDlg)
afx_msg void OnBnClickedClear();
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickTips();
afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnGetMinMaxInfo(MINMAXINFO *pmmi);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnChangeScriptEdit(WPARAM wParam , LPARAM lParam);
afx_msg void OnMove(int x , int y);
public:
virtual int DoModal();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
CGW_LineNumberEdit m_edtSC;
BOOL m_bTips;
const UINT m_uTextlimited;
FX_HGLOBAL m_hGlobal;
CReader_App * m_pApp;
CWndElementList m_WndElementList;
};
#endif //_JS_CONSOLE_H_
|