// Copyright 2016 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 FPDFSDK_CPDFSDK_ANNOT_H_ #define FPDFSDK_CPDFSDK_ANNOT_H_ #include "core/fpdfdoc/cpdf_aaction.h" #include "core/fpdfdoc/cpdf_annot.h" #include "core/fpdfdoc/cpdf_defaultappearance.h" #include "core/fxcrt/observable.h" #include "core/fxcrt/unowned_ptr.h" #include "fpdfsdk/cfx_systemhandler.h" #include "fpdfsdk/cpdfsdk_common.h" #include "fpdfsdk/cpdfsdk_helpers.h" class CFX_Matrix; class CFX_RenderDevice; class CPDF_Page; class CPDF_RenderOptions; class CPDFSDK_BAAnnot; class CPDFSDK_PageView; #ifdef PDF_ENABLE_XFA class CXFA_FFWidget; #endif // PDF_ENABLE_XFA class CPDFSDK_Annot : public Observable { public: explicit CPDFSDK_Annot(CPDFSDK_PageView* pPageView); virtual ~CPDFSDK_Annot(); virtual CPDFSDK_BAAnnot* AsBAAnnot(); #ifdef PDF_ENABLE_XFA virtual bool IsXFAField() const; virtual CXFA_FFWidget* GetXFAWidget() const; #endif // PDF_ENABLE_XFA virtual int GetLayoutOrder() const; virtual CPDF_Annot* GetPDFAnnot() const; virtual CPDF_Annot::Subtype GetAnnotSubtype() const; virtual bool IsSignatureWidget() const; virtual CFX_FloatRect GetRect() const; virtual void SetRect(const CFX_FloatRect& rect); IPDF_Page* GetPage(); // Returns XFA Page if possible, else PDF page. CPDF_Page* GetPDFPage(); #ifdef PDF_ENABLE_XFA CPDFXFA_Page* GetPDFXFAPage(); #endif // PDF_ENABLE_XFA CPDFSDK_PageView* GetPageView() const { return m_pPageView.Get(); } protected: UnownedPtr const m_pPageView; }; inline CPDFSDK_BAAnnot* ToBAAnnot(CPDFSDK_Annot* pAnnot) { return pAnnot ? pAnnot->AsBAAnnot() : nullptr; } #endif // FPDFSDK_CPDFSDK_ANNOT_H_