1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef _JS_CONSOLE_H_ 8 #define _JS_CONSOLE_H_ 9 10 #include "../res/resource.h" 11 12 #define WST_NONE 0x00 // No size changed 13 #define WST_LEFT 0x01 // size to left 14 #define WST_TOP 0x02 // size to top 15 #define WST_RIGHT 0x04 // size to right 16 #define WST_BOTTOM 0x08 // size to bottom 17 #define WST_TOPLEFT (WST_TOP|WST_LEFT) // size to top & left 18 #define WST_TOPRIGHT (WST_TOP|WST_RIGHT) // size to top & right 19 #define WST_BOTTOMRIGHT (WST_BOTTOM|WST_RIGHT) // size to bottom & right 20 #define WST_BOTTOMLEFT (WST_BOTTOM|WST_LEFT) // size to bottom & right 21 22 #ifndef IDC_DLGSIZEBOX 23 #define IDC_DLGSIZEBOX 50 24 #endif /* IDC_DLGSIZEBOX */ 25 26 enum { m_idSizeIcon = IDC_DLGSIZEBOX }; 27 enum { // possible Control reSize Type 28 CST_NONE = 0, 29 CST_RESIZE, // NOMOVE + SIZE, add all delta-size of dlg to control 30 CST_REPOS, // MOVE(absolutely) + NOSIZE, move control's pos by delta-size 31 CST_RELATIVE, // MOVE(proportional) + NOSIZE, keep control always at a relative pos 32 CST_ZOOM, // MOVE + SIZE (both are automatically proportional) 33 CST_DELTA_ZOOM // MOVE(proportional, set manually) + SIZE(proportional, set manuall) 34 }; 35 36 // contained class to hold item state 37 // 38 class CJS_ItemCtrl 39 { 40 public: 41 UINT m_nID; 42 UINT m_stxLeft : 4; // when left resizing ... 43 UINT m_stxRight : 4; // when right resizing ... 44 UINT m_styTop : 4; // when top resizing ... 45 UINT m_styBottom : 4; // when bottom resizing ... 46 UINT m_bFlickerFree : 1; 47 UINT m_bInvalidate : 1; // Invalidate ctrl's rect(eg. no-automatical update for static when resize+move) 48 UINT m_r0 : 14; 49 CRect m_wRect; 50 double m_xRatio, m_cxRatio; 51 double m_yRatio, m_cyRatio; 52 53 protected: 54 void Assign(const CJS_ItemCtrl& src); 55 56 public: 57 CJS_ItemCtrl(); 58 CJS_ItemCtrl(const CJS_ItemCtrl& src); 59 60 HDWP OnSize(HDWP hdwp, int sizeType, CRect *pnCltRect, CRect *poCltRect, CRect *pR0, CWnd *pDlg); 61 62 CJS_ItemCtrl& operator=(const CJS_ItemCtrl& src); 63 }; 64 65 class CJS_ResizeDlg : public CDialog 66 { 67 // DECLARE_DYNAMIC(CJS_ResizeDlg) 68 public: 69 CJS_ResizeDlg(UINT nID,CWnd *pParentWnd = NULL); 70 virtual ~CJS_ResizeDlg(); 71 72 73 public: 74 std::vector<CJS_ItemCtrl> m_Items; // array of controlled items 75 CRect m_cltRect, m_cltR0; 76 int m_xMin, m_yMin; 77 int m_xSt, m_ySt; //step? 78 UINT m_nDelaySide; //drag side of window 79 CStatic m_wndSizeIcon; // size icon window 80 81 protected: 82 void AddControl( UINT nID, int xl, int xr, int yt, int yb, int bFlickerFree = 0, 83 double xRatio = -1.0, double cxRatio = -1.0, 84 double yRatio = -1.0, double cyRatio = -1.0 ); 85 void AllowSizing(int xst, int yst); 86 void HideSizeIcon(void); 87 virtual BOOL OnInitDialog(); 88 89 void OnSizing(UINT nSide, LPRECT lpRect); 90 void OnSize(UINT nType, int cx, int cy); 91 void OnGetMinMaxInfo(MINMAXINFO *pmmi); 92 BOOL OnEraseBkgnd(CDC* pDC); 93 94 public: 95 int UpdateControlRect(UINT nID, CRect *pnr); 96 }; 97 98 99 //------------------------CIconListBox for CWndElementList------------------------------------- 100 101 class CIconListBox : public CListBox 102 { 103 public: 104 CIconListBox(); 105 virtual ~CIconListBox(); 106 107 public: 108 int InsertString(int nIndex, LPCWSTR lpszItem , int nImage); 109 virtual void ResetContent(); 110 virtual void GetText(int nIndex, CString& rString); 111 112 virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); 113 void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); 114 int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct); 115 116 protected: 117 // Generated message map functions 118 //{{AFX_MSG(CIconListBox) 119 afx_msg void OnMouseMove(UINT nFlags, CPoint point); 120 //}}AFX_MSG 121 DECLARE_MESSAGE_MAP() 122 123 protected: 124 struct ItemDatas 125 { 126 CString csText; 127 int nImage; 128 }; 129 }; 130 //----------------------------------CWndElementList-------------------------------------------- 131 #define IDC_LIST_JS_ELEMENT 10070 132 133 #define ELEMENT_LIST_WIDTH 140 134 #define ELEMENT_LIST_HEIGHT 180 135 #define ELEMENT_LIST_TOP_OFFSET 13 136 137 #define ELEMENT_TYPE_NAME 0 138 #define ELEMENT_TYPE_CONST 1 139 #define ELEMENT_TYPE_FUN 2 140 #define ELEMENT_TYPE_PRO 3 141 142 class CWndElementList : public CWnd 143 { 144 public: 145 CWndElementList(); 146 virtual ~CWndElementList(); 147 148 public: 149 virtual void OnSize(UINT nType, int cx, int cy); 150 virtual BOOL Create(CWnd* pParentWnd); 151 virtual BOOL ShowWindow(int nCmdShow); 152 void RemoveAllElement(); 153 void SetElementList(LPCWSTR* pElement, int* pType , int iCount); 154 void AddElement(CFX_WideString csValue , int nType); 155 BOOL GetElementSel(CString &csElement); 156 BOOL SelectNext(); 157 BOOL SelectPrevious(); 158 BOOL SelectFirst(); 159 BOOL SelectLast(); 160 BOOL SelectNextPage(); 161 BOOL SelectPreviousPage(); 162 int GetListHeight(); 163 164 protected: 165 // Generated message map functions 166 //{{AFX_MSG(CWndElementList) 167 afx_msg void OnPaint(); 168 afx_msg BOOL OnNcActivate(BOOL bActive); 169 afx_msg void OnSelJSElement(); 170 afx_msg void OnDblclkJSElement(); 171 afx_msg void OnDestroy(); 172 //}}AFX_MSG 173 DECLARE_MESSAGE_MAP() 174 protected: 175 CIconListBox m_ListBox; 176 BOOL m_bBlock; 177 }; 178 179 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 180 // CJS_ConsoleDlg 181 class CJS_ConsoleDlg : public CJS_ResizeDlg 182 { 183 DECLARE_DYNAMIC(CJS_ConsoleDlg) 184 185 public: 186 CJS_ConsoleDlg(CReader_App* pApp, CWnd* pParent); 187 virtual ~CJS_ConsoleDlg(); 188 189 enum { IDD = IDD_JS_CONSOLE }; 190 191 void Create(); 192 193 void AppendConsoleText(const CFX_WideString& swText); 194 void SetConsoleText(const CFX_WideString& swText); 195 CFX_WideString GetConsoleText() const; 196 CFX_WideString GetScriptText() const; 197 198 BOOL ResetElementList(LPCWSTR lpstrRef); 199 IFXJS_Runtime* GetJSRuntime(); 200 201 protected: 202 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 203 204 protected: 205 virtual BOOL OnInitDialog(); 206 virtual void OnCancel(); 207 208 virtual BOOL PreTranslateMessage(MSG* pMsg); 209 210 protected: 211 // Generated message map functions 212 //{{AFX_MSG(CJS_ConsoleDlg) 213 afx_msg void OnBnClickedClear(); 214 afx_msg void OnBnClickedOk(); 215 afx_msg void OnBnClickTips(); 216 afx_msg void OnSizing(UINT nSide, LPRECT lpRect); 217 afx_msg void OnSize(UINT nType, int cx, int cy); 218 afx_msg void OnGetMinMaxInfo(MINMAXINFO *pmmi); 219 afx_msg BOOL OnEraseBkgnd(CDC* pDC); 220 afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); 221 222 afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 223 afx_msg void OnChangeScriptEdit(WPARAM wParam , LPARAM lParam); 224 afx_msg void OnMove(int x , int y); 225 public: 226 virtual int DoModal(); 227 //}}AFX_MSG 228 DECLARE_MESSAGE_MAP() 229 230 public: 231 CGW_LineNumberEdit m_edtSC; 232 BOOL m_bTips; 233 const UINT m_uTextlimited; 234 FX_HGLOBAL m_hGlobal; 235 CReader_App * m_pApp; 236 CWndElementList m_WndElementList; 237 }; 238 239 #endif //_JS_CONSOLE_H_