| // 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 _PWL_EDITCTRL_H_ | |
| #define _PWL_EDITCTRL_H_ | |
| enum PWL_EDIT_ALIGNFORMAT_H | |
| { | |
| PEAH_LEFT = 0, | |
| PEAH_MIDDLE, | |
| PEAH_RIGHT | |
| }; | |
| enum PWL_EDIT_ALIGNFORMAT_V | |
| { | |
| PEAV_TOP = 0, | |
| PEAV_CENTER, | |
| PEAV_BOTTOM | |
| }; | |
| class IPWL_Edit_Notify; | |
| class CPWL_EditCtrl; | |
| class CPWL_Caret; | |
| class IFX_Edit; | |
| class CPWL_Edit; | |
| class IPWL_Edit_Notify | |
| { | |
| public: | |
| //when the position of caret is changed in edit | |
| virtual void OnCaretMove(FX_INT32 x1, FX_INT32 y1, FX_INT32 x2, FX_INT32 y2) {} | |
| virtual void OnContentChange(const CPDF_Rect& rcContent){} | |
| //OprType: 0 InsertWord | |
| //1 InsertReturn | |
| //2 BackSpace | |
| //3 Delete | |
| //4 Clear | |
| //5 InsertText | |
| //6 SetText | |
| virtual void OnInsertWord(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace){} | |
| virtual void OnInsertReturn(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace){} | |
| virtual void OnBackSpace(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace){} | |
| virtual void OnDelete(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace){} | |
| virtual void OnClear(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace){} | |
| virtual void OnInsertText(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace){} | |
| virtual void OnSetText(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace){} | |
| virtual void OnAddUndo(CPWL_Edit* pEdit) {} | |
| }; | |
| class PWL_CLASS CPWL_EditCtrl : public CPWL_Wnd, public IFX_Edit_Notify | |
| { | |
| friend class CPWL_Edit_Notify; | |
| public: | |
| CPWL_EditCtrl(); | |
| virtual ~CPWL_EditCtrl(); | |
| public: | |
| virtual void OnCreate(PWL_CREATEPARAM & cp); | |
| virtual void OnCreated(); | |
| virtual FX_BOOL OnKeyDown(FX_WORD nChar, FX_DWORD nFlag); | |
| virtual FX_BOOL OnChar(FX_WORD nChar, FX_DWORD nFlag); | |
| virtual FX_BOOL OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag); | |
| virtual FX_BOOL OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag); | |
| virtual FX_BOOL OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag); | |
| virtual void OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, FX_INTPTR wParam = 0, FX_INTPTR lParam = 0); | |
| virtual void CreateChildWnd(const PWL_CREATEPARAM & cp); | |
| virtual void RePosChildWnd(); | |
| virtual void SetFontSize(FX_FLOAT fFontSize); | |
| virtual FX_FLOAT GetFontSize() const; | |
| public: | |
| virtual void SetText(FX_LPCWSTR csText); | |
| virtual void CopyText(); | |
| virtual void PasteText(); | |
| virtual void CutText(); | |
| CPDF_Rect GetContentRect() const; | |
| void GetCaretPos(FX_INT32& x, FX_INT32& y) const; | |
| FX_BOOL IsModified() const; | |
| CFX_WideString GetText() const; | |
| void SetSel(FX_INT32 nStartChar,FX_INT32 nEndChar); | |
| void GetSel(FX_INT32 & nStartChar, FX_INT32 & nEndChar ) const; | |
| void GetTextRange(const CPDF_Rect& rect, FX_INT32 & nStartChar, FX_INT32 & nEndChar) const; | |
| CFX_WideString GetText(FX_INT32 & nStartChar, FX_INT32 & nEndChar) const; | |
| void Clear(); | |
| void SelectAll(); | |
| FX_INT32 GetCaret() const; | |
| void SetCaret(FX_INT32 nPos); | |
| FX_INT32 GetTotalWords() const; | |
| void Paint(); | |
| void EnableRefresh(FX_BOOL bRefresh); | |
| CPDF_Point GetScrollPos() const; | |
| void SetScrollPos(const CPDF_Point& point); | |
| void SetEditNotify(IPWL_Edit_Notify* pNotify) {m_pEditNotify = pNotify;} | |
| void SetCharSet(FX_BYTE nCharSet){m_nCharSet = nCharSet;} | |
| FX_INT32 GetCharSet() const; | |
| void SetCodePage(FX_INT32 nCodePage){m_nCodePage = nCodePage;} | |
| FX_INT32 GetCodePage() const {return m_nCodePage;} | |
| CPDF_Font * GetCaretFont() const; | |
| FX_FLOAT GetCaretFontSize() const; | |
| FX_BOOL CanUndo() const; | |
| FX_BOOL CanRedo() const; | |
| void Redo(); | |
| void Undo(); | |
| void SetReadyToInput(); | |
| protected: | |
| virtual void ShowVScrollBar(FX_BOOL bShow); | |
| virtual void InsertWord(FX_WORD word, FX_INT32 nCharset); | |
| virtual void InsertReturn(); | |
| virtual void InsertText(FX_LPCWSTR csText); | |
| virtual void SetCursor(); | |
| FX_BOOL IsWndHorV(); | |
| void Delete(); | |
| void Backspace(); | |
| protected: | |
| void GetCaretInfo(CPDF_Point & ptHead, CPDF_Point & ptFoot) const; | |
| void SetCaret(FX_BOOL bVisible, const CPDF_Point & ptHead, const CPDF_Point & ptFoot); | |
| void SetEditCaret(FX_BOOL bVisible); | |
| protected: | |
| virtual void IOnSetScrollInfoX(FX_FLOAT fPlateMin, FX_FLOAT fPlateMax, | |
| FX_FLOAT fContentMin, FX_FLOAT fContentMax, | |
| FX_FLOAT fSmallStep, FX_FLOAT fBigStep){} | |
| virtual void IOnSetScrollInfoY(FX_FLOAT fPlateMin, FX_FLOAT fPlateMax, | |
| FX_FLOAT fContentMin, FX_FLOAT fContentMax, | |
| FX_FLOAT fSmallStep, FX_FLOAT fBigStep); | |
| virtual void IOnSetScrollPosX(FX_FLOAT fx){} | |
| virtual void IOnSetScrollPosY(FX_FLOAT fy); | |
| virtual void IOnSetCaret(FX_BOOL bVisible,const CPDF_Point & ptHead,const CPDF_Point & ptFoot, const CPVT_WordPlace& place); | |
| virtual void IOnCaretChange(const CPVT_SecProps & secProps, const CPVT_WordProps & wordProps); | |
| virtual void IOnContentChange(const CPDF_Rect& rcContent); | |
| virtual void IOnInvalidateRect(CPDF_Rect * pRect); | |
| private: | |
| void CreateEditCaret(const PWL_CREATEPARAM & cp); | |
| protected: | |
| IFX_Edit* m_pEdit; | |
| CPWL_Caret* m_pEditCaret; | |
| FX_BOOL m_bMouseDown; | |
| IPWL_Edit_Notify* m_pEditNotify; | |
| private: | |
| FX_INT32 m_nCharSet; | |
| FX_INT32 m_nCodePage; | |
| }; | |
| #endif | |