Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cpdfsdk_interactiveform.h
Go to the documentation of this file.
1// Copyright 2016 The PDFium Authors
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_CPDFSDK_INTERACTIVEFORM_H_
8#define FPDFSDK_CPDFSDK_INTERACTIVEFORM_H_
9
10#include <array>
11#include <functional>
12#include <map>
13#include <memory>
14#include <optional>
15#include <vector>
16
17#include "core/fpdfdoc/cpdf_action.h"
18#include "core/fpdfdoc/cpdf_interactiveform.h"
19#include "core/fxcrt/unowned_ptr.h"
20#include "core/fxge/dib/fx_dib.h"
21#include "fpdfsdk/cpdfsdk_widget.h"
22
23class CPDF_Dictionary;
25class CPDF_FormField;
26class CPDF_Object;
27class CPDFSDK_FormFillEnvironment;
28
29class CPDFSDK_InteractiveForm final
31 public:
32 explicit CPDFSDK_InteractiveForm(CPDFSDK_FormFillEnvironment* pFormFillEnv);
34
36 return m_pInteractiveForm.get();
37 }
38
39 CPDFSDK_Widget* GetWidget(CPDF_FormControl* pControl) const;
40 void GetWidgets(const WideString& sFieldName,
41 std::vector<ObservedPtr<CPDFSDK_Widget>>* widgets) const;
42 void GetWidgets(CPDF_FormField* pField,
43 std::vector<ObservedPtr<CPDFSDK_Widget>>* widgets) const;
44
45 void AddMap(CPDF_FormControl* pControl, CPDFSDK_Widget* pWidget);
46 void RemoveMap(CPDF_FormControl* pControl);
47
48 void EnableCalculate(bool bEnabled);
49 bool IsCalculateEnabled() const;
50
51#ifdef PDF_ENABLE_XFA
52 void XfaEnableCalculate(bool bEnabled);
53 bool IsXfaCalculateEnabled() const;
54 bool IsXfaValidationsEnabled();
55 void XfaSetValidationsEnabled(bool bEnabled);
56 void SynchronizeField(CPDF_FormField* pFormField);
57#endif // PDF_ENABLE_XFA
58
59 bool OnKeyStrokeCommit(CPDF_FormField* pFormField, const WideString& csValue);
60 bool OnValidate(CPDF_FormField* pFormField, const WideString& csValue);
61 void OnCalculate(CPDF_FormField* pFormField);
62 std::optional<WideString> OnFormat(CPDF_FormField* pFormField);
63
64 void ResetFieldAppearance(CPDF_FormField* pFormField,
65 std::optional<WideString> sValue);
66 void UpdateField(CPDF_FormField* pFormField);
67
68 bool DoAction_Hide(const CPDF_Action& action);
69 bool DoAction_SubmitForm(const CPDF_Action& action);
70 void DoAction_ResetForm(const CPDF_Action& action);
71
73 const std::vector<RetainPtr<const CPDF_Object>>& objects) const;
74 bool SubmitFields(const WideString& csDestination,
75 const std::vector<CPDF_FormField*>& fields,
76 bool bIncludeOrExclude,
77 bool bUrlEncoded);
78 bool SubmitForm(const WideString& sDestination);
81 const std::vector<CPDF_FormField*>& fields,
82 bool bIncludeOrExclude);
83
84 bool IsNeedHighLight(FormFieldType fieldType) const;
86 void SetHighlightAlpha(uint8_t alpha) { m_HighlightAlpha = alpha; }
87 uint8_t GetHighlightAlpha() { return m_HighlightAlpha; }
88 void SetHighlightColor(FX_COLORREF clr, FormFieldType fieldType);
91
92 private:
93 // CPDF_InteractiveForm::NotifierIface:
95 const WideString& csValue) override;
96 void AfterValueChange(CPDF_FormField* pField) override;
98 const WideString& csValue) override;
99 void AfterSelectionChange(CPDF_FormField* pField) override;
100 void AfterCheckedStatusChange(CPDF_FormField* pField) override;
101 void AfterFormReset(CPDF_InteractiveForm* pForm) override;
102
103 int GetPageIndexByAnnotDict(CPDF_Document* pDocument,
104 const CPDF_Dictionary* pAnnotDict) const;
105
106 UnownedPtr<CPDFSDK_FormFillEnvironment> const m_pFormFillEnv;
107 std::unique_ptr<CPDF_InteractiveForm> const m_pInteractiveForm;
108 std::map<UnownedPtr<const CPDF_FormControl>,
109 UnownedPtr<CPDFSDK_Widget>,
110 std::less<>>
111 m_Map;
112#ifdef PDF_ENABLE_XFA
113 bool m_bXfaCalculate = true;
114 bool m_bXfaValidationsEnabled = true;
115#endif // PDF_ENABLE_XFA
116 bool m_bCalculate = true;
117 bool m_bBusy = false;
118 uint8_t m_HighlightAlpha = 0;
119 std::array<FX_COLORREF, kFormFieldTypeCount> m_HighlightColor;
120 std::array<bool, kFormFieldTypeCount> m_NeedsHighlight;
121};
122
123#endif // FPDFSDK_CPDFSDK_INTERACTIVEFORM_H_
fxcrt::ByteString ByteString
Definition bytestring.h:180
BorderStyle
CFX_FloatRect GetCenterSquare() const
constexpr CFX_FloatRect(float l, float b, float r, float t)
float Width() const
bool IsEmpty() const
void ScaleFromCenterPoint(float fScale)
CFX_FloatRect & operator=(const CFX_FloatRect &that)=default
float Height() const
CFX_FloatRect GetDeflated(float x, float y) const
constexpr CFX_Matrix(float a1, float b1, float c1, float d1, float e1, float f1)
void SetAsComboBox(std::optional< WideString > sValue)
void SetAsTextField(std::optional< WideString > sValue)
CPDFSDK_AppStream(CPDFSDK_Widget *widget, CPDF_Dictionary *dict)
bool IsNeedHighLight(FormFieldType fieldType) const
std::optional< WideString > OnFormat(CPDF_FormField *pFormField)
std::vector< CPDF_FormField * > GetFieldFromObjects(const std::vector< RetainPtr< const CPDF_Object > > &objects) const
CPDFSDK_Widget * GetWidget(CPDF_FormControl *pControl) const
bool OnKeyStrokeCommit(CPDF_FormField *pFormField, const WideString &csValue)
~CPDFSDK_InteractiveForm() override
void SetHighlightColor(FX_COLORREF clr, FormFieldType fieldType)
void SetAllHighlightColors(FX_COLORREF clr)
void GetWidgets(const WideString &sFieldName, std::vector< ObservedPtr< CPDFSDK_Widget > > *widgets) const
void GetWidgets(CPDF_FormField *pField, std::vector< ObservedPtr< CPDFSDK_Widget > > *widgets) const
void AfterFormReset(CPDF_InteractiveForm *pForm) override
FX_COLORREF GetHighlightColor(FormFieldType fieldType)
void AfterCheckedStatusChange(CPDF_FormField *pField) override
void AfterValueChange(CPDF_FormField *pField) override
bool DoAction_SubmitForm(const CPDF_Action &action)
bool BeforeValueChange(CPDF_FormField *pField, const WideString &csValue) override
ByteString ExportFieldsToFDFTextBuf(const std::vector< CPDF_FormField * > &fields, bool bIncludeOrExclude)
void RemoveMap(CPDF_FormControl *pControl)
bool DoAction_Hide(const CPDF_Action &action)
void ResetFieldAppearance(CPDF_FormField *pFormField, std::optional< WideString > sValue)
void AfterSelectionChange(CPDF_FormField *pField) override
void UpdateField(CPDF_FormField *pFormField)
bool SubmitForm(const WideString &sDestination)
void DoAction_ResetForm(const CPDF_Action &action)
void AddMap(CPDF_FormControl *pControl, CPDFSDK_Widget *pWidget)
CPDFSDK_InteractiveForm(CPDFSDK_FormFillEnvironment *pFormFillEnv)
bool BeforeSelectionChange(CPDF_FormField *pField, const WideString &csValue) override
bool OnValidate(CPDF_FormField *pFormField, const WideString &csValue)
CPDF_InteractiveForm * GetInteractiveForm() const
void SetHighlightAlpha(uint8_t alpha)
bool SubmitFields(const WideString &csDestination, const std::vector< CPDF_FormField * > &fields, bool bIncludeOrExclude, bool bUrlEncoded)
void OnCalculate(CPDF_FormField *pFormField)
RetainPtr< CPDF_Font > GetPDFFont(int32_t nFontIndex) override
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
bool IsModifiedAPStream(const CPDF_Stream *stream) const
RetainPtr< CPDF_Stream > CreateModifiedAPStream(RetainPtr< CPDF_Dictionary > dict)
int GetControlAlignment() const
bool HasMKEntry(const ByteString &csEntry) const
WideString GetDownCaption() const
HighlightingMode GetHighlightingMode() const
WideString GetRolloverCaption() const
CFX_Color GetOriginalBackgroundColor()
CPDF_FormField * GetField() const
WideString GetNormalCaption() const
ByteString GetCheckedAPState() const
CPDF_IconFit GetIconFit() const
CPDF_DefaultAppearance GetDefaultAppearance() const
CFX_Color GetOriginalBorderColor()
int GetTextPosition() const
int GetSelectedIndex(int index) const
int CountOptions() const
WideString GetValue() const
uint32_t GetFieldFlags() const
int GetMaxLen() const
WideString GetOptionLabel(int index) const
int CountSelectedItems() const
int GetTopVisibleIndex() const
bool GetFittingBounds() const
RetainPtr< const CPDF_Dictionary > GetDict() const
uint16_t Word
Definition cpvt_word.h:19
int32_t nFontIndex
Definition cpvt_word.h:26
float fFontSize
Definition cpvt_word.h:27
void SetAt(int32_t nWordIndex)
bool GetWord(CPVT_Word &word) const
bool GetLine(CPVT_Line &line) const
const CPVT_WordPlace & GetAt() const
Iterator * GetIterator()
ByteString GetPDFWordString(int32_t nFontIndex, uint16_t Word, uint16_t SubWord)
IPVT_FontMap * GetFontMap()
static float GetCharArrayAutoFontSize(const CPDF_Font *pFont, const CFX_FloatRect &rcPlate, int32_t nCharArray)
CreateParams(CFX_Timer::HandlerIface *timer_handler, IPWL_FillerNotify *filler_notify, ProviderIface *provider)
Definition cpwl_wnd.cpp:36
virtual ByteString GetPDFFontAlias(int32_t nFontIndex)=0
ByteString & operator+=(const ByteString &str)
ByteString()=default
ByteString & operator=(const ByteString &that)
ByteString & operator=(ByteString &&that) noexcept
WideString & operator=(WideString &&that) noexcept
WideString & operator=(const WideString &that)
#define TEXTPOS_ICON
#define TEXTPOS_RIGHT
#define TEXTPOS_LEFT
#define TEXTPOS_BELOW
#define TEXTPOS_OVERLAID
#define TEXTPOS_ABOVE
FormFieldType
constexpr size_t kFormFieldTypeCount
#define PWS_VISIBLE
Definition cpwl_wnd.h:33
CFX_VTemplate< float > CFX_VectorF
CFX_PTemplate< float > CFX_PointF
CFX_STemplate< float > CFX_SizeF
uint32_t FX_COLORREF
Definition fx_dib.h:42
#define FXSYS_BEZIER
Definition fx_system.h:45
#define FXSYS_PI
Definition fx_system.h:44
#define FXSYS_IsFloatBigger(fa, fb)
Definition fx_system.h:37
#define FXSYS_IsFloatZero(f)
Definition fx_system.h:36
ByteString operator+(const ByteString &str1, const ByteString &str2)
Definition bytestring.h:146
const char kRC[]
const char kIX[]
const char kAC[]
const char kCA[]
const char kI[]
const char kRI[]
constexpr uint32_t kTextPassword
Definition form_flags.h:27
constexpr uint32_t kTextComb
Definition form_flags.h:31
constexpr uint32_t kTextMultiline
Definition form_flags.h:26
fxcrt::ByteStringView ByteStringView
CFX_Color operator/(float fColorDivide) const
CFX_Color operator-(float fColorSub) const
float fColor4
Definition cfx_color.h:58
float fColor3
Definition cfx_color.h:57
Type nColorType
Definition cfx_color.h:54
CFX_Color & operator=(const CFX_Color &that)=default
constexpr CFX_Color(Type type=CFX_Color::Type::kTransparent, float color1=0.0f, float color2=0.0f, float color3=0.0f, float color4=0.0f)
Definition cfx_color.h:27
float fColor2
Definition cfx_color.h:56
float fColor1
Definition cfx_color.h:55
int32_t LineCmp(const CPVT_WordPlace &wp) const
CPWL_Dash(int32_t dash, int32_t gap, int32_t phase)
Definition cpwl_wnd.h:63
int32_t nPhase
Definition cpwl_wnd.h:74
int32_t nDash
Definition cpwl_wnd.h:72
int32_t nGap
Definition cpwl_wnd.h:73
fxcrt::WideString WideString
Definition widestring.h:207