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

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

Issue 1867183002: Use std::vector as internal storage for CPDF_Array (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 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_simplefont.h" 7 #include "core/fpdfapi/fpdf_font/cpdf_simplefont.h"
8 8
9 #include "core/fpdfapi/fpdf_font/font_int.h" 9 #include "core/fpdfapi/fpdf_font/font_int.h"
10 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 104
105 return FX_RECT(m_CharBBox[charcode]); 105 return FX_RECT(m_CharBBox[charcode]);
106 } 106 }
107 107
108 FX_BOOL CPDF_SimpleFont::LoadCommon() { 108 FX_BOOL CPDF_SimpleFont::LoadCommon() {
109 CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor"); 109 CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor");
110 if (pFontDesc) { 110 if (pFontDesc) {
111 LoadFontDescriptor(pFontDesc); 111 LoadFontDescriptor(pFontDesc);
112 } 112 }
113 CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths"); 113 CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths");
114 int width_start = 0, width_end = -1;
115 m_bUseFontWidth = TRUE; 114 m_bUseFontWidth = TRUE;
116 if (pWidthArray) { 115 if (pWidthArray) {
117 m_bUseFontWidth = FALSE; 116 m_bUseFontWidth = FALSE;
118 if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) { 117 if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) {
119 int MissingWidth = pFontDesc->GetIntegerBy("MissingWidth"); 118 int MissingWidth = pFontDesc->GetIntegerBy("MissingWidth");
120 for (int i = 0; i < 256; i++) { 119 for (int i = 0; i < 256; i++) {
121 m_CharWidth[i] = MissingWidth; 120 m_CharWidth[i] = MissingWidth;
122 } 121 }
123 } 122 }
124 width_start = m_pFontDict->GetIntegerBy("FirstChar", 0); 123 size_t width_start = m_pFontDict->GetIntegerBy("FirstChar", 0);
125 width_end = m_pFontDict->GetIntegerBy("LastChar", 0); 124 size_t width_end = m_pFontDict->GetIntegerBy("LastChar", 0);
126 if (width_start >= 0 && width_start <= 255) { 125 if (width_start <= 255) {
127 if (width_end <= 0 || 126 if (width_end == 0 || width_end >= width_start + pWidthArray->GetCount())
128 width_end >= width_start + (int)pWidthArray->GetCount()) {
129 width_end = width_start + pWidthArray->GetCount() - 1; 127 width_end = width_start + pWidthArray->GetCount() - 1;
130 } 128 if (width_end > 255)
131 if (width_end > 255) {
132 width_end = 255; 129 width_end = 255;
133 } 130 for (size_t i = width_start; i <= width_end; i++)
134 for (int i = width_start; i <= width_end; i++) {
135 m_CharWidth[i] = pWidthArray->GetIntegerAt(i - width_start); 131 m_CharWidth[i] = pWidthArray->GetIntegerAt(i - width_start);
136 }
137 } 132 }
138 } 133 }
139 if (m_pFontFile) { 134 if (m_pFontFile) {
140 if (m_BaseFont.GetLength() > 8 && m_BaseFont[7] == '+') { 135 if (m_BaseFont.GetLength() > 8 && m_BaseFont[7] == '+') {
141 m_BaseFont = m_BaseFont.Mid(8); 136 m_BaseFont = m_BaseFont.Mid(8);
142 } 137 }
143 } else { 138 } else {
144 LoadSubstFont(); 139 LoadSubstFont();
145 } 140 }
146 if (!(m_Flags & PDFFONT_SYMBOLIC)) { 141 if (!(m_Flags & PDFFONT_SYMBOLIC)) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 return CFX_WideString(); 208 return CFX_WideString();
214 return ret; 209 return ret;
215 } 210 }
216 211
217 uint32_t CPDF_SimpleFont::CharCodeFromUnicode(FX_WCHAR unicode) const { 212 uint32_t CPDF_SimpleFont::CharCodeFromUnicode(FX_WCHAR unicode) const {
218 uint32_t ret = CPDF_Font::CharCodeFromUnicode(unicode); 213 uint32_t ret = CPDF_Font::CharCodeFromUnicode(unicode);
219 if (ret) 214 if (ret)
220 return ret; 215 return ret;
221 return m_Encoding.CharCodeFromUnicode(unicode); 216 return m_Encoding.CharCodeFromUnicode(unicode);
222 } 217 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698