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

Unified Diff: core/fpdfapi/fpdf_font/cpdf_simplefont.cpp

Issue 2248463002: Get rid of FX_SMALL_RECT. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@fontclean
Patch Set: Created 4 years, 4 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_font/cpdf_simplefont.cpp
diff --git a/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp b/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp
index 65f4a5a235ecb23ef07245711516ccef2469e151..323cdb7c41e846e56188db7d924c416c83759d63 100644
--- a/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp
+++ b/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp
@@ -15,6 +15,9 @@ CPDF_SimpleFont::CPDF_SimpleFont() : m_BaseEncoding(PDFFONT_ENCODING_BUILTIN) {
FXSYS_memset(m_CharWidth, 0xff, sizeof(m_CharWidth));
FXSYS_memset(m_GlyphIndex, 0xff, sizeof(m_GlyphIndex));
FXSYS_memset(m_ExtGID, 0xff, sizeof(m_ExtGID));
+ for (size_t i = 0; i < FX_ArraySize(m_CharBBox); ++i) {
+ m_CharBBox[i] = FX_RECT(-1, -1, -1, -1);
+ }
dsinclair 2016/08/15 12:48:03 nit: no {}'s
Lei Zhang 2016/08/15 17:05:35 Done.
}
CPDF_SimpleFont::~CPDF_SimpleFont() {}
@@ -52,16 +55,15 @@ void CPDF_SimpleFont::LoadCharMetrics(int charcode) {
int err = FXFT_Load_Glyph(
face, glyph_index,
FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH);
- if (err) {
+ if (err)
return;
- }
- m_CharBBox[charcode] = FX_SMALL_RECT(
- TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face),
- TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face),
- TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) + FXFT_Get_Glyph_Width(face),
- face),
- TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) - FXFT_Get_Glyph_Height(face),
- face));
+
+ int iHoriBearingX = FXFT_Get_Glyph_HoriBearingX(face);
+ int iHoriBearingY = FXFT_Get_Glyph_HoriBearingY(face);
+ m_CharBBox[charcode] =
+ FX_RECT(TT2PDF(iHoriBearingX, face), TT2PDF(iHoriBearingY, face),
+ TT2PDF(iHoriBearingX + FXFT_Get_Glyph_Width(face), face),
+ TT2PDF(iHoriBearingY - FXFT_Get_Glyph_Height(face), face));
if (m_bUseFontWidth) {
int TT_Width = TT2PDF(FXFT_Get_Glyph_HoriAdvance(face), face);
@@ -77,26 +79,26 @@ void CPDF_SimpleFont::LoadCharMetrics(int charcode) {
}
int CPDF_SimpleFont::GetCharWidthF(uint32_t charcode, int level) {
- if (charcode > 0xff) {
+ if (charcode > 0xff)
charcode = 0;
- }
+
if (m_CharWidth[charcode] == 0xffff) {
LoadCharMetrics(charcode);
if (m_CharWidth[charcode] == 0xffff) {
m_CharWidth[charcode] = 0;
}
}
- return (int16_t)m_CharWidth[charcode];
+ return m_CharWidth[charcode];
}
FX_RECT CPDF_SimpleFont::GetCharBBox(uint32_t charcode, int level) {
if (charcode > 0xff)
charcode = 0;
- if (m_CharBBox[charcode].left == FX_SMALL_RECT::kInvalid)
+ if (m_CharBBox[charcode].left == -1)
LoadCharMetrics(charcode);
- return FX_RECT(m_CharBBox[charcode]);
+ return m_CharBBox[charcode];
}
FX_BOOL CPDF_SimpleFont::LoadCommon() {
@@ -105,9 +107,8 @@ FX_BOOL CPDF_SimpleFont::LoadCommon() {
LoadFontDescriptor(pFontDesc);
}
CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths");
- m_bUseFontWidth = TRUE;
+ m_bUseFontWidth = !pWidthArray;
if (pWidthArray) {
- m_bUseFontWidth = FALSE;
if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) {
int MissingWidth = pFontDesc->GetIntegerBy("MissingWidth");
for (int i = 0; i < 256; i++) {

Powered by Google App Engine
This is Rietveld 408576698