| // Copyright 2014 The PDFium Authors | |
| // 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 FPDFSDK_CPDFSDK_BAANNOT_H_ | |
| #define FPDFSDK_CPDFSDK_BAANNOT_H_ | |
| #include "core/fpdfdoc/cpdf_aaction.h" | |
| #include "core/fpdfdoc/cpdf_action.h" | |
| #include "core/fpdfdoc/cpdf_annot.h" | |
| #include "core/fxcrt/fx_coordinates.h" | |
| #include "core/fxcrt/fx_string.h" | |
| #include "core/fxcrt/unowned_ptr.h" | |
| #include "core/fxge/cfx_renderdevice.h" | |
| #include "fpdfsdk/cpdfsdk_annot.h" | |
| class CFX_Matrix; | |
| class CPDF_Dictionary; | |
| class CPDFSDK_PageView; | |
| class CPDFSDK_BAAnnot : public CPDFSDK_Annot, | |
| CPDFSDK_Annot::UnsafeInputHandlers { | |
| public: | |
| CPDFSDK_BAAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView); | |
| ~CPDFSDK_BAAnnot() override; | |
| // CPDFSDK_Annot: | |
| CPDFSDK_BAAnnot* AsBAAnnot() override; | |
| CPDFSDK_Annot::UnsafeInputHandlers* GetUnsafeInputHandlers() override; | |
| CPDF_Annot::Subtype GetAnnotSubtype() const override; | |
| CFX_FloatRect GetRect() const override; | |
| CPDF_Annot* GetPDFAnnot() const override; | |
| int GetLayoutOrder() const override; | |
| void OnDraw(CFX_RenderDevice* pDevice, | |
| const CFX_Matrix& mtUser2Device, | |
| bool bDrawAnnots) override; | |
| bool DoHitTest(const CFX_PointF& point) override; | |
| CFX_FloatRect GetViewBBox() override; | |
| bool CanUndo() override; | |
| bool CanRedo() override; | |
| bool Undo() override; | |
| bool Redo() override; | |
| WideString GetText() override; | |
| WideString GetSelectedText() override; | |
| void ReplaceSelection(const WideString& text) override; | |
| bool SelectAllText() override; | |
| bool SetIndexSelected(int index, bool selected) override; | |
| bool IsIndexSelected(int index) override; | |
| virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT); | |
| virtual bool IsAppearanceValid(); | |
| virtual void DrawAppearance(CFX_RenderDevice* pDevice, | |
| const CFX_Matrix& mtUser2Device, | |
| CPDF_Annot::AppearanceMode mode); | |
| void SetAnnotName(const WideString& sName); | |
| WideString GetAnnotName() const; | |
| void SetFlags(uint32_t nFlags); | |
| uint32_t GetFlags() const; | |
| void SetAppStateOff(); | |
| ByteString GetAppState() const; | |
| void SetBorderWidth(int nWidth); | |
| int GetBorderWidth() const; | |
| void SetBorderStyle(BorderStyle nStyle); | |
| BorderStyle GetBorderStyle() const; | |
| bool IsVisible() const; | |
| CPDF_Action GetAction() const; | |
| CPDF_AAction GetAAction() const; | |
| CPDF_Dest GetDestination() const; | |
| protected: | |
| const CPDF_Dictionary* GetAnnotDict() const; | |
| RetainPtr<CPDF_Dictionary> GetMutableAnnotDict(); | |
| RetainPtr<CPDF_Dictionary> GetAPDict(); | |
| void ClearCachedAnnotAP(); | |
| bool IsFocusableAnnot(const CPDF_Annot::Subtype& annot_type) const; | |
| private: | |
| // CPDFSDK_Annot::UnsafeInputHandlers: | |
| void OnMouseEnter(Mask<FWL_EVENTFLAG> nFlags) override; | |
| void OnMouseExit(Mask<FWL_EVENTFLAG> nFlags) override; | |
| bool OnLButtonDown(Mask<FWL_EVENTFLAG> nFlags, | |
| const CFX_PointF& point) override; | |
| bool OnLButtonUp(Mask<FWL_EVENTFLAG> nFlags, | |
| const CFX_PointF& point) override; | |
| bool OnLButtonDblClk(Mask<FWL_EVENTFLAG> nFlags, | |
| const CFX_PointF& point) override; | |
| bool OnMouseMove(Mask<FWL_EVENTFLAG> nFlags, | |
| const CFX_PointF& point) override; | |
| bool OnMouseWheel(Mask<FWL_EVENTFLAG> nFlags, | |
| const CFX_PointF& point, | |
| const CFX_Vector& delta) override; | |
| bool OnRButtonDown(Mask<FWL_EVENTFLAG> nFlags, | |
| const CFX_PointF& point) override; | |
| bool OnRButtonUp(Mask<FWL_EVENTFLAG> nFlags, | |
| const CFX_PointF& point) override; | |
| bool OnChar(uint32_t nChar, Mask<FWL_EVENTFLAG> nFlags) override; | |
| bool OnKeyDown(FWL_VKEYCODE nKeyCode, Mask<FWL_EVENTFLAG> nFlags) override; | |
| bool OnSetFocus(Mask<FWL_EVENTFLAG> nFlags) override; | |
| bool OnKillFocus(Mask<FWL_EVENTFLAG> nFlags) override; | |
| void SetOpenState(bool bOpenState); | |
| void UpdateAnnotRects(); | |
| void InvalidateRect(); | |
| bool is_focused_ = false; | |
| UnownedPtr<CPDF_Annot> const m_pAnnot; | |
| }; | |
| #endif // FPDFSDK_CPDFSDK_BAANNOT_H_ |