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

Side by Side Diff: core/fpdfapi/font/cpdf_cidfont.cpp

Issue 2641853004: use unique_ptr in fpdf_font_cid.cpp (Closed)
Patch Set: iwyu, maybe owned Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/fpdfapi/font/cpdf_cidfont.h" 7 #include "core/fpdfapi/font/cpdf_cidfont.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 FXFT_Set_Charmap(face, *FXFT_Get_Face_Charmaps(face)); 193 FXFT_Set_Charmap(face, *FXFT_Get_Face_Charmaps(face));
194 } 194 }
195 195
196 bool IsMetricForCID(const uint32_t* pEntry, uint16_t CID) { 196 bool IsMetricForCID(const uint32_t* pEntry, uint16_t CID) {
197 return pEntry[0] <= CID && pEntry[1] >= CID; 197 return pEntry[0] <= CID && pEntry[1] >= CID;
198 } 198 }
199 199
200 } // namespace 200 } // namespace
201 201
202 CPDF_CIDFont::CPDF_CIDFont() 202 CPDF_CIDFont::CPDF_CIDFont()
203 : m_pCMap(nullptr), 203 : m_pCID2UnicodeMap(nullptr),
204 m_pCID2UnicodeMap(nullptr),
205 m_bCIDIsGID(false), 204 m_bCIDIsGID(false),
206 m_bAnsiWidthsFixed(false), 205 m_bAnsiWidthsFixed(false),
207 m_bAdobeCourierStd(false) { 206 m_bAdobeCourierStd(false) {
208 for (size_t i = 0; i < FX_ArraySize(m_CharBBox); ++i) 207 for (size_t i = 0; i < FX_ArraySize(m_CharBBox); ++i)
209 m_CharBBox[i] = FX_RECT(-1, -1, -1, -1); 208 m_CharBBox[i] = FX_RECT(-1, -1, -1, -1);
210 } 209 }
211 210
212 CPDF_CIDFont::~CPDF_CIDFont() {} 211 CPDF_CIDFont::~CPDF_CIDFont() {}
213 212
214 bool CPDF_CIDFont::IsCIDFont() const { 213 bool CPDF_CIDFont::IsCIDFont() const {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 m_bType1 = (subtype == "CIDFontType0"); 352 m_bType1 = (subtype == "CIDFontType0");
354 353
355 CPDF_CMapManager& manager = GetFontGlobals()->m_CMapManager; 354 CPDF_CMapManager& manager = GetFontGlobals()->m_CMapManager;
356 if (pEncoding->IsName()) { 355 if (pEncoding->IsName()) {
357 CFX_ByteString cmap = pEncoding->GetString(); 356 CFX_ByteString cmap = pEncoding->GetString();
358 bool bPromptCJK = m_pFontFile && m_bType1; 357 bool bPromptCJK = m_pFontFile && m_bType1;
359 m_pCMap = manager.GetPredefinedCMap(cmap, bPromptCJK); 358 m_pCMap = manager.GetPredefinedCMap(cmap, bPromptCJK);
360 if (!m_pCMap) 359 if (!m_pCMap)
361 return false; 360 return false;
362 } else if (CPDF_Stream* pStream = pEncoding->AsStream()) { 361 } else if (CPDF_Stream* pStream = pEncoding->AsStream()) {
363 m_pCMap = new CPDF_CMap; 362 m_pCMap = pdfium::MakeUnique<CPDF_CMap>();
364 m_pAllocatedCMap.reset(m_pCMap);
365 CPDF_StreamAcc acc; 363 CPDF_StreamAcc acc;
366 acc.LoadAllData(pStream, false); 364 acc.LoadAllData(pStream, false);
367 m_pCMap->LoadEmbedded(acc.GetData(), acc.GetSize()); 365 m_pCMap->LoadEmbedded(acc.GetData(), acc.GetSize());
368 } else { 366 } else {
369 return false; 367 return false;
370 } 368 }
371 369
372 m_Charset = m_pCMap->m_Charset; 370 m_Charset = m_pCMap->m_Charset;
373 if (m_Charset == CIDSET_UNKNOWN) { 371 if (m_Charset == CIDSET_UNKNOWN) {
374 CPDF_Dictionary* pCIDInfo = pCIDFontDict->GetDictFor("CIDSystemInfo"); 372 CPDF_Dictionary* pCIDInfo = pCIDFontDict->GetDictFor("CIDSystemInfo");
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 if (m_Charset != CIDSET_JAPAN1 || m_pFontFile) 842 if (m_Charset != CIDSET_JAPAN1 || m_pFontFile)
845 return nullptr; 843 return nullptr;
846 844
847 const auto* pEnd = g_Japan1_VertCIDs + FX_ArraySize(g_Japan1_VertCIDs); 845 const auto* pEnd = g_Japan1_VertCIDs + FX_ArraySize(g_Japan1_VertCIDs);
848 const auto* pTransform = std::lower_bound( 846 const auto* pTransform = std::lower_bound(
849 g_Japan1_VertCIDs, pEnd, CID, 847 g_Japan1_VertCIDs, pEnd, CID,
850 [](const CIDTransform& entry, uint16_t cid) { return entry.cid < cid; }); 848 [](const CIDTransform& entry, uint16_t cid) { return entry.cid < cid; });
851 return (pTransform < pEnd && CID == pTransform->cid) ? &pTransform->a 849 return (pTransform < pEnd && CID == pTransform->cid) ? &pTransform->a
852 : nullptr; 850 : nullptr;
853 } 851 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698