Clean up CPDF_AnnotList.
[pdfium.git] / fpdfsdk / src / fpdfsave.cpp
index ddd6f6e..7115f6d 100644 (file)
 #include <ctime>
 #endif
 
-class CFX_IFileWrite final : public IFX_StreamWrite
-{
+class CFX_IFileWrite final : public IFX_StreamWrite {
+ public:
+  CFX_IFileWrite();
+  FX_BOOL Init(FPDF_FILEWRITE* pFileWriteStruct);
+  FX_BOOL WriteBlock(const void* pData, size_t size) override;
+  void Release() override;
 
-public:
-    CFX_IFileWrite();
-    FX_BOOL             Init( FPDF_FILEWRITE * pFileWriteStruct );
-    virtual FX_BOOL     WriteBlock(const void* pData, size_t size) override;
-    virtual void        Release() override {}
+ protected:
+  ~CFX_IFileWrite() override {}
 
-protected:
-    FPDF_FILEWRITE*     m_pFileWriteStruct;
+  FPDF_FILEWRITE* m_pFileWriteStruct;
 };
 
-CFX_IFileWrite::CFX_IFileWrite()
-{
-    m_pFileWriteStruct = NULL;
+CFX_IFileWrite::CFX_IFileWrite() {
+  m_pFileWriteStruct = NULL;
 }
 
-FX_BOOL CFX_IFileWrite::Init( FPDF_FILEWRITE * pFileWriteStruct )
-{
-    if (!pFileWriteStruct)
-        return FALSE;
+FX_BOOL CFX_IFileWrite::Init(FPDF_FILEWRITE* pFileWriteStruct) {
+  if (!pFileWriteStruct)
+    return FALSE;
 
-    m_pFileWriteStruct = pFileWriteStruct;
-    return TRUE;
+  m_pFileWriteStruct = pFileWriteStruct;
+  return TRUE;
 }
 
-FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size)
-{
-    if (!m_pFileWriteStruct)
-        return FALSE;
+FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size) {
+  if (!m_pFileWriteStruct)
+    return FALSE;
 
-    m_pFileWriteStruct->WriteBlock( m_pFileWriteStruct, pData, size );
-    return TRUE;
+  m_pFileWriteStruct->WriteBlock(m_pFileWriteStruct, pData, size);
+  return TRUE;
 }
 
-FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,FPDF_DWORD flags, FPDF_BOOL bSetVersion,
-                         int fileVerion)
-{
-    CPDF_Document* pDoc = (CPDF_Document*)document;
-    if (!pDoc)
-        return 0;
-
-    if ( flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY )
-    {
-        flags = 0;
-    }
-
-    CPDF_Creator FileMaker(pDoc);
-    if(bSetVersion)
-        FileMaker.SetFileVersion(fileVerion);
-    if(flags == FPDF_REMOVE_SECURITY)
-    {
-        flags =  0;
-        FileMaker.RemoveSecurity();
-    }
-    CFX_IFileWrite* pStreamWrite = NULL;
-    FX_BOOL bRet;
-    pStreamWrite = new CFX_IFileWrite;
-    pStreamWrite->Init( pFileWrite );
-    bRet = FileMaker.Create(pStreamWrite, flags);
-    delete pStreamWrite;
-    return bRet;
+void CFX_IFileWrite::Release() {
+  delete this;
 }
 
-DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(    FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
-                                                FPDF_DWORD flags )
-{
-    return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE , 0);
+FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,
+                         FPDF_FILEWRITE* pFileWrite,
+                         FPDF_DWORD flags,
+                         FPDF_BOOL bSetVersion,
+                         int fileVerion) {
+  CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
+  if (!pDoc)
+    return 0;
+
+  if (flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY) {
+    flags = 0;
+  }
+
+  CPDF_Creator FileMaker(pDoc);
+  if (bSetVersion)
+    FileMaker.SetFileVersion(fileVerion);
+  if (flags == FPDF_REMOVE_SECURITY) {
+    flags = 0;
+    FileMaker.RemoveSecurity();
+  }
+  CFX_IFileWrite* pStreamWrite = NULL;
+  FX_BOOL bRet;
+  pStreamWrite = new CFX_IFileWrite;
+  pStreamWrite->Init(pFileWrite);
+  bRet = FileMaker.Create(pStreamWrite, flags);
+  pStreamWrite->Release();
+  return bRet;
 }
 
+DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(FPDF_DOCUMENT document,
+                                            FPDF_FILEWRITE* pFileWrite,
+                                            FPDF_DWORD flags) {
+  return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE, 0);
+}
 
-DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(   FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
-    FPDF_DWORD flags, int fileVersion)
-{
-    return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE , fileVersion);
+DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document,
+                                                 FPDF_FILEWRITE* pFileWrite,
+                                                 FPDF_DWORD flags,
+                                                 int fileVersion) {
+  return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE, fileVersion);
 }