diff options
author | Nicolas Pena <npm@chromium.org> | 2017-02-13 16:08:51 -0500 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-02-13 22:07:02 +0000 |
commit | 58e4c5ac24a88f83d1ba8277dee87baf4cba36a0 (patch) | |
tree | 5c6c05ffb40c1bb2653b415842537f7043bd6407 /core/fpdfapi/render/cpdf_charposlist.cpp | |
parent | 9787a7441a905e582b10d9ffc425098b3233d36c (diff) | |
download | pdfium-58e4c5ac24a88f83d1ba8277dee87baf4cba36a0.tar.xz |
Clean up CPDF_TextObject a bit
Modernizing CPDF_TextObject a little bit, in preparation for the addition of
APIs for adding text to PDFs. m_pCharCodes, m_pCharPos are now vectors, this
caused some propagation to other classes. Also m_Pos is now a point. Note that
GetItemInfo is being changed in another CL, so did minimal changes there.
Change-Id: I6e5f19b5d45872e3e714a7cb587c81c92e640ea3
Reviewed-on: https://pdfium-review.googlesource.com/2614
Commit-Queue: Nicolás Peña <npm@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'core/fpdfapi/render/cpdf_charposlist.cpp')
-rw-r--r-- | core/fpdfapi/render/cpdf_charposlist.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/core/fpdfapi/render/cpdf_charposlist.cpp b/core/fpdfapi/render/cpdf_charposlist.cpp index bf361e2da1..d7f566d5e7 100644 --- a/core/fpdfapi/render/cpdf_charposlist.cpp +++ b/core/fpdfapi/render/cpdf_charposlist.cpp @@ -8,6 +8,7 @@ #include "core/fpdfapi/font/cpdf_cidfont.h" #include "core/fpdfapi/font/cpdf_font.h" +#include "third_party/base/stl_util.h" CPDF_CharPosList::CPDF_CharPosList() { m_pCharPos = nullptr; @@ -18,26 +19,23 @@ CPDF_CharPosList::~CPDF_CharPosList() { FX_Free(m_pCharPos); } -void CPDF_CharPosList::Load(int nChars, - uint32_t* pCharCodes, - FX_FLOAT* pCharPos, +void CPDF_CharPosList::Load(const std::vector<uint32_t>& charCodes, + const std::vector<FX_FLOAT>& charPos, CPDF_Font* pFont, FX_FLOAT FontSize) { + int nChars = pdfium::CollectionSize<int>(charCodes); m_pCharPos = FX_Alloc(FXTEXT_CHARPOS, nChars); m_nChars = 0; CPDF_CIDFont* pCIDFont = pFont->AsCIDFont(); bool bVertWriting = pCIDFont && pCIDFont->IsVertWriting(); for (int iChar = 0; iChar < nChars; iChar++) { - uint32_t CharCode = - nChars == 1 ? (uint32_t)(uintptr_t)pCharCodes : pCharCodes[iChar]; - if (CharCode == (uint32_t)-1) { + uint32_t CharCode = charCodes[iChar]; + if (CharCode == static_cast<uint32_t>(-1)) continue; - } bool bVert = false; FXTEXT_CHARPOS& charpos = m_pCharPos[m_nChars++]; - if (pCIDFont) { + if (pCIDFont) charpos.m_bFontStyle = true; - } charpos.m_GlyphIndex = pFont->GlyphFromCharCode(CharCode, &bVert); if (charpos.m_GlyphIndex != static_cast<uint32_t>(-1)) { charpos.m_FallbackFontPosition = -1; @@ -56,7 +54,7 @@ void CPDF_CharPosList::Load(int nChars, } else { charpos.m_FontCharWidth = 0; } - charpos.m_Origin = CFX_PointF(iChar ? pCharPos[iChar - 1] : 0, 0); + charpos.m_Origin = CFX_PointF(iChar ? charPos[iChar - 1] : 0, 0); charpos.m_bGlyphAdjust = false; if (!pCIDFont) { continue; |