Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1387)

Unified Diff: core/fpdfapi/fpdf_parser/cpdf_document.cpp

Issue 2345063002: Use string pools in some dictionaries (Closed)
Patch Set: Remove default ctor Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: core/fpdfapi/fpdf_parser/cpdf_document.cpp
diff --git a/core/fpdfapi/fpdf_parser/cpdf_document.cpp b/core/fpdfapi/fpdf_parser/cpdf_document.cpp
index 6b58aea59f1c96a84af8d390b4a8e96de2f1928c..a3d93844bc7679870de3829df1541ebb3d1dc240 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_document.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_document.cpp
@@ -671,21 +671,21 @@ CPDF_Image* CPDF_Document::LoadImageF(CPDF_Object* pObj) {
void CPDF_Document::CreateNewDoc() {
ASSERT(!m_pRootDict && !m_pInfoDict);
- m_pRootDict = new CPDF_Dictionary;
+ m_pRootDict = new CPDF_Dictionary(this);
m_pRootDict->SetNameFor("Type", "Catalog");
int objnum = AddIndirectObject(m_pRootDict);
- CPDF_Dictionary* pPages = new CPDF_Dictionary;
+ CPDF_Dictionary* pPages = new CPDF_Dictionary(this);
pPages->SetNameFor("Type", "Pages");
pPages->SetNumberFor("Count", 0);
pPages->SetFor("Kids", new CPDF_Array);
objnum = AddIndirectObject(pPages);
m_pRootDict->SetReferenceFor("Pages", this, objnum);
- m_pInfoDict = new CPDF_Dictionary;
+ m_pInfoDict = new CPDF_Dictionary(this);
AddIndirectObject(m_pInfoDict);
}
CPDF_Dictionary* CPDF_Document::CreateNewPage(int iPage) {
- CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ CPDF_Dictionary* pDict = new CPDF_Dictionary(this);
pDict->SetNameFor("Type", "Page");
uint32_t dwObjNum = AddIndirectObject(pDict);
if (InsertNewPage(this, iPage, pDict, m_PageList) < 0) {
@@ -728,7 +728,7 @@ size_t CPDF_Document::CalculateEncodingDict(int charset,
}
if (i == FX_ArraySize(g_FX_CharsetUnicodes))
return i;
- CPDF_Dictionary* pEncodingDict = new CPDF_Dictionary;
+ CPDF_Dictionary* pEncodingDict = new CPDF_Dictionary(this);
pEncodingDict->SetNameFor("BaseEncoding", "WinAnsiEncoding");
CPDF_Array* pArray = new CPDF_Array;
pArray->AddInteger(128);
@@ -757,7 +757,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) {
CalculateFlags(pFont->IsBold(), pFont->IsItalic(), pFont->IsFixedWidth(),
false, false, charset == FXFONT_SYMBOL_CHARSET);
- CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
+ CPDF_Dictionary* pBaseDict = new CPDF_Dictionary(this);
pBaseDict->SetNameFor("Type", "Font");
std::unique_ptr<CFX_UnicodeEncoding> pEncoding(
new CFX_UnicodeEncoding(pFont));
@@ -792,7 +792,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) {
pWidths);
} else {
flags |= PDFFONT_NONSYMBOLIC;
- pFontDict = new CPDF_Dictionary;
+ pFontDict = new CPDF_Dictionary(this);
CFX_ByteString cmap;
CFX_ByteString ordering;
int supplement = 0;
@@ -842,7 +842,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) {
pFontDict->SetNameFor("Type", "Font");
pFontDict->SetNameFor("Subtype", "CIDFontType2");
pFontDict->SetNameFor("BaseFont", basefont);
- CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary;
+ CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary(this);
pCIDSysInfo->SetStringFor("Registry", "Adobe");
pCIDSysInfo->SetStringFor("Ordering", ordering);
pCIDSysInfo->SetIntegerFor("Supplement", supplement);
@@ -853,7 +853,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) {
pArray->AddReference(this, pFontDict);
}
AddIndirectObject(pBaseDict);
- CPDF_Dictionary* pFontDesc = new CPDF_Dictionary;
+ CPDF_Dictionary* pFontDesc = new CPDF_Dictionary(this);
pFontDesc->SetNameFor("Type", "FontDescriptor");
pFontDesc->SetNameFor("FontName", basefont);
pFontDesc->SetIntegerFor("Flags", flags);
@@ -949,7 +949,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
ptm->otmrcFontBox.right, ptm->otmrcFontBox.top};
FX_Free(tm_buf);
basefont.Replace(" ", "");
- CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
+ CPDF_Dictionary* pBaseDict = new CPDF_Dictionary(this);
pBaseDict->SetNameFor("Type", "Font");
CPDF_Dictionary* pFontDict = pBaseDict;
if (!bCJK) {
@@ -968,7 +968,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
ProcessNonbCJK(pBaseDict, pLogFont->lfWeight > FW_MEDIUM,
pLogFont->lfItalic != 0, basefont, pWidths);
} else {
- pFontDict = new CPDF_Dictionary;
+ pFontDict = new CPDF_Dictionary(this);
CFX_ByteString cmap;
CFX_ByteString ordering;
int supplement = 0;
@@ -1017,7 +1017,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
pFontDict->SetNameFor("Type", "Font");
pFontDict->SetNameFor("Subtype", "CIDFontType2");
pFontDict->SetNameFor("BaseFont", basefont);
- CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary;
+ CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary(this);
pCIDSysInfo->SetStringFor("Registry", "Adobe");
pCIDSysInfo->SetStringFor("Ordering", ordering);
pCIDSysInfo->SetIntegerFor("Supplement", supplement);
@@ -1028,7 +1028,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
pArray->AddReference(this, pFontDict);
}
AddIndirectObject(pBaseDict);
- CPDF_Dictionary* pFontDesc = new CPDF_Dictionary;
+ CPDF_Dictionary* pFontDesc = new CPDF_Dictionary(this);
pFontDesc->SetNameFor("Type", "FontDescriptor");
pFontDesc->SetNameFor("FontName", basefont);
pFontDesc->SetIntegerFor("Flags", flags);

Powered by Google App Engine
This is Rietveld 408576698