Small cleanup of CPDF_TextObject and other CPDF_PageObject subclasses.
[pdfium.git] / core / src / fxcodec / jbig2 / JBig2_SymbolDict.cpp
index 8516c04..e9bb9c6 100644 (file)
@@ -1,34 +1,58 @@
-// Copyright 2014 PDFium Authors. All rights reserved.\r
-// Use of this source code is governed by a BSD-style license that can be\r
-// found in the LICENSE file.\r
\r
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
-\r
-#include "JBig2_SymbolDict.h"\r
-CJBig2_SymbolDict::CJBig2_SymbolDict()\r
-{\r
-    SDNUMEXSYMS = 0;\r
-    SDEXSYMS = NULL;\r
-    m_bContextRetained = FALSE;\r
-    m_gbContext = m_grContext = NULL;\r
-}\r
-\r
-CJBig2_SymbolDict::~CJBig2_SymbolDict()\r
-{\r
-    if(SDEXSYMS) {\r
-        for(FX_DWORD i = 0; i < SDNUMEXSYMS; i++) {\r
-            if(SDEXSYMS[i]) {\r
-                delete SDEXSYMS[i];\r
-            }\r
-        }\r
-        m_pModule->JBig2_Free(SDEXSYMS);\r
-    }\r
-    if(m_bContextRetained) {\r
-        if(m_gbContext) {\r
-            m_pModule->JBig2_Free(m_gbContext);\r
-        }\r
-        if(m_grContext) {\r
-            m_pModule->JBig2_Free(m_grContext);\r
-        }\r
-    }\r
-}\r
+// 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
+
+#include "JBig2_SymbolDict.h"
+CJBig2_SymbolDict::CJBig2_SymbolDict()
+{
+    SDNUMEXSYMS = 0;
+    SDEXSYMS = NULL;
+    m_bContextRetained = FALSE;
+    m_gbContext = m_grContext = NULL;
+}
+
+CJBig2_SymbolDict *CJBig2_SymbolDict::DeepCopy()
+{
+    CJBig2_SymbolDict *dst = NULL;
+    CJBig2_SymbolDict *src = this;
+    if (src->m_bContextRetained ||
+        src->m_gbContext ||
+        src->m_grContext) {
+        return NULL;
+    }
+    JBIG2_ALLOC(dst, CJBig2_SymbolDict());
+    dst->SDNUMEXSYMS = src->SDNUMEXSYMS;
+    dst->SDEXSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(
+        sizeof(CJBig2_Image*), src->SDNUMEXSYMS);
+    for(FX_DWORD i = 0; i < src->SDNUMEXSYMS; i++) {
+        if (src->SDEXSYMS[i]) {
+            JBIG2_ALLOC(dst->SDEXSYMS[i],
+                        CJBig2_Image(*(src->SDEXSYMS[i])));
+        } else {
+            dst->SDEXSYMS[i] = NULL;
+        }
+    }
+    return dst;
+}
+
+CJBig2_SymbolDict::~CJBig2_SymbolDict()
+{
+    if(SDEXSYMS) {
+        for(FX_DWORD i = 0; i < SDNUMEXSYMS; i++) {
+            if(SDEXSYMS[i]) {
+                delete SDEXSYMS[i];
+            }
+        }
+        m_pModule->JBig2_Free(SDEXSYMS);
+    }
+    if(m_bContextRetained) {
+        if(m_gbContext) {
+            m_pModule->JBig2_Free(m_gbContext);
+        }
+        if(m_grContext) {
+            m_pModule->JBig2_Free(m_grContext);
+        }
+    }
+}