| Index: core/fpdfapi/parser/cpdf_document.cpp
|
| diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp
|
| index 35c18997b95cded2635cd6173ab0e57e8cf9f618..83123b27c6be24d89b0fac07812ab793c26b8c23 100644
|
| --- a/core/fpdfapi/parser/cpdf_document.cpp
|
| +++ b/core/fpdfapi/parser/cpdf_document.cpp
|
| @@ -18,6 +18,7 @@
|
| #include "core/fpdfapi/parser/cpdf_array.h"
|
| #include "core/fpdfapi/parser/cpdf_dictionary.h"
|
| #include "core/fpdfapi/parser/cpdf_linearized_header.h"
|
| +#include "core/fpdfapi/parser/cpdf_name.h"
|
| #include "core/fpdfapi/parser/cpdf_number.h"
|
| #include "core/fpdfapi/parser/cpdf_parser.h"
|
| #include "core/fpdfapi/parser/cpdf_reference.h"
|
| @@ -194,13 +195,12 @@ void InsertWidthArrayImpl(int* widths, int size, CPDF_Array* pWidthArray) {
|
| }
|
| if (i == size) {
|
| int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1);
|
| - pWidthArray->AddInteger(first + size - 1);
|
| - pWidthArray->AddInteger(*widths);
|
| + pWidthArray->AddNew<CPDF_Number>(first + size - 1);
|
| + pWidthArray->AddNew<CPDF_Number>(*widths);
|
| } else {
|
| - CPDF_Array* pWidthArray1 = new CPDF_Array;
|
| - pWidthArray->Add(pWidthArray1);
|
| + CPDF_Array* pWidthArray1 = pWidthArray->AddNew<CPDF_Array>();
|
| for (i = 0; i < size; i++)
|
| - pWidthArray1->AddInteger(widths[i]);
|
| + pWidthArray1->AddNew<CPDF_Number>(widths[i]);
|
| }
|
| FX_Free(widths);
|
| }
|
| @@ -688,7 +688,7 @@ bool CPDF_Document::InsertDeletePDFPage(CPDF_Dictionary* pPages,
|
| continue;
|
| }
|
| if (bInsert) {
|
| - pKidList->InsertAt(i, new CPDF_Reference(this, pPageDict->GetObjNum()));
|
| + pKidList->InsertNewAt<CPDF_Reference>(i, this, pPageDict->GetObjNum());
|
| pPageDict->SetReferenceFor("Parent", this, pPages->GetObjNum());
|
| } else {
|
| pKidList->RemoveAt(i);
|
| @@ -733,7 +733,7 @@ bool CPDF_Document::InsertNewPage(int iPage, CPDF_Dictionary* pPageDict) {
|
| pPagesList = new CPDF_Array;
|
| pPages->SetFor("Kids", pPagesList);
|
| }
|
| - pPagesList->Add(new CPDF_Reference(this, pPageDict->GetObjNum()));
|
| + pPagesList->AddNew<CPDF_Reference>(this, pPageDict->GetObjNum());
|
| pPages->SetIntegerFor("Count", nPages + 1);
|
| pPageDict->SetReferenceFor("Parent", this, pPages->GetObjNum());
|
| ResetTraversal();
|
| @@ -785,12 +785,12 @@ size_t CPDF_Document::CalculateEncodingDict(int charset,
|
| pEncodingDict->SetNameFor("BaseEncoding", "WinAnsiEncoding");
|
|
|
| CPDF_Array* pArray = new CPDF_Array;
|
| - pArray->AddInteger(128);
|
| + pArray->AddNew<CPDF_Number>(128);
|
|
|
| const uint16_t* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes;
|
| for (int j = 0; j < 128; j++) {
|
| CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]);
|
| - pArray->AddName(name.IsEmpty() ? ".notdef" : name);
|
| + pArray->AddNew<CPDF_Name>(name.IsEmpty() ? ".notdef" : name);
|
| }
|
| pEncodingDict->SetFor("Differences", pArray);
|
| pBaseDict->SetReferenceFor("Encoding", this, pEncodingDict);
|
| @@ -813,36 +813,36 @@ CPDF_Dictionary* CPDF_Document::ProcessbCJK(
|
| cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H";
|
| ordering = "CNS1";
|
| supplement = 4;
|
| - pWidthArray->AddInteger(1);
|
| + pWidthArray->AddNew<CPDF_Number>(1);
|
| Insert(0x20, 0x7e, pWidthArray);
|
| break;
|
| case FXFONT_GB2312_CHARSET:
|
| cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H";
|
| ordering = "GB1";
|
| supplement = 2;
|
| - pWidthArray->AddInteger(7716);
|
| + pWidthArray->AddNew<CPDF_Number>(7716);
|
| Insert(0x20, 0x20, pWidthArray);
|
| - pWidthArray->AddInteger(814);
|
| + pWidthArray->AddNew<CPDF_Number>(814);
|
| Insert(0x21, 0x7e, pWidthArray);
|
| break;
|
| case FXFONT_HANGUL_CHARSET:
|
| cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H";
|
| ordering = "Korea1";
|
| supplement = 2;
|
| - pWidthArray->AddInteger(1);
|
| + pWidthArray->AddNew<CPDF_Number>(1);
|
| Insert(0x20, 0x7e, pWidthArray);
|
| break;
|
| case FXFONT_SHIFTJIS_CHARSET:
|
| cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H";
|
| ordering = "Japan1";
|
| supplement = 5;
|
| - pWidthArray->AddInteger(231);
|
| + pWidthArray->AddNew<CPDF_Number>(231);
|
| Insert(0x20, 0x7d, pWidthArray);
|
| - pWidthArray->AddInteger(326);
|
| + pWidthArray->AddNew<CPDF_Number>(326);
|
| Insert(0xa0, 0xa0, pWidthArray);
|
| - pWidthArray->AddInteger(327);
|
| + pWidthArray->AddNew<CPDF_Number>(327);
|
| Insert(0xa1, 0xdf, pWidthArray);
|
| - pWidthArray->AddInteger(631);
|
| + pWidthArray->AddNew<CPDF_Number>(631);
|
| Insert(0x7e, 0x7e, pWidthArray);
|
| break;
|
| }
|
| @@ -860,7 +860,7 @@ CPDF_Dictionary* CPDF_Document::ProcessbCJK(
|
| pFontDict->SetFor("CIDSystemInfo", pCIDSysInfo);
|
| CPDF_Array* pArray = new CPDF_Array;
|
| pBaseDict->SetFor("DescendantFonts", pArray);
|
| - pArray->AddReference(this, pFontDict->GetObjNum());
|
| + pArray->AddNew<CPDF_Reference>(this, pFontDict->GetObjNum());
|
| return pFontDict;
|
| }
|
|
|
| @@ -888,7 +888,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, bool bVert) {
|
| for (int charcode = 32; charcode < 128; charcode++) {
|
| int glyph_index = pEncoding->GlyphFromCharCode(charcode);
|
| int char_width = pFont->GetGlyphWidth(glyph_index);
|
| - pWidths->AddInteger(char_width);
|
| + pWidths->AddNew<CPDF_Number>(char_width);
|
| }
|
| if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_DEFAULT_CHARSET ||
|
| charset == FXFONT_SYMBOL_CHARSET) {
|
| @@ -896,7 +896,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, bool bVert) {
|
| for (int charcode = 128; charcode <= 255; charcode++) {
|
| int glyph_index = pEncoding->GlyphFromCharCode(charcode);
|
| int char_width = pFont->GetGlyphWidth(glyph_index);
|
| - pWidths->AddInteger(char_width);
|
| + pWidths->AddNew<CPDF_Number>(char_width);
|
| }
|
| } else {
|
| size_t i = CalculateEncodingDict(charset, pBaseDict);
|
| @@ -905,7 +905,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, bool bVert) {
|
| for (int j = 0; j < 128; j++) {
|
| int glyph_index = pEncoding->GlyphFromCharCode(pUnicodes[j]);
|
| int char_width = pFont->GetGlyphWidth(glyph_index);
|
| - pWidths->AddInteger(char_width);
|
| + pWidths->AddNew<CPDF_Number>(char_width);
|
| }
|
| }
|
| }
|
| @@ -924,10 +924,10 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, bool bVert) {
|
| FX_RECT bbox;
|
| pFont->GetBBox(bbox);
|
| CPDF_Array* pBBox = new CPDF_Array;
|
| - pBBox->AddInteger(bbox.left);
|
| - pBBox->AddInteger(bbox.bottom);
|
| - pBBox->AddInteger(bbox.right);
|
| - pBBox->AddInteger(bbox.top);
|
| + pBBox->AddNew<CPDF_Number>(bbox.left);
|
| + pBBox->AddNew<CPDF_Number>(bbox.bottom);
|
| + pBBox->AddNew<CPDF_Number>(bbox.right);
|
| + pBBox->AddNew<CPDF_Number>(bbox.top);
|
| int32_t nStemV = 0;
|
| if (pFont->GetSubstFont()) {
|
| nStemV = pFont->GetSubstFont()->m_Weight / 5;
|
| @@ -1023,7 +1023,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
|
| GetCharWidth(hDC, 32, 255, char_widths);
|
| CPDF_Array* pWidths = new CPDF_Array;
|
| for (size_t i = 0; i < 224; i++)
|
| - pWidths->AddInteger(char_widths[i]);
|
| + pWidths->AddNew<CPDF_Number>(char_widths[i]);
|
| ProcessNonbCJK(pBaseDict, pLogFont->lfWeight > FW_MEDIUM,
|
| pLogFont->lfItalic != 0, basefont, pWidths);
|
| } else {
|
| @@ -1035,7 +1035,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
|
| }
|
| CPDF_Array* pBBox = new CPDF_Array;
|
| for (int i = 0; i < 4; i++)
|
| - pBBox->AddInteger(bbox[i]);
|
| + pBBox->AddNew<CPDF_Number>(bbox[i]);
|
| std::unique_ptr<CPDF_Dictionary> pFontDesc =
|
| CalculateFontDesc(this, basefont, flags, italicangle, ascend, descend,
|
| pBBox, pLogFont->lfWeight / 5);
|
|
|