blob: 24b6ff044ea65c5c7b8389e525e60da402765298 [file] [log] [blame]
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -07001// Copyright 2016 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
7#ifndef FPDFSDK_IPDFSDK_ANNOTHANDLER_H_
8#define FPDFSDK_IPDFSDK_ANNOTHANDLER_H_
9
Haibo Huang49cc9302020-04-27 16:14:24 -070010#include <memory>
11
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070012#include "core/fxcrt/fx_coordinates.h"
13#include "fpdfsdk/cpdfsdk_annot.h"
14
15class CFX_Matrix;
16class CFX_RenderDevice;
17class CPDF_Annot;
Haibo Huang49cc9302020-04-27 16:14:24 -070018class CPDFSDK_FormFillEnvironment;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070019class CPDFSDK_PageView;
20
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070021class IPDFSDK_AnnotHandler {
22 public:
Haibo Huang49cc9302020-04-27 16:14:24 -070023 virtual ~IPDFSDK_AnnotHandler() = default;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070024
Haibo Huang49cc9302020-04-27 16:14:24 -070025 virtual void SetFormFillEnvironment(
26 CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070027 virtual bool CanAnswer(CPDFSDK_Annot* pAnnot) = 0;
28 virtual CPDFSDK_Annot* NewAnnot(CPDF_Annot* pAnnot,
29 CPDFSDK_PageView* pPage) = 0;
Haibo Huang49cc9302020-04-27 16:14:24 -070030 virtual void ReleaseAnnot(std::unique_ptr<CPDFSDK_Annot> pAnnot) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070031 virtual CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView,
32 CPDFSDK_Annot* pAnnot) = 0;
Haibo Huang49cc9302020-04-27 16:14:24 -070033 virtual WideString GetText(CPDFSDK_Annot* pAnnot) = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070034 virtual WideString GetSelectedText(CPDFSDK_Annot* pAnnot) = 0;
35 virtual void ReplaceSelection(CPDFSDK_Annot* pAnnot,
36 const WideString& text) = 0;
Haibo Huang49cc9302020-04-27 16:14:24 -070037 virtual bool CanUndo(CPDFSDK_Annot* pAnnot) = 0;
38 virtual bool CanRedo(CPDFSDK_Annot* pAnnot) = 0;
39 virtual bool Undo(CPDFSDK_Annot* pAnnot) = 0;
40 virtual bool Redo(CPDFSDK_Annot* pAnnot) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070041 virtual bool HitTest(CPDFSDK_PageView* pPageView,
42 CPDFSDK_Annot* pAnnot,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070043 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070044 virtual void OnDraw(CPDFSDK_PageView* pPageView,
45 CPDFSDK_Annot* pAnnot,
46 CFX_RenderDevice* pDevice,
Haibo Huang49cc9302020-04-27 16:14:24 -070047 const CFX_Matrix& mtUser2Device,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070048 bool bDrawAnnots) = 0;
49 virtual void OnLoad(CPDFSDK_Annot* pAnnot) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070050 virtual void OnMouseEnter(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070051 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070052 uint32_t nFlag) = 0;
53 virtual void OnMouseExit(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070054 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070055 uint32_t nFlag) = 0;
56 virtual bool OnLButtonDown(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070057 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070058 uint32_t nFlags,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070059 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070060 virtual bool OnLButtonUp(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070061 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070062 uint32_t nFlags,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070063 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070064 virtual bool OnLButtonDblClk(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070065 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070066 uint32_t nFlags,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070067 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070068 virtual bool OnMouseMove(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070069 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070070 uint32_t nFlags,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070071 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070072 virtual bool OnMouseWheel(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070073 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070074 uint32_t nFlags,
75 short zDelta,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070076 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070077 virtual bool OnRButtonDown(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070078 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070079 uint32_t nFlags,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070080 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070081 virtual bool OnRButtonUp(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070082 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070083 uint32_t nFlags,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070084 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070085 virtual bool OnRButtonDblClk(CPDFSDK_PageView* pPageView,
Haibo Huang49cc9302020-04-27 16:14:24 -070086 ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070087 uint32_t nFlags,
Philip P. Moltmann33357ca2017-05-11 09:25:13 -070088 const CFX_PointF& point) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070089 virtual bool OnChar(CPDFSDK_Annot* pAnnot,
90 uint32_t nChar,
91 uint32_t nFlags) = 0;
92 virtual bool OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) = 0;
93 virtual bool OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) = 0;
Haibo Huang49cc9302020-04-27 16:14:24 -070094 virtual bool OnSetFocus(ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070095 uint32_t nFlag) = 0;
Haibo Huang49cc9302020-04-27 16:14:24 -070096 virtual bool OnKillFocus(ObservedPtr<CPDFSDK_Annot>* pAnnot,
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070097 uint32_t nFlag) = 0;
Haibo Huang49cc9302020-04-27 16:14:24 -070098 virtual bool SetIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot,
99 int index,
100 bool selected) = 0;
101 virtual bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot,
102 int index) = 0;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -0700103};
104
105#endif // FPDFSDK_IPDFSDK_ANNOTHANDLER_H_