diff options
author | Lei Zhang <thestig@chromium.org> | 2018-10-03 17:53:09 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-10-03 17:53:09 +0000 |
commit | f9e0498bb1ce2a52628065bc13389b4fc2768f42 (patch) | |
tree | ca32a8eec12a42538fa5a5e1f86268c67a394ebc | |
parent | a1c846c4cf3f8c08edfffa1cc6b60860c011000b (diff) | |
download | pdfium-f9e0498bb1ce2a52628065bc13389b4fc2768f42.tar.xz |
Simplify CFX_FontSourceEnum_File's file iterator.
Break the methods down to their basic functionality, and built up from
there.
Change-Id: I691abaf08375425b59f2382cf95577c3917aca9d
Reviewed-on: https://pdfium-review.googlesource.com/42972
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
-rw-r--r-- | xfa/fgas/font/cfgas_fontmgr.cpp | 30 | ||||
-rw-r--r-- | xfa/fgas/font/cfgas_fontmgr.h | 8 |
2 files changed, 15 insertions, 23 deletions
diff --git a/xfa/fgas/font/cfgas_fontmgr.cpp b/xfa/fgas/font/cfgas_fontmgr.cpp index b2150f99b8..c8aed88547 100644 --- a/xfa/fgas/font/cfgas_fontmgr.cpp +++ b/xfa/fgas/font/cfgas_fontmgr.cpp @@ -634,20 +634,18 @@ ByteString CFX_FontSourceEnum_File::GetNextFile() { return bsName; } -bool CFX_FontSourceEnum_File::HasStartPosition() { +void CFX_FontSourceEnum_File::GetNext() { m_wsNext = GetNextFile().UTF8Decode(); - return !m_wsNext.IsEmpty(); } -std::pair<bool, RetainPtr<IFX_SeekableStream>> -CFX_FontSourceEnum_File::GetNext() { - if (m_wsNext.IsEmpty()) - return {false, nullptr}; +bool CFX_FontSourceEnum_File::HasNext() const { + return !m_wsNext.IsEmpty(); +} - auto stream = IFX_SeekableStream::CreateFromFilename(m_wsNext.c_str(), - FX_FILEMODE_ReadOnly); - m_wsNext = GetNextFile().UTF8Decode(); - return {true, stream}; +RetainPtr<IFX_SeekableStream> CFX_FontSourceEnum_File::GetStream() const { + ASSERT(HasNext()); + return IFX_SeekableStream::CreateFromFilename(m_wsNext.c_str(), + FX_FILEMODE_ReadOnly); } CFGAS_FontMgr::CFGAS_FontMgr() @@ -684,16 +682,12 @@ bool CFGAS_FontMgr::EnumFontsFromFontMapper() { bool CFGAS_FontMgr::EnumFontsFromFiles() { CFX_GEModule::Get()->GetFontMgr()->InitFTLibrary(); - if (!m_pFontSource->HasStartPosition()) - return !m_InstalledFonts.empty(); - - bool has_next; - RetainPtr<IFX_SeekableStream> stream; - std::tie(has_next, stream) = m_pFontSource->GetNext(); - while (has_next) { + m_pFontSource->GetNext(); + while (m_pFontSource->HasNext()) { + RetainPtr<IFX_SeekableStream> stream = m_pFontSource->GetStream(); if (stream) RegisterFaces(stream, nullptr); - std::tie(has_next, stream) = m_pFontSource->GetNext(); + m_pFontSource->GetNext(); } return !m_InstalledFonts.empty(); } diff --git a/xfa/fgas/font/cfgas_fontmgr.h b/xfa/fgas/font/cfgas_fontmgr.h index bc2a7af2a7..3c63a1c636 100644 --- a/xfa/fgas/font/cfgas_fontmgr.h +++ b/xfa/fgas/font/cfgas_fontmgr.h @@ -11,7 +11,6 @@ #include <map> #include <memory> #include <set> -#include <utility> #include <vector> #include "core/fxcrt/fx_extension.h" @@ -98,10 +97,9 @@ class CFX_FontSourceEnum_File { CFX_FontSourceEnum_File(); ~CFX_FontSourceEnum_File(); - bool HasStartPosition(); - - // <next exists, stream for next> - std::pair<bool, RetainPtr<IFX_SeekableStream>> GetNext(); + void GetNext(); + bool HasNext() const; + RetainPtr<IFX_SeekableStream> GetStream() const; private: struct HandleParentPath { |