xref: /aosp_15_r20/external/pdfium/fpdfsdk/cpdfsdk_helpers.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker 
5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6*3ac0a46fSAndroid Build Coastguard Worker 
7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FPDFSDK_CPDFSDK_HELPERS_H_
8*3ac0a46fSAndroid Build Coastguard Worker #define FPDFSDK_CPDFSDK_HELPERS_H_
9*3ac0a46fSAndroid Build Coastguard Worker 
10*3ac0a46fSAndroid Build Coastguard Worker #include <vector>
11*3ac0a46fSAndroid Build Coastguard Worker 
12*3ac0a46fSAndroid Build Coastguard Worker #include "build/build_config.h"
13*3ac0a46fSAndroid Build Coastguard Worker #include "core/fpdfapi/page/cpdf_page.h"
14*3ac0a46fSAndroid Build Coastguard Worker #include "core/fpdfapi/parser/cpdf_parser.h"
15*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/retain_ptr.h"
16*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxge/cfx_path.h"
17*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdf_doc.h"
18*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdf_ext.h"
19*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdfview.h"
20*3ac0a46fSAndroid Build Coastguard Worker 
21*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA
22*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_stream.h"
23*3ac0a46fSAndroid Build Coastguard Worker #endif  // PDF_ENABLE_XFA
24*3ac0a46fSAndroid Build Coastguard Worker 
25*3ac0a46fSAndroid Build Coastguard Worker class CPDF_Annot;
26*3ac0a46fSAndroid Build Coastguard Worker class CPDF_AnnotContext;
27*3ac0a46fSAndroid Build Coastguard Worker class CPDF_ClipPath;
28*3ac0a46fSAndroid Build Coastguard Worker class CPDF_ContentMarkItem;
29*3ac0a46fSAndroid Build Coastguard Worker class CPDF_Object;
30*3ac0a46fSAndroid Build Coastguard Worker class CPDF_Font;
31*3ac0a46fSAndroid Build Coastguard Worker class CPDF_LinkExtract;
32*3ac0a46fSAndroid Build Coastguard Worker class CPDF_PageObject;
33*3ac0a46fSAndroid Build Coastguard Worker class CPDF_RenderOptions;
34*3ac0a46fSAndroid Build Coastguard Worker class CPDF_Stream;
35*3ac0a46fSAndroid Build Coastguard Worker class CPDF_StructElement;
36*3ac0a46fSAndroid Build Coastguard Worker class CPDF_StructTree;
37*3ac0a46fSAndroid Build Coastguard Worker class CPDF_TextPage;
38*3ac0a46fSAndroid Build Coastguard Worker class CPDF_TextPageFind;
39*3ac0a46fSAndroid Build Coastguard Worker class CPDFSDK_FormFillEnvironment;
40*3ac0a46fSAndroid Build Coastguard Worker class CPDFSDK_InteractiveForm;
41*3ac0a46fSAndroid Build Coastguard Worker class CFX_DIBitmap;
42*3ac0a46fSAndroid Build Coastguard Worker struct CPDF_JavaScript;
43*3ac0a46fSAndroid Build Coastguard Worker struct XObjectContext;
44*3ac0a46fSAndroid Build Coastguard Worker 
45*3ac0a46fSAndroid Build Coastguard Worker // Conversions to/from underlying types.
46*3ac0a46fSAndroid Build Coastguard Worker IPDF_Page* IPDFPageFromFPDFPage(FPDF_PAGE page);
47*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE FPDFPageFromIPDFPage(IPDF_Page* page);
48*3ac0a46fSAndroid Build Coastguard Worker CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page);
49*3ac0a46fSAndroid Build Coastguard Worker FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc);
50*3ac0a46fSAndroid Build Coastguard Worker CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc);
51*3ac0a46fSAndroid Build Coastguard Worker 
52*3ac0a46fSAndroid Build Coastguard Worker // Conversions to/from incomplete FPDF_ API types.
FPDFActionFromCPDFDictionary(const CPDF_Dictionary * action)53*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_ACTION FPDFActionFromCPDFDictionary(const CPDF_Dictionary* action) {
54*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_ACTION>(const_cast<CPDF_Dictionary*>(action));
55*3ac0a46fSAndroid Build Coastguard Worker }
CPDFDictionaryFromFPDFAction(FPDF_ACTION action)56*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_Dictionary* CPDFDictionaryFromFPDFAction(FPDF_ACTION action) {
57*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_Dictionary*>(action);
58*3ac0a46fSAndroid Build Coastguard Worker }
59*3ac0a46fSAndroid Build Coastguard Worker 
FPDFAnnotationFromCPDFAnnotContext(CPDF_AnnotContext * annot)60*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_ANNOTATION FPDFAnnotationFromCPDFAnnotContext(
61*3ac0a46fSAndroid Build Coastguard Worker     CPDF_AnnotContext* annot) {
62*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_ANNOTATION>(annot);
63*3ac0a46fSAndroid Build Coastguard Worker }
CPDFAnnotContextFromFPDFAnnotation(FPDF_ANNOTATION annot)64*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_AnnotContext* CPDFAnnotContextFromFPDFAnnotation(
65*3ac0a46fSAndroid Build Coastguard Worker     FPDF_ANNOTATION annot) {
66*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_AnnotContext*>(annot);
67*3ac0a46fSAndroid Build Coastguard Worker }
68*3ac0a46fSAndroid Build Coastguard Worker 
FPDFAttachmentFromCPDFObject(CPDF_Object * attachment)69*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_ATTACHMENT FPDFAttachmentFromCPDFObject(CPDF_Object* attachment) {
70*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_ATTACHMENT>(attachment);
71*3ac0a46fSAndroid Build Coastguard Worker }
CPDFObjectFromFPDFAttachment(FPDF_ATTACHMENT attachment)72*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_Object* CPDFObjectFromFPDFAttachment(FPDF_ATTACHMENT attachment) {
73*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_Object*>(attachment);
74*3ac0a46fSAndroid Build Coastguard Worker }
75*3ac0a46fSAndroid Build Coastguard Worker 
FPDFBitmapFromCFXDIBitmap(CFX_DIBitmap * bitmap)76*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_BITMAP FPDFBitmapFromCFXDIBitmap(CFX_DIBitmap* bitmap) {
77*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_BITMAP>(bitmap);
78*3ac0a46fSAndroid Build Coastguard Worker }
CFXDIBitmapFromFPDFBitmap(FPDF_BITMAP bitmap)79*3ac0a46fSAndroid Build Coastguard Worker inline CFX_DIBitmap* CFXDIBitmapFromFPDFBitmap(FPDF_BITMAP bitmap) {
80*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CFX_DIBitmap*>(bitmap);
81*3ac0a46fSAndroid Build Coastguard Worker }
82*3ac0a46fSAndroid Build Coastguard Worker 
FPDFBookmarkFromCPDFDictionary(const CPDF_Dictionary * bookmark)83*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_BOOKMARK FPDFBookmarkFromCPDFDictionary(
84*3ac0a46fSAndroid Build Coastguard Worker     const CPDF_Dictionary* bookmark) {
85*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_BOOKMARK>(
86*3ac0a46fSAndroid Build Coastguard Worker       const_cast<CPDF_Dictionary*>(bookmark));
87*3ac0a46fSAndroid Build Coastguard Worker }
CPDFDictionaryFromFPDFBookmark(FPDF_BOOKMARK bookmark)88*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_Dictionary* CPDFDictionaryFromFPDFBookmark(FPDF_BOOKMARK bookmark) {
89*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_Dictionary*>(bookmark);
90*3ac0a46fSAndroid Build Coastguard Worker }
91*3ac0a46fSAndroid Build Coastguard Worker 
FPDFClipPathFromCPDFClipPath(CPDF_ClipPath * path)92*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_CLIPPATH FPDFClipPathFromCPDFClipPath(CPDF_ClipPath* path) {
93*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_CLIPPATH>(path);
94*3ac0a46fSAndroid Build Coastguard Worker }
CPDFClipPathFromFPDFClipPath(FPDF_CLIPPATH path)95*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_ClipPath* CPDFClipPathFromFPDFClipPath(FPDF_CLIPPATH path) {
96*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_ClipPath*>(path);
97*3ac0a46fSAndroid Build Coastguard Worker }
98*3ac0a46fSAndroid Build Coastguard Worker 
FPDFDestFromCPDFArray(const CPDF_Array * dest)99*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_DEST FPDFDestFromCPDFArray(const CPDF_Array* dest) {
100*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_DEST>(const_cast<CPDF_Array*>(dest));
101*3ac0a46fSAndroid Build Coastguard Worker }
CPDFArrayFromFPDFDest(FPDF_DEST dest)102*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_Array* CPDFArrayFromFPDFDest(FPDF_DEST dest) {
103*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_Array*>(dest);
104*3ac0a46fSAndroid Build Coastguard Worker }
105*3ac0a46fSAndroid Build Coastguard Worker 
FPDFFontFromCPDFFont(CPDF_Font * font)106*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_FONT FPDFFontFromCPDFFont(CPDF_Font* font) {
107*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_FONT>(font);
108*3ac0a46fSAndroid Build Coastguard Worker }
CPDFFontFromFPDFFont(FPDF_FONT font)109*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_Font* CPDFFontFromFPDFFont(FPDF_FONT font) {
110*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_Font*>(font);
111*3ac0a46fSAndroid Build Coastguard Worker }
112*3ac0a46fSAndroid Build Coastguard Worker 
FPDFJavaScriptActionFromCPDFJavaScriptAction(CPDF_JavaScript * javascript)113*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_JAVASCRIPT_ACTION FPDFJavaScriptActionFromCPDFJavaScriptAction(
114*3ac0a46fSAndroid Build Coastguard Worker     CPDF_JavaScript* javascript) {
115*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_JAVASCRIPT_ACTION>(javascript);
116*3ac0a46fSAndroid Build Coastguard Worker }
CPDFJavaScriptActionFromFPDFJavaScriptAction(FPDF_JAVASCRIPT_ACTION javascript)117*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_JavaScript* CPDFJavaScriptActionFromFPDFJavaScriptAction(
118*3ac0a46fSAndroid Build Coastguard Worker     FPDF_JAVASCRIPT_ACTION javascript) {
119*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_JavaScript*>(javascript);
120*3ac0a46fSAndroid Build Coastguard Worker }
121*3ac0a46fSAndroid Build Coastguard Worker 
FPDFLinkFromCPDFDictionary(CPDF_Dictionary * link)122*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_LINK FPDFLinkFromCPDFDictionary(CPDF_Dictionary* link) {
123*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_LINK>(link);
124*3ac0a46fSAndroid Build Coastguard Worker }
CPDFDictionaryFromFPDFLink(FPDF_LINK link)125*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_Dictionary* CPDFDictionaryFromFPDFLink(FPDF_LINK link) {
126*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_Dictionary*>(link);
127*3ac0a46fSAndroid Build Coastguard Worker }
128*3ac0a46fSAndroid Build Coastguard Worker 
FPDFPageLinkFromCPDFLinkExtract(CPDF_LinkExtract * link)129*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_PAGELINK FPDFPageLinkFromCPDFLinkExtract(CPDF_LinkExtract* link) {
130*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_PAGELINK>(link);
131*3ac0a46fSAndroid Build Coastguard Worker }
CPDFLinkExtractFromFPDFPageLink(FPDF_PAGELINK link)132*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_LinkExtract* CPDFLinkExtractFromFPDFPageLink(FPDF_PAGELINK link) {
133*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_LinkExtract*>(link);
134*3ac0a46fSAndroid Build Coastguard Worker }
135*3ac0a46fSAndroid Build Coastguard Worker 
FPDFPageObjectFromCPDFPageObject(CPDF_PageObject * page_object)136*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_PAGEOBJECT FPDFPageObjectFromCPDFPageObject(
137*3ac0a46fSAndroid Build Coastguard Worker     CPDF_PageObject* page_object) {
138*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_PAGEOBJECT>(page_object);
139*3ac0a46fSAndroid Build Coastguard Worker }
CPDFPageObjectFromFPDFPageObject(FPDF_PAGEOBJECT page_object)140*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_PageObject* CPDFPageObjectFromFPDFPageObject(
141*3ac0a46fSAndroid Build Coastguard Worker     FPDF_PAGEOBJECT page_object) {
142*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_PageObject*>(page_object);
143*3ac0a46fSAndroid Build Coastguard Worker }
144*3ac0a46fSAndroid Build Coastguard Worker 
FPDFPageObjectMarkFromCPDFContentMarkItem(CPDF_ContentMarkItem * mark)145*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_PAGEOBJECTMARK FPDFPageObjectMarkFromCPDFContentMarkItem(
146*3ac0a46fSAndroid Build Coastguard Worker     CPDF_ContentMarkItem* mark) {
147*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_PAGEOBJECTMARK>(mark);
148*3ac0a46fSAndroid Build Coastguard Worker }
CPDFContentMarkItemFromFPDFPageObjectMark(FPDF_PAGEOBJECTMARK mark)149*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_ContentMarkItem* CPDFContentMarkItemFromFPDFPageObjectMark(
150*3ac0a46fSAndroid Build Coastguard Worker     FPDF_PAGEOBJECTMARK mark) {
151*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_ContentMarkItem*>(mark);
152*3ac0a46fSAndroid Build Coastguard Worker }
153*3ac0a46fSAndroid Build Coastguard Worker 
FPDFPageRangeFromCPDFArray(const CPDF_Array * range)154*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_PAGERANGE FPDFPageRangeFromCPDFArray(const CPDF_Array* range) {
155*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_PAGERANGE>(range);
156*3ac0a46fSAndroid Build Coastguard Worker }
CPDFArrayFromFPDFPageRange(FPDF_PAGERANGE range)157*3ac0a46fSAndroid Build Coastguard Worker inline const CPDF_Array* CPDFArrayFromFPDFPageRange(FPDF_PAGERANGE range) {
158*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<const CPDF_Array*>(range);
159*3ac0a46fSAndroid Build Coastguard Worker }
160*3ac0a46fSAndroid Build Coastguard Worker 
FPDFPathSegmentFromFXPathPoint(const CFX_Path::Point * segment)161*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_PATHSEGMENT FPDFPathSegmentFromFXPathPoint(
162*3ac0a46fSAndroid Build Coastguard Worker     const CFX_Path::Point* segment) {
163*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_PATHSEGMENT>(segment);
164*3ac0a46fSAndroid Build Coastguard Worker }
FXPathPointFromFPDFPathSegment(FPDF_PATHSEGMENT segment)165*3ac0a46fSAndroid Build Coastguard Worker inline const CFX_Path::Point* FXPathPointFromFPDFPathSegment(
166*3ac0a46fSAndroid Build Coastguard Worker     FPDF_PATHSEGMENT segment) {
167*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<const CFX_Path::Point*>(segment);
168*3ac0a46fSAndroid Build Coastguard Worker }
169*3ac0a46fSAndroid Build Coastguard Worker 
FPDFStructTreeFromCPDFStructTree(CPDF_StructTree * struct_tree)170*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_STRUCTTREE FPDFStructTreeFromCPDFStructTree(
171*3ac0a46fSAndroid Build Coastguard Worker     CPDF_StructTree* struct_tree) {
172*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_STRUCTTREE>(struct_tree);
173*3ac0a46fSAndroid Build Coastguard Worker }
CPDFStructTreeFromFPDFStructTree(FPDF_STRUCTTREE struct_tree)174*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_StructTree* CPDFStructTreeFromFPDFStructTree(
175*3ac0a46fSAndroid Build Coastguard Worker     FPDF_STRUCTTREE struct_tree) {
176*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_StructTree*>(struct_tree);
177*3ac0a46fSAndroid Build Coastguard Worker }
178*3ac0a46fSAndroid Build Coastguard Worker 
FPDFStructElementFromCPDFStructElement(CPDF_StructElement * struct_element)179*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_STRUCTELEMENT FPDFStructElementFromCPDFStructElement(
180*3ac0a46fSAndroid Build Coastguard Worker     CPDF_StructElement* struct_element) {
181*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_STRUCTELEMENT>(struct_element);
182*3ac0a46fSAndroid Build Coastguard Worker }
CPDFStructElementFromFPDFStructElement(FPDF_STRUCTELEMENT struct_element)183*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_StructElement* CPDFStructElementFromFPDFStructElement(
184*3ac0a46fSAndroid Build Coastguard Worker     FPDF_STRUCTELEMENT struct_element) {
185*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_StructElement*>(struct_element);
186*3ac0a46fSAndroid Build Coastguard Worker }
187*3ac0a46fSAndroid Build Coastguard Worker 
FPDFStructElementAttrFromCPDFDictionary(const CPDF_Dictionary * dictionary)188*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_STRUCTELEMENT_ATTR FPDFStructElementAttrFromCPDFDictionary(
189*3ac0a46fSAndroid Build Coastguard Worker     const CPDF_Dictionary* dictionary) {
190*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_STRUCTELEMENT_ATTR>(dictionary);
191*3ac0a46fSAndroid Build Coastguard Worker }
CPDFDictionaryFromFPDFStructElementAttr(FPDF_STRUCTELEMENT_ATTR struct_element_attr)192*3ac0a46fSAndroid Build Coastguard Worker inline const CPDF_Dictionary* CPDFDictionaryFromFPDFStructElementAttr(
193*3ac0a46fSAndroid Build Coastguard Worker     FPDF_STRUCTELEMENT_ATTR struct_element_attr) {
194*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<const CPDF_Dictionary*>(struct_element_attr);
195*3ac0a46fSAndroid Build Coastguard Worker }
196*3ac0a46fSAndroid Build Coastguard Worker 
FPDFTextPageFromCPDFTextPage(CPDF_TextPage * page)197*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_TEXTPAGE FPDFTextPageFromCPDFTextPage(CPDF_TextPage* page) {
198*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_TEXTPAGE>(page);
199*3ac0a46fSAndroid Build Coastguard Worker }
CPDFTextPageFromFPDFTextPage(FPDF_TEXTPAGE page)200*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_TextPage* CPDFTextPageFromFPDFTextPage(FPDF_TEXTPAGE page) {
201*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_TextPage*>(page);
202*3ac0a46fSAndroid Build Coastguard Worker }
203*3ac0a46fSAndroid Build Coastguard Worker 
FPDFSchHandleFromCPDFTextPageFind(CPDF_TextPageFind * handle)204*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_SCHHANDLE FPDFSchHandleFromCPDFTextPageFind(
205*3ac0a46fSAndroid Build Coastguard Worker     CPDF_TextPageFind* handle) {
206*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_SCHHANDLE>(handle);
207*3ac0a46fSAndroid Build Coastguard Worker }
CPDFTextPageFindFromFPDFSchHandle(FPDF_SCHHANDLE handle)208*3ac0a46fSAndroid Build Coastguard Worker inline CPDF_TextPageFind* CPDFTextPageFindFromFPDFSchHandle(
209*3ac0a46fSAndroid Build Coastguard Worker     FPDF_SCHHANDLE handle) {
210*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDF_TextPageFind*>(handle);
211*3ac0a46fSAndroid Build Coastguard Worker }
212*3ac0a46fSAndroid Build Coastguard Worker 
FPDFFormHandleFromCPDFSDKFormFillEnvironment(CPDFSDK_FormFillEnvironment * handle)213*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_FORMHANDLE FPDFFormHandleFromCPDFSDKFormFillEnvironment(
214*3ac0a46fSAndroid Build Coastguard Worker     CPDFSDK_FormFillEnvironment* handle) {
215*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_FORMHANDLE>(handle);
216*3ac0a46fSAndroid Build Coastguard Worker }
217*3ac0a46fSAndroid Build Coastguard Worker inline CPDFSDK_FormFillEnvironment*
CPDFSDKFormFillEnvironmentFromFPDFFormHandle(FPDF_FORMHANDLE handle)218*3ac0a46fSAndroid Build Coastguard Worker CPDFSDKFormFillEnvironmentFromFPDFFormHandle(FPDF_FORMHANDLE handle) {
219*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<CPDFSDK_FormFillEnvironment*>(handle);
220*3ac0a46fSAndroid Build Coastguard Worker }
221*3ac0a46fSAndroid Build Coastguard Worker 
FPDFSignatureFromCPDFDictionary(const CPDF_Dictionary * dictionary)222*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_SIGNATURE FPDFSignatureFromCPDFDictionary(
223*3ac0a46fSAndroid Build Coastguard Worker     const CPDF_Dictionary* dictionary) {
224*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_SIGNATURE>(dictionary);
225*3ac0a46fSAndroid Build Coastguard Worker }
CPDFDictionaryFromFPDFSignature(FPDF_SIGNATURE signature)226*3ac0a46fSAndroid Build Coastguard Worker inline const CPDF_Dictionary* CPDFDictionaryFromFPDFSignature(
227*3ac0a46fSAndroid Build Coastguard Worker     FPDF_SIGNATURE signature) {
228*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<const CPDF_Dictionary*>(signature);
229*3ac0a46fSAndroid Build Coastguard Worker }
230*3ac0a46fSAndroid Build Coastguard Worker 
FPDFXObjectFromXObjectContext(XObjectContext * xobject)231*3ac0a46fSAndroid Build Coastguard Worker inline FPDF_XOBJECT FPDFXObjectFromXObjectContext(XObjectContext* xobject) {
232*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<FPDF_XOBJECT>(xobject);
233*3ac0a46fSAndroid Build Coastguard Worker }
234*3ac0a46fSAndroid Build Coastguard Worker 
XObjectContextFromFPDFXObject(FPDF_XOBJECT xobject)235*3ac0a46fSAndroid Build Coastguard Worker inline XObjectContext* XObjectContextFromFPDFXObject(FPDF_XOBJECT xobject) {
236*3ac0a46fSAndroid Build Coastguard Worker   return reinterpret_cast<XObjectContext*>(xobject);
237*3ac0a46fSAndroid Build Coastguard Worker }
238*3ac0a46fSAndroid Build Coastguard Worker 
239*3ac0a46fSAndroid Build Coastguard Worker CPDFSDK_InteractiveForm* FormHandleToInteractiveForm(FPDF_FORMHANDLE hHandle);
240*3ac0a46fSAndroid Build Coastguard Worker 
241*3ac0a46fSAndroid Build Coastguard Worker ByteString ByteStringFromFPDFWideString(FPDF_WIDESTRING wide_string);
242*3ac0a46fSAndroid Build Coastguard Worker WideString WideStringFromFPDFWideString(FPDF_WIDESTRING wide_string);
243*3ac0a46fSAndroid Build Coastguard Worker 
244*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA
245*3ac0a46fSAndroid Build Coastguard Worker // Layering prevents fxcrt from knowing about FPDF_FILEHANDLER, so this can't
246*3ac0a46fSAndroid Build Coastguard Worker // be a static method of IFX_SeekableStream.
247*3ac0a46fSAndroid Build Coastguard Worker RetainPtr<IFX_SeekableStream> MakeSeekableStream(
248*3ac0a46fSAndroid Build Coastguard Worker     FPDF_FILEHANDLER* pFileHandler);
249*3ac0a46fSAndroid Build Coastguard Worker #endif  // PDF_ENABLE_XFA
250*3ac0a46fSAndroid Build Coastguard Worker 
251*3ac0a46fSAndroid Build Coastguard Worker RetainPtr<const CPDF_Array> GetQuadPointsArrayFromDictionary(
252*3ac0a46fSAndroid Build Coastguard Worker     const CPDF_Dictionary* dict);
253*3ac0a46fSAndroid Build Coastguard Worker RetainPtr<CPDF_Array> GetMutableQuadPointsArrayFromDictionary(
254*3ac0a46fSAndroid Build Coastguard Worker     CPDF_Dictionary* dict);
255*3ac0a46fSAndroid Build Coastguard Worker RetainPtr<CPDF_Array> AddQuadPointsArrayToDictionary(CPDF_Dictionary* dict);
256*3ac0a46fSAndroid Build Coastguard Worker bool IsValidQuadPointsIndex(const CPDF_Array* array, size_t index);
257*3ac0a46fSAndroid Build Coastguard Worker bool GetQuadPointsAtIndex(RetainPtr<const CPDF_Array> array,
258*3ac0a46fSAndroid Build Coastguard Worker                           size_t quad_index,
259*3ac0a46fSAndroid Build Coastguard Worker                           FS_QUADPOINTSF* quad_points);
260*3ac0a46fSAndroid Build Coastguard Worker 
261*3ac0a46fSAndroid Build Coastguard Worker CFX_PointF CFXPointFFromFSPointF(const FS_POINTF& point);
262*3ac0a46fSAndroid Build Coastguard Worker 
263*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect CFXFloatRectFromFSRectF(const FS_RECTF& rect);
264*3ac0a46fSAndroid Build Coastguard Worker FS_RECTF FSRectFFromCFXFloatRect(const CFX_FloatRect& rect);
265*3ac0a46fSAndroid Build Coastguard Worker 
266*3ac0a46fSAndroid Build Coastguard Worker CFX_Matrix CFXMatrixFromFSMatrix(const FS_MATRIX& matrix);
267*3ac0a46fSAndroid Build Coastguard Worker FS_MATRIX FSMatrixFromCFXMatrix(const CFX_Matrix& matrix);
268*3ac0a46fSAndroid Build Coastguard Worker 
269*3ac0a46fSAndroid Build Coastguard Worker unsigned long NulTerminateMaybeCopyAndReturnLength(const ByteString& text,
270*3ac0a46fSAndroid Build Coastguard Worker                                                    void* buffer,
271*3ac0a46fSAndroid Build Coastguard Worker                                                    unsigned long buflen);
272*3ac0a46fSAndroid Build Coastguard Worker 
273*3ac0a46fSAndroid Build Coastguard Worker unsigned long Utf16EncodeMaybeCopyAndReturnLength(const WideString& text,
274*3ac0a46fSAndroid Build Coastguard Worker                                                   void* buffer,
275*3ac0a46fSAndroid Build Coastguard Worker                                                   unsigned long buflen);
276*3ac0a46fSAndroid Build Coastguard Worker 
277*3ac0a46fSAndroid Build Coastguard Worker // Returns the length of the raw stream data from |stream|. The raw data is the
278*3ac0a46fSAndroid Build Coastguard Worker // stream's data as stored in the PDF without applying any filters. If |buffer|
279*3ac0a46fSAndroid Build Coastguard Worker // is non-empty and its length is large enough to contain the raw data, then
280*3ac0a46fSAndroid Build Coastguard Worker // the raw data is copied into |buffer|.
281*3ac0a46fSAndroid Build Coastguard Worker unsigned long GetRawStreamMaybeCopyAndReturnLength(
282*3ac0a46fSAndroid Build Coastguard Worker     RetainPtr<const CPDF_Stream> stream,
283*3ac0a46fSAndroid Build Coastguard Worker     pdfium::span<uint8_t> buffer);
284*3ac0a46fSAndroid Build Coastguard Worker 
285*3ac0a46fSAndroid Build Coastguard Worker // Return the length of the decoded stream data of |stream|. The decoded data is
286*3ac0a46fSAndroid Build Coastguard Worker // the uncompressed stream data, i.e. the raw stream data after having all
287*3ac0a46fSAndroid Build Coastguard Worker // filters applied. If |buffer| is non-empty and its length is large enough to
288*3ac0a46fSAndroid Build Coastguard Worker // contain the decoded data, then the decoded data is copied into |buffer|.
289*3ac0a46fSAndroid Build Coastguard Worker unsigned long DecodeStreamMaybeCopyAndReturnLength(
290*3ac0a46fSAndroid Build Coastguard Worker     RetainPtr<const CPDF_Stream> stream,
291*3ac0a46fSAndroid Build Coastguard Worker     pdfium::span<uint8_t> buffer);
292*3ac0a46fSAndroid Build Coastguard Worker 
293*3ac0a46fSAndroid Build Coastguard Worker void SetPDFSandboxPolicy(FPDF_DWORD policy, FPDF_BOOL enable);
294*3ac0a46fSAndroid Build Coastguard Worker FPDF_BOOL IsPDFSandboxPolicyEnabled(FPDF_DWORD policy);
295*3ac0a46fSAndroid Build Coastguard Worker 
296*3ac0a46fSAndroid Build Coastguard Worker void SetPDFUnsupportInfo(UNSUPPORT_INFO* unsp_info);
297*3ac0a46fSAndroid Build Coastguard Worker void ReportUnsupportedFeatures(const CPDF_Document* pDoc);
298*3ac0a46fSAndroid Build Coastguard Worker void ReportUnsupportedXFA(const CPDF_Document* pDoc);
299*3ac0a46fSAndroid Build Coastguard Worker void CheckForUnsupportedAnnot(const CPDF_Annot* pAnnot);
300*3ac0a46fSAndroid Build Coastguard Worker void ProcessParseError(CPDF_Parser::Error err);
301*3ac0a46fSAndroid Build Coastguard Worker void SetColorFromScheme(const FPDF_COLORSCHEME* pColorScheme,
302*3ac0a46fSAndroid Build Coastguard Worker                         CPDF_RenderOptions* pRenderOptions);
303*3ac0a46fSAndroid Build Coastguard Worker 
304*3ac0a46fSAndroid Build Coastguard Worker // Returns a vector of page indices given a page range string.
305*3ac0a46fSAndroid Build Coastguard Worker std::vector<uint32_t> ParsePageRangeString(const ByteString& bsPageRange,
306*3ac0a46fSAndroid Build Coastguard Worker                                            uint32_t nCount);
307*3ac0a46fSAndroid Build Coastguard Worker 
308*3ac0a46fSAndroid Build Coastguard Worker #endif  // FPDFSDK_CPDFSDK_HELPERS_H_
309