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