// 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_ |