1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2017 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 #ifndef PUBLIC_CPP_FPDF_DELETERS_H_ 6*3ac0a46fSAndroid Build Coastguard Worker #define PUBLIC_CPP_FPDF_DELETERS_H_ 7*3ac0a46fSAndroid Build Coastguard Worker 8*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_annot.h" 9*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_dataavail.h" 10*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_edit.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_formfill.h" 12*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_javascript.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_structtree.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_text.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdf_transformpage.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "../fpdfview.h" 17*3ac0a46fSAndroid Build Coastguard Worker 18*3ac0a46fSAndroid Build Coastguard Worker // Custom deleters for using FPDF_* types with std::unique_ptr<>. 19*3ac0a46fSAndroid Build Coastguard Worker 20*3ac0a46fSAndroid Build Coastguard Worker struct FPDFAnnotationDeleter { operatorFPDFAnnotationDeleter21*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_ANNOTATION annot) { FPDFPage_CloseAnnot(annot); } 22*3ac0a46fSAndroid Build Coastguard Worker }; 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Worker struct FPDFAvailDeleter { operatorFPDFAvailDeleter25*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_AVAIL avail) { FPDFAvail_Destroy(avail); } 26*3ac0a46fSAndroid Build Coastguard Worker }; 27*3ac0a46fSAndroid Build Coastguard Worker 28*3ac0a46fSAndroid Build Coastguard Worker struct FPDFBitmapDeleter { operatorFPDFBitmapDeleter29*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_BITMAP bitmap) { FPDFBitmap_Destroy(bitmap); } 30*3ac0a46fSAndroid Build Coastguard Worker }; 31*3ac0a46fSAndroid Build Coastguard Worker 32*3ac0a46fSAndroid Build Coastguard Worker struct FPDFClipPathDeleter { operatorFPDFClipPathDeleter33*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_CLIPPATH clip_path) { 34*3ac0a46fSAndroid Build Coastguard Worker FPDF_DestroyClipPath(clip_path); 35*3ac0a46fSAndroid Build Coastguard Worker } 36*3ac0a46fSAndroid Build Coastguard Worker }; 37*3ac0a46fSAndroid Build Coastguard Worker 38*3ac0a46fSAndroid Build Coastguard Worker struct FPDFDocumentDeleter { operatorFPDFDocumentDeleter39*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_DOCUMENT doc) { FPDF_CloseDocument(doc); } 40*3ac0a46fSAndroid Build Coastguard Worker }; 41*3ac0a46fSAndroid Build Coastguard Worker 42*3ac0a46fSAndroid Build Coastguard Worker struct FPDFFontDeleter { operatorFPDFFontDeleter43*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_FONT font) { FPDFFont_Close(font); } 44*3ac0a46fSAndroid Build Coastguard Worker }; 45*3ac0a46fSAndroid Build Coastguard Worker 46*3ac0a46fSAndroid Build Coastguard Worker struct FPDFFormHandleDeleter { operatorFPDFFormHandleDeleter47*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_FORMHANDLE form) { 48*3ac0a46fSAndroid Build Coastguard Worker FPDFDOC_ExitFormFillEnvironment(form); 49*3ac0a46fSAndroid Build Coastguard Worker } 50*3ac0a46fSAndroid Build Coastguard Worker }; 51*3ac0a46fSAndroid Build Coastguard Worker 52*3ac0a46fSAndroid Build Coastguard Worker struct FPDFJavaScriptActionDeleter { operatorFPDFJavaScriptActionDeleter53*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_JAVASCRIPT_ACTION javascript) { 54*3ac0a46fSAndroid Build Coastguard Worker FPDFDoc_CloseJavaScriptAction(javascript); 55*3ac0a46fSAndroid Build Coastguard Worker } 56*3ac0a46fSAndroid Build Coastguard Worker }; 57*3ac0a46fSAndroid Build Coastguard Worker 58*3ac0a46fSAndroid Build Coastguard Worker struct FPDFPageDeleter { operatorFPDFPageDeleter59*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_PAGE page) { FPDF_ClosePage(page); } 60*3ac0a46fSAndroid Build Coastguard Worker }; 61*3ac0a46fSAndroid Build Coastguard Worker 62*3ac0a46fSAndroid Build Coastguard Worker struct FPDFPageLinkDeleter { operatorFPDFPageLinkDeleter63*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_PAGELINK pagelink) { 64*3ac0a46fSAndroid Build Coastguard Worker FPDFLink_CloseWebLinks(pagelink); 65*3ac0a46fSAndroid Build Coastguard Worker } 66*3ac0a46fSAndroid Build Coastguard Worker }; 67*3ac0a46fSAndroid Build Coastguard Worker 68*3ac0a46fSAndroid Build Coastguard Worker struct FPDFPageObjectDeleter { operatorFPDFPageObjectDeleter69*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_PAGEOBJECT object) { 70*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_Destroy(object); 71*3ac0a46fSAndroid Build Coastguard Worker } 72*3ac0a46fSAndroid Build Coastguard Worker }; 73*3ac0a46fSAndroid Build Coastguard Worker 74*3ac0a46fSAndroid Build Coastguard Worker struct FPDFStructTreeDeleter { operatorFPDFStructTreeDeleter75*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_STRUCTTREE tree) { FPDF_StructTree_Close(tree); } 76*3ac0a46fSAndroid Build Coastguard Worker }; 77*3ac0a46fSAndroid Build Coastguard Worker 78*3ac0a46fSAndroid Build Coastguard Worker struct FPDFTextFindDeleter { operatorFPDFTextFindDeleter79*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_SCHHANDLE handle) { FPDFText_FindClose(handle); } 80*3ac0a46fSAndroid Build Coastguard Worker }; 81*3ac0a46fSAndroid Build Coastguard Worker 82*3ac0a46fSAndroid Build Coastguard Worker struct FPDFTextPageDeleter { operatorFPDFTextPageDeleter83*3ac0a46fSAndroid Build Coastguard Worker inline void operator()(FPDF_TEXTPAGE text) { FPDFText_ClosePage(text); } 84*3ac0a46fSAndroid Build Coastguard Worker }; 85*3ac0a46fSAndroid Build Coastguard Worker 86*3ac0a46fSAndroid Build Coastguard Worker #endif // PUBLIC_CPP_FPDF_DELETERS_H_ 87