Replace some Release() calls with virtual destructors.
[pdfium.git] / core / include / fxcodec / fx_codec.h
index 75c7480..e3d69e5 100644 (file)
@@ -1,13 +1,14 @@
 // Copyright 2014 PDFium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
+
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
 #ifndef CORE_INCLUDE_FXCODEC_FX_CODEC_H_
 #define CORE_INCLUDE_FXCODEC_FX_CODEC_H_
 
-#include "../fxcrt/fx_ext.h"
+#include "../../../third_party/base/nonstd_unique_ptr.h"
+#include "../fxcrt/fx_basic.h"
 #include "fx_codec_def.h"
 #include "fx_codec_provider.h"
 
@@ -22,65 +23,30 @@ class ICodec_IccModule;
 class ICodec_FlateModule;
 class ICodec_Jbig2Encoder;
 class ICodec_ScanlineDecoder;
-class CCodec_ModuleMgr 
+
+class CCodec_ModuleMgr
 {
 public:
-
-    static CCodec_ModuleMgr*   Create();
-
-    void                               Destroy();
-
-    void                               InitJbig2Decoder();
-
-    void                               InitJpxDecoder();
-
-
-    void                               InitIccDecoder();
-
-    ICodec_Jbig2Encoder*               CreateJbig2Encoder();
-protected:
     CCodec_ModuleMgr();
-    ~CCodec_ModuleMgr();
-public:
-    ICodec_BasicModule*        GetBasicModule()
-    {
-        return m_pBasicModule;
-    }
-    ICodec_FaxModule*  GetFaxModule()
-    {
-        return m_pFaxModule;
-    }
-    ICodec_JpegModule* GetJpegModule()
-    {
-        return m_pJpegModule;
-    }
-    ICodec_JpxModule*  GetJpxModule()
-    {
-        return m_pJpxModule;
-    }
-    ICodec_Jbig2Module*        GetJbig2Module()
-    {
-        return m_pJbig2Module;
-    }
-    ICodec_IccModule*  GetIccModule()
-    {
-        return m_pIccModule;
-    }
-    ICodec_FlateModule*        GetFlateModule()
-    {
-        return m_pFlateModule;
-    }
-protected:
-    ICodec_BasicModule*        m_pBasicModule;
-    ICodec_FaxModule*  m_pFaxModule;
-    ICodec_JpegModule* m_pJpegModule;
-    ICodec_JpxModule*  m_pJpxModule;
-    ICodec_Jbig2Module*        m_pJbig2Module;
-    ICodec_IccModule*  m_pIccModule;
-    ICodec_FlateModule*        m_pFlateModule;
+    ICodec_Jbig2Encoder* CreateJbig2Encoder();
+    ICodec_BasicModule* GetBasicModule() const { return m_pBasicModule.get(); }
+    ICodec_FaxModule* GetFaxModule() const { return m_pFaxModule.get(); }
+    ICodec_JpegModule* GetJpegModule() const { return m_pJpegModule.get(); }
+    ICodec_JpxModule* GetJpxModule() const { return m_pJpxModule.get(); }
+    ICodec_Jbig2Module* GetJbig2Module() const { return m_pJbig2Module.get(); }
+    ICodec_IccModule* GetIccModule() const { return m_pIccModule.get(); }
+    ICodec_FlateModule* GetFlateModule() const { return m_pFlateModule.get(); }
 
+protected:
+    nonstd::unique_ptr<ICodec_BasicModule> m_pBasicModule;
+    nonstd::unique_ptr<ICodec_FaxModule> m_pFaxModule;
+    nonstd::unique_ptr<ICodec_JpegModule> m_pJpegModule;
+    nonstd::unique_ptr<ICodec_JpxModule> m_pJpxModule;
+    nonstd::unique_ptr<ICodec_Jbig2Module> m_pJbig2Module;
+    nonstd::unique_ptr<ICodec_IccModule> m_pIccModule;
+    nonstd::unique_ptr<ICodec_FlateModule> m_pFlateModule;
 };
-class ICodec_BasicModule 
+class ICodec_BasicModule
 {
 public:
 
@@ -92,7 +58,7 @@ public:
     virtual ICodec_ScanlineDecoder*    CreateRunLengthDecoder(const uint8_t* src_buf, FX_DWORD src_size, int width, int height,
             int nComps, int bpc) = 0;
 };
-class ICodec_ScanlineDecoder 
+class ICodec_ScanlineDecoder
 {
 public:
 
@@ -118,7 +84,7 @@ public:
 
     virtual void               ClearImageData() = 0;
 };
-class ICodec_FlateModule 
+class ICodec_FlateModule
 {
 public:
 
@@ -133,7 +99,7 @@ public:
                                uint8_t*& dest_buf, FX_DWORD& dest_size) = 0;
     virtual FX_BOOL            Encode(const uint8_t* src_buf, FX_DWORD src_size, uint8_t*& dest_buf, FX_DWORD& dest_size) = 0;
 };
-class ICodec_FaxModule 
+class ICodec_FaxModule
 {
 public:
 
@@ -146,7 +112,7 @@ public:
     virtual FX_BOOL            Encode(const uint8_t* src_buf, int width, int height, int pitch,
                                uint8_t*& dest_buf, FX_DWORD& dest_size) = 0;
 };
-class ICodec_JpegModule 
+class ICodec_JpegModule
 {
 public:
 
@@ -181,7 +147,7 @@ public:
 
     virtual FX_DWORD   GetAvailInput(void* pContext, uint8_t** avail_buf_ptr = NULL) = 0;
 };
-class ICodec_JpxModule 
+class ICodec_JpxModule
 {
 public:
 
@@ -197,7 +163,7 @@ public:
 
     virtual void               DestroyDecoder(void* ctx) = 0;
 };
-class ICodec_Jbig2Module 
+class ICodec_Jbig2Module
 {
 public:
 
@@ -218,13 +184,13 @@ public:
     virtual FXCODEC_STATUS             ContinueDecode(void* pJbig2Content, IFX_Pause* pPause) = 0;
     virtual void                               DestroyJbig2Context(void* pJbig2Content) = 0;
 };
-class ICodec_Jbig2Encoder 
+class ICodec_Jbig2Encoder
 {
 public:
 
     virtual ~ICodec_Jbig2Encoder() {}
 };
-class ICodec_IccModule 
+class ICodec_IccModule
 {
 public:
     typedef enum {