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