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
cfxjs_engine.h
Go to the documentation of this file.
1// Copyright 2014 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// CFXJS_ENGINE is a layer that makes it easier to define native objects in V8,
8// but has no knowledge of PDF-specific native objects. It could in theory be
9// used to implement other sets of native objects.
10
11// PDFium code should include this file rather than including V8 headers
12// directly.
13
14#ifndef FXJS_CFXJS_ENGINE_H_
15#define FXJS_CFXJS_ENGINE_H_
16
17#include <functional>
18#include <map>
19#include <memory>
20#include <utility>
21#include <vector>
22
23#include "core/fxcrt/widestring.h"
24#include "fxjs/cfx_v8.h"
25#include "fxjs/ijs_runtime.h"
26#include "v8/include/v8-forward.h"
27#include "v8/include/v8-function-callback.h"
28#include "v8/include/v8-persistent-handle.h"
29#include "v8/include/v8-template.h"
30
32class CJS_Object;
33class V8TemplateMap;
34
36 FXJSOBJTYPE_DYNAMIC = 0, // Created by native method and returned to JS.
37 FXJSOBJTYPE_STATIC, // Created by init and hung off of global object.
38 FXJSOBJTYPE_GLOBAL, // The global object itself (may only appear once).
39};
40
42 public:
43 // Hook for XFA's data, when present.
45 public:
46 virtual ~ExtensionIface() = default;
47 };
48
50
51 static void SetUp(v8::Isolate* pIsolate);
52 static FXJS_PerIsolateData* Get(v8::Isolate* pIsolate);
53
54 uint32_t CurrentMaxObjDefinitionID() const;
55 CFXJS_ObjDefinition* ObjDefinitionForID(uint32_t id) const;
56 uint32_t AssignIDForObjDefinition(std::unique_ptr<CFXJS_ObjDefinition> pDefn);
57 V8TemplateMap* GetDynamicObjsMap() { return m_pDynamicObjsMap.get(); }
58 ExtensionIface* GetExtension() { return m_pExtension.get(); }
59 void SetExtension(std::unique_ptr<ExtensionIface> extension) {
60 m_pExtension = std::move(extension);
61 }
62
63 private:
64 explicit FXJS_PerIsolateData(v8::Isolate* pIsolate);
65
66 const wchar_t* const m_Tag; // Raw, always a literal.
67 std::vector<std::unique_ptr<CFXJS_ObjDefinition>> m_ObjectDefnArray;
68 std::unique_ptr<V8TemplateMap> m_pDynamicObjsMap;
69 std::unique_ptr<ExtensionIface> m_pExtension;
70};
71
72void FXJS_Initialize(unsigned int embedderDataSlot, v8::Isolate* pIsolate);
73void FXJS_Release();
74
75// Gets the global isolate set by FXJS_Initialize(), or makes a new one each
76// time if there is no such isolate. Returns true if a new isolate had to be
77// created.
78bool FXJS_GetIsolate(v8::Isolate** pResultIsolate);
79
80// Get the global isolate's ref count.
82
83class CFXJS_Engine : public CFX_V8 {
84 public:
85 explicit CFXJS_Engine(v8::Isolate* pIsolate);
86 ~CFXJS_Engine() override;
87
88 using Constructor = std::function<void(CFXJS_Engine* pEngine,
89 v8::Local<v8::Object> obj,
90 v8::Local<v8::Object> proxy)>;
91 using Destructor = std::function<void(v8::Local<v8::Object> obj)>;
92
93 static uint32_t GetObjDefnID(v8::Local<v8::Object> pObj);
94 static CJS_Object* GetObjectPrivate(v8::Isolate* pIsolate,
95 v8::Local<v8::Object> pObj);
96 static void SetObjectPrivate(v8::Local<v8::Object> pObj,
97 std::unique_ptr<CJS_Object> p);
98 static void FreeObjectPrivate(v8::Local<v8::Object> pObj);
99
100 // Always returns a valid (i.e. non-zero), newly-created objDefnID.
101 uint32_t DefineObj(const char* sObjName,
102 FXJSOBJTYPE eObjType,
103 Constructor pConstructor,
104 Destructor pDestructor);
105
106 void DefineObjMethod(uint32_t nObjDefnID,
107 const char* sMethodName,
108 v8::FunctionCallback pMethodCall);
109 void DefineObjProperty(uint32_t nObjDefnID,
110 const char* sPropName,
111 v8::AccessorGetterCallback pPropGet,
112 v8::AccessorSetterCallback pPropPut);
114 uint32_t nObjDefnID,
115 v8::GenericNamedPropertyQueryCallback pPropQurey,
116 v8::GenericNamedPropertyGetterCallback pPropGet,
117 v8::GenericNamedPropertySetterCallback pPropPut,
118 v8::GenericNamedPropertyDeleterCallback pPropDel,
119 v8::GenericNamedPropertyEnumeratorCallback pPropEnum);
120 void DefineObjConst(uint32_t nObjDefnID,
121 const char* sConstName,
122 v8::Local<v8::Value> pDefault);
123 void DefineGlobalMethod(const char* sMethodName,
124 v8::FunctionCallback pMethodCall);
125 void DefineGlobalConst(const wchar_t* sConstName,
126 v8::FunctionCallback pConstGetter);
127
128 // Called after FXJS_Define* calls made.
129 void InitializeEngine();
130 void ReleaseEngine();
131
132 // Called after FXJS_InitializeEngine call made.
133 absl::optional<IJS_Runtime::JS_Error> Execute(const WideString& script);
134
136 v8::Local<v8::Object> NewFXJSBoundObject(uint32_t nObjDefnID,
137 FXJSOBJTYPE type);
138 void Error(const WideString& message);
139
141
142 v8::Local<v8::Array> GetConstArray(const WideString& name);
143 void SetConstArray(const WideString& name, v8::Local<v8::Array> array);
144
145 protected:
146 CFXJS_Engine();
147
148 private:
149 v8::Global<v8::Context> m_V8Context;
152};
153
154#endif // FXJS_CFXJS_ENGINE_H_
BC_TEXT_LOC
Definition BC_Library.h:12
BC_TYPE
Definition BC_Library.h:25
void BC_Library_Init()
void BC_Library_Destroy()
BC_CHAR_ENCODING
Definition BC_Library.h:20
size_t FXJS_GlobalIsolateRefCount()
void FXJS_Release()
FXJSOBJTYPE
@ FXJSOBJTYPE_DYNAMIC
@ FXJSOBJTYPE_STATIC
@ FXJSOBJTYPE_GLOBAL
static void Destroy()
static void Create()
virtual CFWL_WidgetMgr::AdapterIface * GetWidgetMgrAdapter()=0
virtual cppgc::Heap * GetHeap()=0
virtual ~AdapterIface()=default
virtual CFX_Timer::HandlerIface * GetTimerHandler()=0
virtual IFWL_ThemeProvider * GetThemeProvider()=0
CFWL_NoteDriver * GetNoteDriver() const
Definition cfwl_app.h:47
CFWL_WidgetMgr * GetWidgetMgr() const
Definition cfwl_app.h:46
IFWL_ThemeProvider * GetThemeProvider() const
Definition cfwl_app.h:42
CFX_Timer::HandlerIface * GetTimerHandler() const
Definition cfwl_app.h:39
CFWL_WidgetMgr::AdapterIface * GetWidgetMgrAdapter() const
Definition cfwl_app.h:36
cppgc::Heap * GetHeap() const
Definition cfwl_app.h:45
virtual bool GetPopupPos(CFWL_Widget *pWidget, float fMinHeight, float fMaxHeight, const CFX_RectF &rtAnchor, CFX_RectF *pPopupRect)=0
virtual ~AdapterIface()=default
virtual void RepaintWidget(CFWL_Widget *pWidget)=0
void OnProcessMessageToForm(CFWL_Message *pMessage)
CFWL_Widget * GetNextSiblingWidget(CFWL_Widget *pWidget) const
CFWL_Widget * GetWidgetAtPoint(CFWL_Widget *pParent, const CFX_PointF &point) const
CFWL_Widget * GetDefaultButton(CFWL_Widget *pParent) const
void OnDrawWidget(CFWL_Widget *pWidget, CFGAS_GEGraphics *pGraphics, const CFX_Matrix &matrix)
CFWL_Widget * GetFirstChildWidget(CFWL_Widget *pWidget) const
void InsertWidget(CFWL_Widget *pParent, CFWL_Widget *pChild)
void GetAdapterPopupPos(CFWL_Widget *pWidget, float fMinHeight, float fMaxHeight, const CFX_RectF &rtAnchor, CFX_RectF *pPopupRect) const
void RepaintWidget(CFWL_Widget *pWidget, const CFX_RectF &pRect)
CFWL_Widget * GetParentWidget(const CFWL_Widget *pWidget) const
void RemoveWidget(CFWL_Widget *pWidget)
friend class EventParamScope
void DefineObjMethod(uint32_t nObjDefnID, const char *sMethodName, v8::FunctionCallback pMethodCall)
void DefineObjProperty(uint32_t nObjDefnID, const char *sPropName, v8::AccessorGetterCallback pPropGet, v8::AccessorSetterCallback pPropPut)
v8::Local< v8::Context > GetV8Context()
void DefineObjConst(uint32_t nObjDefnID, const char *sConstName, v8::Local< v8::Value > pDefault)
~CFXJS_Engine() override
v8::Local< v8::Object > GetThisObj()
void DefineObjAllProperties(uint32_t nObjDefnID, v8::GenericNamedPropertyQueryCallback pPropQurey, v8::GenericNamedPropertyGetterCallback pPropGet, v8::GenericNamedPropertySetterCallback pPropPut, v8::GenericNamedPropertyDeleterCallback pPropDel, v8::GenericNamedPropertyEnumeratorCallback pPropEnum)
absl::optional< IJS_Runtime::JS_Error > Execute(const WideString &script)
void SetConstArray(const WideString &name, v8::Local< v8::Array > array)
v8::Local< v8::Array > GetConstArray(const WideString &name)
static void SetObjectPrivate(v8::Local< v8::Object > pObj, std::unique_ptr< CJS_Object > p)
uint32_t DefineObj(const char *sObjName, FXJSOBJTYPE eObjType, Constructor pConstructor, Destructor pDestructor)
void Error(const WideString &message)
v8::Local< v8::Object > NewFXJSBoundObject(uint32_t nObjDefnID, FXJSOBJTYPE type)
void InitializeEngine()
void DefineGlobalConst(const wchar_t *sConstName, v8::FunctionCallback pConstGetter)
static uint32_t GetObjDefnID(v8::Local< v8::Object > pObj)
static void FreeObjectPrivate(v8::Local< v8::Object > pObj)
void DefineGlobalMethod(const char *sMethodName, v8::FunctionCallback pMethodCall)
v8::Local< v8::Value > MaybeCoerceToNumber(v8::Local< v8::Value > value)
void BeginBlock()
Definition cjs_runtime.h:47
v8::Local< v8::Value > GetValueByNameFromGlobalObject(ByteStringView utf8Name)
bool AddEventToSet(const FieldEvent &event)
absl::optional< IJS_Runtime::JS_Error > ExecuteScript(const WideString &script) override
CJS_Runtime(CPDFSDK_FormFillEnvironment *pFormFillEnv)
~CJS_Runtime() override
CFX_Timer::HandlerIface * GetTimerHandler() const
void ReleaseEventContext(IJS_EventContext *pContext) override
void RemoveEventFromSet(const FieldEvent &event)
CJS_Runtime * AsCJSRuntime() override
void EndBlock()
Definition cjs_runtime.h:48
bool SetValueByNameInGlobalObject(ByteStringView utf8Name, v8::Local< v8::Value > pValue)
CJS_EventContext * GetCurrentEventContext() const
bool IsBlocking() const
Definition cjs_runtime.h:49
IJS_EventContext * NewEventContext() override
CPDFSDK_FormFillEnvironment * GetFormFillEnv() const override
WideString GetPlatform() override
RetainPtr< IFX_SeekableReadStream > DownloadURL(const WideString &wsURL) override
bool PostRequestURL(const WideString &wsURL, const WideString &wsData, const WideString &wsContentType, const WideString &wsEncode, const WideString &wsHeader, WideString &wsResponse) override
RetainPtr< CPDFXFA_Page > GetXFAPage(CXFA_FFPageView *pPage) const
void SetOriginalPageCount(int count)
FormType GetFormType() const
WideString GetAppTitle() const override
WideString Response(const WideString &wsQuestion, const WideString &wsTitle, const WideString &wsDefaultAnswer, bool bMark) override
bool SaveDatasetsPackage(const RetainPtr< IFX_SeekableStream > &pStream)
~CPDFXFA_Context() override
void SetFormFillEnv(CPDFSDK_FormFillEnvironment *pFormFillEnv)
bool PutRequestURL(const WideString &wsURL, const WideString &wsData, const WideString &wsEncode) override
void SendPreSaveToXFADoc(std::vector< RetainPtr< IFX_SeekableStream > > *fileList)
CPDFSDK_FormFillEnvironment * GetFormFillEnv() const
CXFA_FFDocView * GetXFADocView() const
WideString GetAppName() override
bool SaveFormPackage(const RetainPtr< IFX_SeekableStream > &pStream)
CFX_Timer::HandlerIface * GetTimerHandler() const override
CXFA_FFDoc * GetXFADoc()
void Beep(uint32_t dwType) override
bool ContainsExtensionForegroundForm() const override
CPDFXFA_Context(CPDF_Document *pPDFDoc)
RetainPtr< CPDFXFA_Page > GetOrCreateXFAPage(int page_index)
bool ContainsExtensionForm() const override
int GetOriginalPageCount() const
WideString GetLanguage() override
RetainPtr< CPDFXFA_Page > GetXFAPage(int page_index)
void DeletePage(int page_index) override
LoadStatus GetLoadStatus() const
bool ContainsExtensionFullForm() const override
int GetPageCount() const override
cppgc::Heap * GetGCHeap() const override
CFX_XMLDocument * GetXMLDoc()
int32_t MsgBox(const WideString &wsMessage, const WideString &wsTitle, uint32_t dwIconType, uint32_t dwButtonType) override
CPDF_Document * GetPDFDoc() const
bool IsValidationsEnabled(const CXFA_FFDoc *hDoc) const override
void DisplayCaret(CXFA_FFWidget *hWidget, bool bVisible, const CFX_RectF *pRtAnchor) override
~CPDFXFA_DocEnvironment() override
void InvalidateRect(CXFA_FFPageView *pPageView, const CFX_RectF &rt) override
void SetCalculationsEnabled(CXFA_FFDoc *hDoc, bool bEnabled) override
bool IsCalculationsEnabled(const CXFA_FFDoc *hDoc) const override
void WidgetPostAdd(CXFA_FFWidget *hWidget) override
void Print(CXFA_FFDoc *hDoc, int32_t nStartPage, int32_t nEndPage, Mask< XFA_PrintOpt > dwOptions) override
void ExportData(CXFA_FFDoc *hDoc, const WideString &wsFilePath, bool bXDP) override
RetainPtr< IFX_SeekableReadStream > OpenLinkedFile(CXFA_FFDoc *hDoc, const WideString &wsLink) override
int32_t GetCurrentPage(const CXFA_FFDoc *hDoc) const override
void SetFocusWidget(CXFA_FFDoc *hDoc, CXFA_FFWidget *hWidget) override
FX_ARGB GetHighlightColor(const CXFA_FFDoc *hDoc) const override
void SetCurrentPage(CXFA_FFDoc *hDoc, int32_t iCurPage) override
IJS_Runtime * GetIJSRuntime(const CXFA_FFDoc *hDoc) const override
CFX_XMLDocument * GetXMLDoc() const override
void SetChangeMark(CXFA_FFDoc *hDoc) override
void GotoURL(CXFA_FFDoc *hDoc, const WideString &bsURL) override
void SetTitle(CXFA_FFDoc *hDoc, const WideString &wsTitle) override
int32_t CountPages(const CXFA_FFDoc *hDoc) const override
bool PopupMenu(CXFA_FFWidget *hWidget, const CFX_PointF &ptPopup) override
void SetValidationsEnabled(CXFA_FFDoc *hDoc, bool bEnabled) override
void OnPageViewEvent(CXFA_FFPageView *pPageView, CXFA_FFDoc::PageViewEvent eEvent) override
WideString GetTitle(const CXFA_FFDoc *hDoc) const override
void WidgetPreRemove(CXFA_FFWidget *hWidget) override
bool GetPopupPos(CXFA_FFWidget *hWidget, float fMinPopup, float fMaxPopup, const CFX_RectF &rtAnchor, CFX_RectF *pPopupRect) override
CPDFXFA_DocEnvironment(CPDFXFA_Context *)
absl::optional< CFX_PointF > PageToDevice(const FX_RECT &rect, int rotate, const CFX_PointF &page_point) const override
CXFA_FFPageView * GetXFAPageView() const
CPDF_Document * GetDocument() const override
CFX_Matrix GetDisplayMatrix(const FX_RECT &rect, int iRotate) const override
CPDFXFA_Page * AsXFAPage() override
CPDF_Page * AsPDFPage() override
float GetPageWidth() const override
~CPDFXFA_Page() override
CPDFSDK_Annot * GetLastXFAAnnot(CPDFSDK_PageView *page_view) const
int GetPageIndex() const
void SetXFAPageViewIndex(int index)
CPDFSDK_Annot * GetPrevXFAAnnot(CPDFSDK_Annot *pSDKAnnot) const
CPDFSDK_Annot * GetFirstXFAAnnot(CPDFSDK_PageView *page_view) const
CPDFSDK_Annot * GetNextXFAAnnot(CPDFSDK_Annot *pSDKAnnot) const
absl::optional< CFX_PointF > DeviceToPage(const FX_RECT &rect, int rotate, const CFX_PointF &device_point) const override
void DrawFocusAnnot(CFX_RenderDevice *pDevice, CPDFSDK_Annot *pAnnot, const CFX_Matrix &mtUser2Device, const FX_RECT &rtClip)
int HasFormFieldAtPoint(const CFX_PointF &point) const
float GetPageHeight() const override
void LoadPDFPageFromDict(RetainPtr< CPDF_Dictionary > pPageDict)
const CPDF_Dictionary * GetRoot() const
void SetDocument(CXFA_Document *pDocument)
virtual void Trace(cppgc::Visitor *visitor) const
CXFA_Document * GetDocument() const
cppgc::Heap * GetHeap() const
CXFA_Node * GetNodeByID(CXFA_Node *pRoot, WideStringView wsID) const
CXFA_FFNotify * GetNotify() const
void Trace(cppgc::Visitor *visitor) const
CFXJSE_Engine * InitScriptContext(CJS_Runtime *fxjs_runtime)
CXFA_Node * DataMerge_CopyContainer(CXFA_Node *pTemplateNode, CXFA_Node *pFormNode, CXFA_Node *pDataScope, bool bOneInstance, bool bDataMerge, bool bUpLevel)
void set_is_strict_scoping()
CXFA_LocaleMgr * GetLocaleMgr()
XFA_VERSION RecognizeXFAVersionNumber(const WideString &wsTemplateNS)
void AppendPendingNode(CXFA_Node *node)
CXFA_Node * GetNotBindNode(pdfium::span< cppgc::Member< CXFA_Object > > arrayNodes) const
void DataMerge_UpdateBindingRelations(CXFA_Node *pFormUpdateRoot)
bool HasScriptContext() const
void SetRoot(CXFA_Node *pNewRoot)
void set_is_scripting()
CXFA_Node * CreateNode(XFA_PacketType packet, XFA_Element eElement)
size_t GetPendingNodesCount() const
XFA_VERSION GetCurVersionMode() const
CFXJSE_Engine * GetScriptContext() const
bool is_scripting() const
CXFA_Object * GetXFAObject(XFA_HashCode wsNodeNameHash)
void SetPendingNodesUnusedAndUnbound()
CXFA_NodeOwner * GetNodeOwner()
void RegisterGlobalBinding(uint32_t dwNameHash, CXFA_Node *pDataNode)
CXFA_Node * GetPendingNodeAtIndex(size_t index) const
FormType GetFormType() const
CXFA_Node * GetGlobalBinding(uint32_t dwNameHash)
LayoutProcessorIface * GetLayoutProcessor() const
CXFA_Node * GetRoot() const
bool is_strict_scoping() const
CXFA_EventParam(XFA_EVENTTYPE type)
virtual WideString GetAppName()=0
virtual ~CallbackIface()=default
virtual WideString GetAppTitle() const =0
virtual WideString GetPlatform()=0
virtual void Beep(uint32_t dwType)=0
virtual int32_t MsgBox(const WideString &wsMessage, const WideString &wsTitle, uint32_t dwIconType, uint32_t dwButtonType)=0
virtual CFX_Timer::HandlerIface * GetTimerHandler() const =0
virtual bool PostRequestURL(const WideString &wsURL, const WideString &wsData, const WideString &wsContentType, const WideString &wsEncode, const WideString &wsHeader, WideString &wsResponse)=0
virtual bool PutRequestURL(const WideString &wsURL, const WideString &wsData, const WideString &wsEncode)=0
virtual RetainPtr< IFX_SeekableReadStream > DownloadURL(const WideString &wsURL)=0
virtual WideString Response(const WideString &wsQuestion, const WideString &wsTitle, const WideString &wsDefaultAnswer, bool bMask)=0
virtual WideString GetLanguage()=0
virtual cppgc::Heap * GetGCHeap() const =0
CallbackIface * GetAppProvider() const
Definition cxfa_ffapp.h:144
void Trace(cppgc::Visitor *visitor) const override
bool LoadFWLTheme(CXFA_FFDoc *doc)
CFWL_WidgetMgr * GetFWLWidgetMgr() const
Definition cxfa_ffapp.h:143
CFX_Timer::HandlerIface * GetTimerHandler() override
CFWL_App * GetFWLApp() const
Definition cxfa_ffapp.h:145
CFWL_WidgetMgr::AdapterIface * GetWidgetMgrAdapter() override
IFWL_ThemeProvider * GetThemeProvider() override
~CXFA_FFApp() override
CXFA_FontMgr * GetXFAFontMgr() const
Definition cxfa_ffapp.h:146
cppgc::Heap * GetHeap() override
CXFA_FFWidgetHandler * GetWidgetHandler()
CXFA_FFDoc * GetDoc() const
CXFA_Node * GetRootSubform()
virtual void OnPageViewEvent(CXFA_FFPageView *pPageView, PageViewEvent eEvent)=0
virtual void SetValidationsEnabled(CXFA_FFDoc *hDoc, bool bEnabled)=0
virtual int32_t CountPages(const CXFA_FFDoc *hDoc) const =0
virtual void SetCurrentPage(CXFA_FFDoc *hDoc, int32_t iCurPage)=0
virtual void SetFocusWidget(CXFA_FFDoc *hDoc, CXFA_FFWidget *hWidget)=0
virtual void GotoURL(CXFA_FFDoc *hDoc, const WideString &bsURL)=0
virtual int32_t GetCurrentPage(const CXFA_FFDoc *hDoc) const =0
virtual void WidgetPreRemove(CXFA_FFWidget *hWidget)=0
virtual IJS_Runtime * GetIJSRuntime(const CXFA_FFDoc *hDoc) const =0
virtual void SetCalculationsEnabled(CXFA_FFDoc *hDoc, bool bEnabled)=0
virtual void SetTitle(CXFA_FFDoc *hDoc, const WideString &wsTitle)=0
virtual WideString GetTitle(const CXFA_FFDoc *hDoc) const =0
virtual bool PopupMenu(CXFA_FFWidget *hWidget, const CFX_PointF &ptPopup)=0
virtual void Print(CXFA_FFDoc *hDoc, int32_t nStartPage, int32_t nEndPage, Mask< XFA_PrintOpt > dwOptions)=0
virtual bool IsValidationsEnabled(const CXFA_FFDoc *hDoc) const =0
virtual void ExportData(CXFA_FFDoc *hDoc, const WideString &wsFilePath, bool bXDP)=0
virtual RetainPtr< IFX_SeekableReadStream > OpenLinkedFile(CXFA_FFDoc *hDoc, const WideString &wsLink)=0
virtual FX_ARGB GetHighlightColor(const CXFA_FFDoc *hDoc) const =0
virtual void InvalidateRect(CXFA_FFPageView *pPageView, const CFX_RectF &rt)=0
virtual CFX_XMLDocument * GetXMLDoc() const =0
virtual void WidgetPostAdd(CXFA_FFWidget *hWidget)=0
virtual void SetChangeMark(CXFA_FFDoc *hDoc)=0
virtual bool GetPopupPos(CXFA_FFWidget *hWidget, float fMinPopup, float fMaxPopup, const CFX_RectF &rtAnchor, CFX_RectF *pPopupRect)=0
virtual void DisplayCaret(CXFA_FFWidget *hWidget, bool bVisible, const CFX_RectF *pRtAnchor)=0
virtual ~CallbackIface()=default
virtual bool IsCalculationsEnabled(const CXFA_FFDoc *hDoc) const =0
CPDF_Document * GetPDFDoc() const
Definition cxfa_ffdoc.h:169
bool SavePackage(CXFA_Node *pNode, const RetainPtr< IFX_SeekableStream > &pFile)
CFX_XMLDocument * GetXMLDocument() const
void InvalidateRect(CXFA_FFPageView *pPageView, const CFX_RectF &rt)
CXFA_FFDocView * CreateDocView()
void WidgetPostAdd(CXFA_FFWidget *hWidget)
RetainPtr< CFGAS_GEFont > GetPDFFont(const WideString &family, uint32_t styles, bool strict)
cppgc::Heap * GetHeap() const
Definition cxfa_ffdoc.h:166
void Print(int32_t nStartPage, int32_t nEndPage, Mask< XFA_PrintOpt > dwOptions)
void Trace(cppgc::Visitor *visitor) const
CXFA_Document * GetXFADoc() const
Definition cxfa_ffdoc.h:167
FX_ARGB GetHighlightColor() const
void SetCurrentPage(int32_t iCurPage)
void SetCalculationsEnabled(bool bEnabled)
void OnPageViewEvent(CXFA_FFPageView *pPageView, PageViewEvent eEvent)
void PreFinalize()
FormType GetFormType() const
Definition cxfa_ffdoc.h:165
void DisplayCaret(CXFA_FFWidget *hWidget, bool bVisible, const CFX_RectF *pRtAnchor)
bool IsCalculationsEnabled() const
bool PopupMenu(CXFA_FFWidget *hWidget, const CFX_PointF &ptPopup)
CXFA_FFDocView * GetDocView(CXFA_LayoutProcessor *pLayout)
CXFA_FFDocView * GetDocView()
void SetFocusWidget(CXFA_FFWidget *hWidget)
void SetValidationsEnabled(bool bEnabled)
bool OpenDoc(CFX_XMLDocument *pXML)
void GotoURL(const WideString &bsURL)
WideString GetTitle() const
int32_t GetCurrentPage() const
bool IsValidationsEnabled() const
CXFA_FFApp * GetApp() const
Definition cxfa_ffdoc.h:168
void ExportData(const WideString &wsFilePath, bool bXDP)
void SetTitle(const WideString &wsTitle)
IJS_Runtime * GetIJSRuntime() const
void SetChangeMark()
void WidgetPreRemove(CXFA_FFWidget *hWidget)
RetainPtr< CFX_DIBitmap > GetPDFNamedImage(WideStringView wsName, int32_t &iImageXDpi, int32_t &iImageYDpi)
RetainPtr< IFX_SeekableReadStream > OpenLinkedFile(const WideString &wsLink)
bool GetPopupPos(CXFA_FFWidget *hWidget, float fMinPopup, float fMaxPopup, const CFX_RectF &rtAnchor, CFX_RectF *pPopupRect) const
int32_t CountPages() const
XFA_EventError ProcessEvent(CXFA_Node *pNode, CXFA_EventParam *pParam)
void Trace(cppgc::Visitor *visitor) const
void SetDefLocale(GCedLocaleIface *pLocale)
absl::optional< WideString > GetConfigLocaleName(CXFA_Node *pConfig) const
~CXFA_LocaleMgr() override
GCedLocaleIface * GetDefLocale() override
GCedLocaleIface * GetLocaleByName(const WideString &wsLocaleName) override
void PersistList(CXFA_List *list)
void Trace(cppgc::Visitor *visitor) const
CXFA_ReadyNodeIterator(CXFA_Node *pTravelRoot)
ExtensionIface * GetExtension()
void SetExtension(std::unique_ptr< ExtensionIface > extension)
uint32_t CurrentMaxObjDefinitionID() const
CFXJS_ObjDefinition * ObjDefinitionForID(uint32_t id) const
V8TemplateMap * GetDynamicObjsMap()
uint32_t AssignIDForObjDefinition(std::unique_ptr< CFXJS_ObjDefinition > pDefn)
virtual void Trace(cppgc::Visitor *visitor) const
virtual WideString GetDayName(int32_t nWeek, bool bAbbr) const =0
virtual WideString GetDecimalSymbol() const =0
virtual WideString GetMonthName(int32_t nMonth, bool bAbbr) const =0
virtual WideString GetNumPattern(NumSubcategory eType) const =0
virtual WideString GetDatePattern(DateTimeSubcategory eType) const =0
virtual int GetTimeZoneInMinutes() const =0
virtual WideString GetMeridiemName(bool bAM) const =0
virtual WideString GetName() const =0
virtual WideString GetCurrencySymbol() const =0
virtual WideString GetDateTimeSymbols() const =0
virtual ~LocaleIface()=default
virtual WideString GetTimePattern(DateTimeSubcategory eType) const =0
virtual WideString GetPercentSymbol() const =0
virtual WideString GetGroupingSymbol() const =0
virtual WideString GetEraName(bool bAD) const =0
virtual WideString GetMinusSymbol() const =0
virtual ~LocaleMgrIface()=default
virtual LocaleIface * GetLocaleByName(const WideString &wsLCID)=0
virtual LocaleIface * GetDefLocale()=0
static WideString FromUTF16LE(pdfium::span< const uint8_t > data)
GCedTreeNode & operator=(const GCedTreeNode &that)=delete
GCedTreeNode()=default
virtual void Trace(cppgc::Visitor *visitor) const
GCedTreeNode(const GCedTreeNode &that)=delete
void CPDFXFA_ModuleInit()
void CPDFXFA_ModuleDestroy()
XFA_VERSION
@ XFA_VERSION_UNKNOWN
@ XFA_VERSION_207
@ XFA_VERSION_306
@ XFA_VERSION_206
@ XFA_VERSION_MAX
@ XFA_VERSION_205
@ XFA_VERSION_300
@ XFA_VERSION_208
@ XFA_VERSION_200
@ XFA_VERSION_204
@ XFA_VERSION_202
@ XFA_VERSION_301
@ XFA_VERSION_303
@ XFA_VERSION_MIN
@ XFA_VERSION_DEFAULT
@ XFA_EVENT_PostSave
@ XFA_EVENT_PreSave
CXFA_Node * ToNode(CXFA_Object *pObj)
#define JSPLATFORM_ALERT_BUTTON_DEFAULT
#define JSPLATFORM_ALERT_ICON_ASTERISK
#define JSPLATFORM_ALERT_BUTTON_OKCANCEL
#define JSPLATFORM_ALERT_ICON_ERROR
#define JSPLATFORM_ALERT_BUTTON_YESNO
#define JSPLATFORM_ALERT_ICON_DEFAULT
#define JSPLATFORM_ALERT_ICON_WARNING
#define JSPLATFORM_ALERT_BUTTON_OK
#define JSPLATFORM_ALERT_ICON_QUESTION
#define JSPLATFORM_ALERT_ICON_STATUS
#define JSPLATFORM_ALERT_BUTTON_YESNOCANCEL
AlertIcon
Definition fxfa.h:20
XFA_PrintOpt
Definition fxfa.h:45
AlertButton
Definition fxfa.h:11
XFA_EventError
Definition fxfa.h:54
AlertReturn
Definition fxfa.h:30
XFA_WidgetStatus
Definition fxfa.h:61
FormType
Definition fxfa.h:38
@ kXFAForeground
XFA_Unit
Definition fxfa_basic.h:91
XFA_AttributeType
Definition fxfa_basic.h:83
XFA_Attribute
Definition fxfa_basic.h:67
XFA_XDPPACKET
Definition fxfa_basic.h:51
XFA_HashCode
Definition fxfa_basic.h:12
@ XFA_HASHCODE_Host
Definition fxfa_basic.h:24
@ XFA_HASHCODE_Log
Definition fxfa_basic.h:27
@ XFA_HASHCODE_Config
Definition fxfa_basic.h:15
@ XFA_HASHCODE_LocaleSet
Definition fxfa_basic.h:26
@ XFA_HASHCODE_Stylesheet
Definition fxfa_basic.h:34
@ XFA_HASHCODE_Xfdf
Definition fxfa_basic.h:40
@ XFA_HASHCODE_Name
Definition fxfa_basic.h:28
@ XFA_HASHCODE_XDP
Definition fxfa_basic.h:38
@ XFA_HASHCODE_DataWindow
Definition fxfa_basic.h:20
@ XFA_HASHCODE_Xfa
Definition fxfa_basic.h:39
@ XFA_HASHCODE_Template
Definition fxfa_basic.h:35
@ XFA_HASHCODE_None
Definition fxfa_basic.h:13
@ XFA_HASHCODE_Signature
Definition fxfa_basic.h:32
@ XFA_HASHCODE_Xdc
Definition fxfa_basic.h:37
@ XFA_HASHCODE_Data
Definition fxfa_basic.h:17
@ XFA_HASHCODE_Datasets
Definition fxfa_basic.h:19
@ XFA_HASHCODE_Form
Definition fxfa_basic.h:22
@ XFA_HASHCODE_Event
Definition fxfa_basic.h:21
@ XFA_HASHCODE_Pdf
Definition fxfa_basic.h:30
@ XFA_HASHCODE_ConnectionSet
Definition fxfa_basic.h:16
@ XFA_HASHCODE_Group
Definition fxfa_basic.h:23
@ XFA_HASHCODE_SourceSet
Definition fxfa_basic.h:33
@ XFA_HASHCODE_Record
Definition fxfa_basic.h:31
@ XFA_HASHCODE_Xmpmeta
Definition fxfa_basic.h:41
@ XFA_HASHCODE_This
Definition fxfa_basic.h:36
@ XFA_HASHCODE_DataDescription
Definition fxfa_basic.h:18
@ XFA_HASHCODE_Occur
Definition fxfa_basic.h:29
@ XFA_HASHCODE_Layout
Definition fxfa_basic.h:25
XFA_Element
Definition fxfa_basic.h:75
XFA_AttributeValue
Definition fxfa_basic.h:60
XFA_PacketType
Definition fxfa_basic.h:44
XFA_ScriptType
Definition fxfa_basic.h:104
FXGCScopedHeap FXGC_CreateHeap()
Definition heap.cpp:66
void FXGC_Release()
Definition heap.cpp:59
void FXGC_Initialize(v8::Platform *platform, v8::Isolate *isolate)
Definition heap.cpp:51
void FXGC_ForceGarbageCollection(cppgc::Heap *heap)
Definition heap.cpp:86
#define CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED
Definition heap.h:32
Definition heap.h:12
#define CONSTRUCT_VIA_MAKE_RETAIN
Definition retain_ptr.h:224
void operator()(cppgc::Heap *heap)
Definition heap.cpp:91
FX_IMAGEDIB_AND_DPI(const FX_IMAGEDIB_AND_DPI &that)
FX_IMAGEDIB_AND_DPI(const RetainPtr< CFX_DIBBase > &pDib, int32_t xDpi, int32_t yDpi)
RetainPtr< CFX_DIBBase > pDibSource
Definition cxfa_ffdoc.h:50