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

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

Issue 2368693002: Remove FX_BOOL from cpdf_font (Closed)
Patch Set: And again 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 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/fpdf_font/cpdf_cidfont.h" 7 #include "core/fpdfapi/fpdf_font/cpdf_cidfont.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 220
221 CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() { 221 CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() {
222 return this; 222 return this;
223 } 223 }
224 224
225 uint16_t CPDF_CIDFont::CIDFromCharCode(uint32_t charcode) const { 225 uint16_t CPDF_CIDFont::CIDFromCharCode(uint32_t charcode) const {
226 return m_pCMap ? m_pCMap->CIDFromCharCode(charcode) 226 return m_pCMap ? m_pCMap->CIDFromCharCode(charcode)
227 : static_cast<uint16_t>(charcode); 227 : static_cast<uint16_t>(charcode);
228 } 228 }
229 229
230 FX_BOOL CPDF_CIDFont::IsVertWriting() const { 230 bool CPDF_CIDFont::IsVertWriting() const {
231 return m_pCMap && m_pCMap->IsVertWriting(); 231 return m_pCMap && m_pCMap->IsVertWriting();
232 } 232 }
233 233
234 CFX_WideString CPDF_CIDFont::UnicodeFromCharCode(uint32_t charcode) const { 234 CFX_WideString CPDF_CIDFont::UnicodeFromCharCode(uint32_t charcode) const {
235 CFX_WideString str = CPDF_Font::UnicodeFromCharCode(charcode); 235 CFX_WideString str = CPDF_Font::UnicodeFromCharCode(charcode);
236 if (!str.IsEmpty()) 236 if (!str.IsEmpty())
237 return str; 237 return str;
238 FX_WCHAR ret = GetUnicodeFromCharCode(charcode); 238 FX_WCHAR ret = GetUnicodeFromCharCode(charcode);
239 return ret ? ret : CFX_WideString(); 239 return ret ? ret : CFX_WideString();
240 } 240 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 return buffer[0] * 256 + buffer[1]; 311 return buffer[0] * 256 + buffer[1];
312 #else 312 #else
313 if (m_pCMap->m_pEmbedMap) { 313 if (m_pCMap->m_pEmbedMap) {
314 return EmbeddedCharcodeFromUnicode(m_pCMap->m_pEmbedMap, m_pCMap->m_Charset, 314 return EmbeddedCharcodeFromUnicode(m_pCMap->m_pEmbedMap, m_pCMap->m_Charset,
315 unicode); 315 unicode);
316 } 316 }
317 #endif 317 #endif
318 return 0; 318 return 0;
319 } 319 }
320 320
321 FX_BOOL CPDF_CIDFont::Load() { 321 bool CPDF_CIDFont::Load() {
322 if (m_pFontDict->GetStringFor("Subtype") == "TrueType") { 322 if (m_pFontDict->GetStringFor("Subtype") == "TrueType") {
323 LoadGB2312(); 323 LoadGB2312();
324 return TRUE; 324 return true;
325 } 325 }
326 326
327 CPDF_Array* pFonts = m_pFontDict->GetArrayFor("DescendantFonts"); 327 CPDF_Array* pFonts = m_pFontDict->GetArrayFor("DescendantFonts");
328 if (!pFonts || pFonts->GetCount() != 1) 328 if (!pFonts || pFonts->GetCount() != 1)
329 return FALSE; 329 return false;
330 330
331 CPDF_Dictionary* pCIDFontDict = pFonts->GetDictAt(0); 331 CPDF_Dictionary* pCIDFontDict = pFonts->GetDictAt(0);
332 if (!pCIDFontDict) 332 if (!pCIDFontDict)
333 return FALSE; 333 return false;
334 334
335 m_BaseFont = pCIDFontDict->GetStringFor("BaseFont"); 335 m_BaseFont = pCIDFontDict->GetStringFor("BaseFont");
336 if ((m_BaseFont.Compare("CourierStd") == 0 || 336 if ((m_BaseFont.Compare("CourierStd") == 0 ||
337 m_BaseFont.Compare("CourierStd-Bold") == 0 || 337 m_BaseFont.Compare("CourierStd-Bold") == 0 ||
338 m_BaseFont.Compare("CourierStd-BoldOblique") == 0 || 338 m_BaseFont.Compare("CourierStd-BoldOblique") == 0 ||
339 m_BaseFont.Compare("CourierStd-Oblique") == 0) && 339 m_BaseFont.Compare("CourierStd-Oblique") == 0) &&
340 !IsEmbedded()) { 340 !IsEmbedded()) {
341 m_bAdobeCourierStd = true; 341 m_bAdobeCourierStd = true;
342 } 342 }
343 CPDF_Dictionary* pFontDesc = pCIDFontDict->GetDictFor("FontDescriptor"); 343 CPDF_Dictionary* pFontDesc = pCIDFontDict->GetDictFor("FontDescriptor");
344 if (pFontDesc) 344 if (pFontDesc)
345 LoadFontDescriptor(pFontDesc); 345 LoadFontDescriptor(pFontDesc);
346 346
347 CPDF_Object* pEncoding = m_pFontDict->GetDirectObjectFor("Encoding"); 347 CPDF_Object* pEncoding = m_pFontDict->GetDirectObjectFor("Encoding");
348 if (!pEncoding) 348 if (!pEncoding)
349 return FALSE; 349 return false;
350 350
351 CFX_ByteString subtype = pCIDFontDict->GetStringFor("Subtype"); 351 CFX_ByteString subtype = pCIDFontDict->GetStringFor("Subtype");
352 m_bType1 = (subtype == "CIDFontType0"); 352 m_bType1 = (subtype == "CIDFontType0");
353 353
354 CPDF_CMapManager& manager = GetFontGlobals()->m_CMapManager; 354 CPDF_CMapManager& manager = GetFontGlobals()->m_CMapManager;
355 if (pEncoding->IsName()) { 355 if (pEncoding->IsName()) {
356 CFX_ByteString cmap = pEncoding->GetString(); 356 CFX_ByteString cmap = pEncoding->GetString();
357 bool bPromptCJK = m_pFontFile && m_bType1; 357 bool bPromptCJK = m_pFontFile && m_bType1;
358 m_pCMap = manager.GetPredefinedCMap(cmap, bPromptCJK); 358 m_pCMap = manager.GetPredefinedCMap(cmap, bPromptCJK);
359 if (!m_pCMap) 359 if (!m_pCMap)
360 return FALSE; 360 return false;
361 } else if (CPDF_Stream* pStream = pEncoding->AsStream()) { 361 } else if (CPDF_Stream* pStream = pEncoding->AsStream()) {
362 m_pCMap = new CPDF_CMap; 362 m_pCMap = new CPDF_CMap;
363 m_pAllocatedCMap.reset(m_pCMap); 363 m_pAllocatedCMap.reset(m_pCMap);
364 CPDF_StreamAcc acc; 364 CPDF_StreamAcc acc;
365 acc.LoadAllData(pStream, FALSE); 365 acc.LoadAllData(pStream, FALSE);
366 m_pCMap->LoadEmbedded(acc.GetData(), acc.GetSize()); 366 m_pCMap->LoadEmbedded(acc.GetData(), acc.GetSize());
367 } else { 367 } else {
368 return FALSE; 368 return false;
369 } 369 }
370 370
371 m_Charset = m_pCMap->m_Charset; 371 m_Charset = m_pCMap->m_Charset;
372 if (m_Charset == CIDSET_UNKNOWN) { 372 if (m_Charset == CIDSET_UNKNOWN) {
373 CPDF_Dictionary* pCIDInfo = pCIDFontDict->GetDictFor("CIDSystemInfo"); 373 CPDF_Dictionary* pCIDInfo = pCIDFontDict->GetDictFor("CIDSystemInfo");
374 if (pCIDInfo) { 374 if (pCIDInfo) {
375 m_Charset = 375 m_Charset =
376 CharsetFromOrdering(pCIDInfo->GetStringFor("Ordering").AsStringC()); 376 CharsetFromOrdering(pCIDInfo->GetStringFor("Ordering").AsStringC());
377 } 377 }
378 } 378 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 LoadMetricsArray(pWidthArray, m_VertMetrics, 3); 418 LoadMetricsArray(pWidthArray, m_VertMetrics, 3);
419 CPDF_Array* pDefaultArray = pCIDFontDict->GetArrayFor("DW2"); 419 CPDF_Array* pDefaultArray = pCIDFontDict->GetArrayFor("DW2");
420 if (pDefaultArray) { 420 if (pDefaultArray) {
421 m_DefaultVY = pDefaultArray->GetIntegerAt(0); 421 m_DefaultVY = pDefaultArray->GetIntegerAt(0);
422 m_DefaultW1 = pDefaultArray->GetIntegerAt(1); 422 m_DefaultW1 = pDefaultArray->GetIntegerAt(1);
423 } else { 423 } else {
424 m_DefaultVY = 880; 424 m_DefaultVY = 880;
425 m_DefaultW1 = -1000; 425 m_DefaultW1 = -1000;
426 } 426 }
427 } 427 }
428 return TRUE; 428 return true;
429 } 429 }
430 430
431 FX_RECT CPDF_CIDFont::GetCharBBox(uint32_t charcode, int level) { 431 FX_RECT CPDF_CIDFont::GetCharBBox(uint32_t charcode, int level) {
432 if (charcode < 256 && m_CharBBox[charcode].right != -1) 432 if (charcode < 256 && m_CharBBox[charcode].right != -1)
433 return m_CharBBox[charcode]; 433 return m_CharBBox[charcode];
434 434
435 FX_RECT rect; 435 FX_RECT rect;
436 bool bVert = false; 436 bool bVert = false;
437 int glyph_index = GlyphFromCharCode(charcode, &bVert); 437 int glyph_index = GlyphFromCharCode(charcode, &bVert);
438 FXFT_Face face = m_Font.GetFace(); 438 FXFT_Face face = m_Font.GetFace();
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 } 748 }
749 749
750 int CPDF_CIDFont::CountChar(const FX_CHAR* pString, int size) const { 750 int CPDF_CIDFont::CountChar(const FX_CHAR* pString, int size) const {
751 return m_pCMap->CountChar(pString, size); 751 return m_pCMap->CountChar(pString, size);
752 } 752 }
753 753
754 int CPDF_CIDFont::AppendChar(FX_CHAR* str, uint32_t charcode) const { 754 int CPDF_CIDFont::AppendChar(FX_CHAR* str, uint32_t charcode) const {
755 return m_pCMap->AppendChar(str, charcode); 755 return m_pCMap->AppendChar(str, charcode);
756 } 756 }
757 757
758 FX_BOOL CPDF_CIDFont::IsUnicodeCompatible() const { 758 bool CPDF_CIDFont::IsUnicodeCompatible() const {
759 if (m_pCID2UnicodeMap && m_pCID2UnicodeMap->IsLoaded() && m_pCMap->IsLoaded()) 759 if (m_pCID2UnicodeMap && m_pCID2UnicodeMap->IsLoaded() && m_pCMap->IsLoaded())
760 return TRUE; 760 return true;
761 return m_pCMap->m_Coding != CIDCODING_UNKNOWN; 761 return m_pCMap->m_Coding != CIDCODING_UNKNOWN;
762 } 762 }
763 763
764 void CPDF_CIDFont::LoadSubstFont() { 764 void CPDF_CIDFont::LoadSubstFont() {
765 pdfium::base::CheckedNumeric<int> safeStemV(m_StemV); 765 pdfium::base::CheckedNumeric<int> safeStemV(m_StemV);
766 safeStemV *= 5; 766 safeStemV *= 5;
767 m_Font.LoadSubst(m_BaseFont, !m_bType1, m_Flags, 767 m_Font.LoadSubst(m_BaseFont, !m_bType1, m_Flags,
768 safeStemV.ValueOrDefault(FXFONT_FW_NORMAL), m_ItalicAngle, 768 safeStemV.ValueOrDefault(FXFONT_FW_NORMAL), m_ItalicAngle,
769 g_CharsetCPs[m_Charset], IsVertWriting()); 769 g_CharsetCPs[m_Charset], IsVertWriting());
770 } 770 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 if (m_Charset != CIDSET_JAPAN1 || m_pFontFile) 843 if (m_Charset != CIDSET_JAPAN1 || m_pFontFile)
844 return nullptr; 844 return nullptr;
845 845
846 const auto* pEnd = g_Japan1_VertCIDs + FX_ArraySize(g_Japan1_VertCIDs); 846 const auto* pEnd = g_Japan1_VertCIDs + FX_ArraySize(g_Japan1_VertCIDs);
847 const auto* pTransform = std::lower_bound( 847 const auto* pTransform = std::lower_bound(
848 g_Japan1_VertCIDs, pEnd, CID, 848 g_Japan1_VertCIDs, pEnd, CID,
849 [](const CIDTransform& entry, uint16_t cid) { return entry.cid < cid; }); 849 [](const CIDTransform& entry, uint16_t cid) { return entry.cid < cid; });
850 return (pTransform < pEnd && CID == pTransform->cid) ? &pTransform->a 850 return (pTransform < pEnd && CID == pTransform->cid) ? &pTransform->a
851 : nullptr; 851 : nullptr;
852 } 852 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698