blob: 2da5723eb4e6a374b4363e4804df225feef758a4 [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;
35 void Annot_OnDraw(CFX_RenderDevice* pDevice,
36 CFX_Matrix* pUser2Device,
37 CPDF_RenderOptions* pOptions) override;
38
39 CPDF_Dictionary* GetAnnotDict() const;
jaepark35512aa2016-08-29 17:15:08 -070040 CPDF_Annot* GetPDFPopupAnnot() const;
jaepark27362762016-08-11 13:10:39 -070041
42 void SetContents(const CFX_WideString& sContents);
43 CFX_WideString GetContents() const;
44
45 void SetAnnotName(const CFX_WideString& sName);
46 CFX_WideString GetAnnotName() const;
47
48 void SetModifiedDate(const FX_SYSTEMTIME& st);
49 FX_SYSTEMTIME GetModifiedDate() const;
50
51 void SetFlags(uint32_t nFlags);
52 uint32_t GetFlags() const;
53
54 void SetAppState(const CFX_ByteString& str);
55 CFX_ByteString GetAppState() const;
56
57 void SetStructParent(int key);
58 int GetStructParent() const;
59
60 void SetBorderWidth(int nWidth);
61 int GetBorderWidth() const;
62
63 void SetBorderStyle(BorderStyle nStyle);
64 BorderStyle GetBorderStyle() const;
65
66 void SetColor(FX_COLORREF color);
67 void RemoveColor();
tsepez4cf55152016-11-02 14:37:54 -070068 bool GetColor(FX_COLORREF& color) const;
jaepark27362762016-08-11 13:10:39 -070069
tsepez4cf55152016-11-02 14:37:54 -070070 bool IsVisible() const;
jaepark27362762016-08-11 13:10:39 -070071
72 CPDF_Action GetAction() const;
73 void SetAction(const CPDF_Action& a);
74 void RemoveAction();
75
76 CPDF_AAction GetAAction() const;
77 void SetAAction(const CPDF_AAction& aa);
78 void RemoveAAction();
79
80 virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT);
tsepez4cf55152016-11-02 14:37:54 -070081 virtual bool IsAppearanceValid();
82 virtual bool IsAppearanceValid(CPDF_Annot::AppearanceMode mode);
jaepark27362762016-08-11 13:10:39 -070083 virtual void DrawAppearance(CFX_RenderDevice* pDevice,
84 const CFX_Matrix* pUser2Device,
85 CPDF_Annot::AppearanceMode mode,
86 const CPDF_RenderOptions* pOptions);
87
88 void DrawBorder(CFX_RenderDevice* pDevice,
89 const CFX_Matrix* pUser2Device,
90 const CPDF_RenderOptions* pOptions);
91
92 void ClearCachedAP();
93
94 void WriteAppearance(const CFX_ByteString& sAPType,
95 const CFX_FloatRect& rcBBox,
96 const CFX_Matrix& matrix,
97 const CFX_ByteString& sContents,
98 const CFX_ByteString& sAPState = "");
99
jaepark35512aa2016-08-29 17:15:08 -0700100 void SetOpenState(bool bState);
101
jaepark27362762016-08-11 13:10:39 -0700102 protected:
tsepezd805eec2017-01-11 14:03:54 -0800103 CPDF_Annot* const m_pAnnot;
jaepark27362762016-08-11 13:10:39 -0700104};
105
dsinclair114e46a2016-09-29 17:18:21 -0700106#endif // FPDFSDK_CPDFSDK_BAANNOT_H_