summaryrefslogtreecommitdiff
path: root/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp')
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp67
1 files changed, 7 insertions, 60 deletions
diff --git a/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp b/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
index e6a5227269..9c84b4ae28 100644
--- a/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
+++ b/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
@@ -9,69 +9,16 @@
#include "core/fpdfapi/fpdf_page/include/cpdf_path.h"
#include "core/fpdfapi/fpdf_page/include/cpdf_textobject.h"
-CPDF_ClipPathData::CPDF_ClipPathData()
- : m_PathCount(0),
- m_pPathList(nullptr),
- m_pTypeList(nullptr),
- m_TextCount(0),
- m_pTextList(nullptr) {}
+CPDF_ClipPathData::CPDF_ClipPathData() {}
-CPDF_ClipPathData::~CPDF_ClipPathData() {
- delete[] m_pPathList;
- FX_Free(m_pTypeList);
-
- for (int i = m_TextCount - 1; i > -1; i--)
- delete m_pTextList[i];
- FX_Free(m_pTextList);
-}
+CPDF_ClipPathData::~CPDF_ClipPathData() {}
CPDF_ClipPathData::CPDF_ClipPathData(const CPDF_ClipPathData& src) {
- m_pPathList = nullptr;
- m_pPathList = nullptr;
- m_pTextList = nullptr;
-
- m_PathCount = src.m_PathCount;
- if (m_PathCount) {
- int alloc_size = m_PathCount;
- if (alloc_size % 8)
- alloc_size += 8 - (alloc_size % 8);
-
- m_pPathList = new CPDF_Path[alloc_size];
- for (int i = 0; i < m_PathCount; i++)
- m_pPathList[i] = src.m_pPathList[i];
-
- m_pTypeList = FX_Alloc(uint8_t, alloc_size);
- FXSYS_memcpy(m_pTypeList, src.m_pTypeList, m_PathCount);
- } else {
- m_pPathList = nullptr;
- m_pTypeList = nullptr;
- }
-
- m_TextCount = src.m_TextCount;
- if (m_TextCount) {
- m_pTextList = FX_Alloc(CPDF_TextObject*, m_TextCount);
- for (int i = 0; i < m_TextCount; i++) {
- if (src.m_pTextList[i])
- m_pTextList[i] = src.m_pTextList[i]->Clone();
- else
- m_pTextList[i] = nullptr;
- }
- } else {
- m_pTextList = nullptr;
- }
-}
-
-void CPDF_ClipPathData::SetCount(int path_count, int text_count) {
- ASSERT(m_TextCount == 0 && m_PathCount == 0);
- if (path_count) {
- m_PathCount = path_count;
- int alloc_size = (path_count + 7) / 8 * 8;
- m_pPathList = new CPDF_Path[alloc_size];
- m_pTypeList = FX_Alloc(uint8_t, alloc_size);
- }
+ m_PathAndTypeList = src.m_PathAndTypeList;
- if (text_count) {
- m_TextCount = text_count;
- m_pTextList = FX_Alloc(CPDF_TextObject*, text_count);
+ m_TextList.resize(src.m_TextList.size());
+ for (size_t i = 0; i < src.m_TextList.size(); ++i) {
+ if (src.m_TextList[i])
+ m_TextList[i].reset(src.m_TextList[i]->Clone());
}
}