blob: 3b60b1b1b8cc0dc931381ababaa6c7f4c19476df [file] [log] [blame]
jaepark27362762016-08-11 13:10:39 -07001// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
dsinclair114e46a2016-09-29 17:18:21 -07007#ifndef FPDFSDK_CPDFSDK_BAANNOT_H_
8#define FPDFSDK_CPDFSDK_BAANNOT_H_
jaepark27362762016-08-11 13:10:39 -07009
dsinclair1727aee2016-09-29 13:12:56 -070010#include "core/fpdfdoc/cpdf_aaction.h"
11#include "core/fpdfdoc/cpdf_action.h"
12#include "core/fpdfdoc/cpdf_annot.h"
13#include "core/fpdfdoc/cpdf_defaultappearance.h"
dsinclaira52ab742016-09-29 13:59:29 -070014#include "core/fxcrt/fx_coordinates.h"
15#include "core/fxcrt/fx_string.h"
jaepark27362762016-08-11 13:10:39 -070016#include "fpdfsdk/cfx_systemhandler.h"
dsinclair114e46a2016-09-29 17:18:21 -070017#include "fpdfsdk/cpdfsdk_annot.h"
jaepark27362762016-08-11 13:10:39 -070018
19class CFX_Matrix;
20class CFX_RenderDevice;
21class CPDF_Dictionary;
22class CPDF_RenderOptions;
23class CPDFSDK_PageView;
24
25class CPDFSDK_BAAnnot : public CPDFSDK_Annot {
26 public:
27 CPDFSDK_BAAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView);
28 ~CPDFSDK_BAAnnot() override;
29
30 // CPDFSDK_Annot
jaepark956553e2016-08-31 06:49:27 -070031 CPDF_Annot::Subtype GetAnnotSubtype() const override;
jaepark27362762016-08-11 13:10:39 -070032 void SetRect(const CFX_FloatRect& rect) override;
33 CFX_FloatRect GetRect() const override;
34 CPDF_Annot* GetPDFAnnot() const override;
jaepark27362762016-08-11 13:10:39 -070035
36 CPDF_Dictionary* GetAnnotDict() const;
jaepark35512aa2016-08-29 17:15:08 -070037 CPDF_Annot* GetPDFPopupAnnot() const;
jaepark27362762016-08-11 13:10:39 -070038
Dan Sinclaircb2ea422017-07-19 15:24:49 -040039 CPDF_Dictionary* GetAPDict() const;
40
jaepark27362762016-08-11 13:10:39 -070041 void SetContents(const CFX_WideString& sContents);
42 CFX_WideString GetContents() const;
43
44 void SetAnnotName(const CFX_WideString& sName);
45 CFX_WideString GetAnnotName() const;
46
47 void SetModifiedDate(const FX_SYSTEMTIME& st);
48 FX_SYSTEMTIME GetModifiedDate() const;
49
50 void SetFlags(uint32_t nFlags);
51 uint32_t GetFlags() const;
52
53 void SetAppState(const CFX_ByteString& str);
54 CFX_ByteString GetAppState() const;
55
56 void SetStructParent(int key);
57 int GetStructParent() const;
58
59 void SetBorderWidth(int nWidth);
60 int GetBorderWidth() const;
61
62 void SetBorderStyle(BorderStyle nStyle);
63 BorderStyle GetBorderStyle() const;
64
65 void SetColor(FX_COLORREF color);
66 void RemoveColor();
tsepez4cf55152016-11-02 14:37:54 -070067 bool GetColor(FX_COLORREF& color) const;
jaepark27362762016-08-11 13:10:39 -070068
tsepez4cf55152016-11-02 14:37:54 -070069 bool IsVisible() const;
jaepark27362762016-08-11 13:10:39 -070070
71 CPDF_Action GetAction() const;
72 void SetAction(const CPDF_Action& a);
73 void RemoveAction();
74
75 CPDF_AAction GetAAction() const;
76 void SetAAction(const CPDF_AAction& aa);
77 void RemoveAAction();
78
79 virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT);
tsepez4cf55152016-11-02 14:37:54 -070080 virtual bool IsAppearanceValid();
81 virtual bool IsAppearanceValid(CPDF_Annot::AppearanceMode mode);
jaepark27362762016-08-11 13:10:39 -070082 virtual void DrawAppearance(CFX_RenderDevice* pDevice,
Lei Zhang8a449402017-08-17 15:07:47 -070083 const CFX_Matrix& mtUser2Device,
jaepark27362762016-08-11 13:10:39 -070084 CPDF_Annot::AppearanceMode mode,
85 const CPDF_RenderOptions* pOptions);
86
87 void DrawBorder(CFX_RenderDevice* pDevice,
88 const CFX_Matrix* pUser2Device,
89 const CPDF_RenderOptions* pOptions);
90
91 void ClearCachedAP();
92
jaepark35512aa2016-08-29 17:15:08 -070093 void SetOpenState(bool bState);
94
jaepark27362762016-08-11 13:10:39 -070095 protected:
Tom Sepez797ca5c2017-05-25 12:03:18 -070096 CFX_UnownedPtr<CPDF_Annot> const m_pAnnot;
jaepark27362762016-08-11 13:10:39 -070097};
98
dsinclair114e46a2016-09-29 17:18:21 -070099#endif // FPDFSDK_CPDFSDK_BAANNOT_H_