From 09d33bcd82a82cb55039d41651df13e17d6c3e59 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 19 Aug 2015 09:49:24 -0700 Subject: Merge to XFA: CFX_MapByteStringToPtr considered harmful (combo patch). New manual edits: two unused members deleted, one adapted. fde_csscache.cpp fde_csscache.h fpdfxfa_doc.h fx_ge_fontmap.cpp (cherry picked from commit 1d9dbd53b205b2b4d9e75a7eeb95e80837917ea3) (cherry picked from commit cb4d0ea68308e3c51a6ba9551b393bb2f639afc4) (cherry picked from commit 9cf44c2ed09a8b2ff243eb6dbb72a8cceae1b5ff) (cherry picked from commit 2a2a6aa7f51352fc481e78f6ad9d41f2738bcc48) (cherry picked from commit ce4ffb8183af3fa2bb5133f0f7370a88e064c516) Original Review URL: https://codereview.chromium.org/1297723002 . R=thestig@chromium.org Review URL: https://codereview.chromium.org/1301793002 . --- core/src/fxcodec/codec/codec_int.h | 15 ++++++++++----- core/src/fxcodec/codec/fx_codec_icc.cpp | 29 ++++++++++++++--------------- 2 files changed, 24 insertions(+), 20 deletions(-) (limited to 'core/src/fxcodec/codec') diff --git a/core/src/fxcodec/codec/codec_int.h b/core/src/fxcodec/codec/codec_int.h index ae6af007f6..d172d7157e 100644 --- a/core/src/fxcodec/codec/codec_int.h +++ b/core/src/fxcodec/codec/codec_int.h @@ -9,11 +9,15 @@ #include #include +#include #include "../../../../third_party/libopenjpeg20/openjpeg.h" // For OPJ_SIZE_T. #include "../../../include/fxcodec/fx_codec.h" #include "../jbig2/JBig2_Context.h" +class CFX_IccProfileCache; +class CFX_IccTransformCache; + class CCodec_BasicModule : public ICodec_BasicModule { public: virtual FX_BOOL RunLengthEncode(const uint8_t* src_buf, @@ -289,18 +293,19 @@ class CCodec_IccModule : public ICodec_IccModule { virtual ~CCodec_IccModule(); protected: - CFX_MapByteStringToPtr m_MapTranform; - CFX_MapByteStringToPtr m_MapProfile; - FX_DWORD m_nComponents; - typedef enum { + enum Icc_CLASS { Icc_CLASS_INPUT = 0, Icc_CLASS_OUTPUT, Icc_CLASS_PROOF, Icc_CLASS_MAX - } Icc_CLASS; + }; void* CreateProfile(ICodec_IccModule::IccParam* pIccParam, Icc_CLASS ic, CFX_BinaryBuf* pTransformKey); + + FX_DWORD m_nComponents; + std::map m_MapTranform; + std::map m_MapProfile; }; class CCodec_JpxModule : public ICodec_JpxModule { diff --git a/core/src/fxcodec/codec/fx_codec_icc.cpp b/core/src/fxcodec/codec/fx_codec_icc.cpp index dad880a936..2a8ccc364c 100644 --- a/core/src/fxcodec/codec/fx_codec_icc.cpp +++ b/core/src/fxcodec/codec/fx_codec_icc.cpp @@ -434,7 +434,8 @@ void* CCodec_IccModule::CreateProfile(ICodec_IccModule::IccParam* pIccParam, CFX_ByteString ProfileKey(key.GetBuffer(), key.GetSize()); ASSERT(pTransformKey); pTransformKey->AppendBlock(ProfileKey.GetBuffer(0), ProfileKey.GetLength()); - if (!m_MapProfile.Lookup(ProfileKey, (void*&)pCache)) { + auto it = m_MapProfile.find(ProfileKey); + if (it == m_MapProfile.end()) { pCache = new CFX_IccProfileCache; switch (pIccParam->dwProfileType) { case Icc_PARAMTYPE_BUFFER: @@ -456,8 +457,9 @@ void* CCodec_IccModule::CreateProfile(ICodec_IccModule::IccParam* pIccParam, default: break; } - m_MapProfile.SetAt(ProfileKey, pCache); + m_MapProfile[ProfileKey] = pCache; } else { + pCache = it->second; pCache->m_dwRate++; } return pCache->m_pProfile; @@ -496,7 +498,8 @@ void* CCodec_IccModule::CreateTransform( << (pProofProfile != NULL) << dwPrfIntent << dwPrfFlag; CFX_ByteStringC TransformKey(key.GetBuffer(), key.GetSize()); CFX_IccTransformCache* pTransformCache; - if (!m_MapTranform.Lookup(TransformKey, (void*&)pTransformCache)) { + auto it = m_MapTranform.find(TransformKey); + if (it == m_MapTranform.end()) { pCmm = FX_Alloc(CLcmsCmm, 1); pCmm->m_nSrcComponents = T_CHANNELS(dwInputProfileType); pCmm->m_nDstComponents = T_CHANNELS(dwOutputProfileType); @@ -512,26 +515,22 @@ void* CCodec_IccModule::CreateTransform( dwOutputProfileType, dwIntent, dwFlag); } pCmm->m_hTransform = pTransformCache->m_pIccTransform; - m_MapTranform.SetAt(TransformKey, pTransformCache); + m_MapTranform[TransformKey] = pTransformCache; } else { + pTransformCache = it->second; pTransformCache->m_dwRate++; } return pTransformCache->m_pCmm; } CCodec_IccModule::~CCodec_IccModule() { - FX_POSITION pos = m_MapProfile.GetStartPosition(); - CFX_ByteString key; - CFX_IccProfileCache* pProfileCache; - while (pos) { - m_MapProfile.GetNextAssoc(pos, key, (void*&)pProfileCache); - delete pProfileCache; + for (const auto& pair : m_MapProfile) { + delete pair.second; } - pos = m_MapTranform.GetStartPosition(); - CFX_IccTransformCache* pTransformCache; - while (pos) { - m_MapTranform.GetNextAssoc(pos, key, (void*&)pTransformCache); - delete pTransformCache; + m_MapProfile.clear(); + for (const auto& pair : m_MapTranform) { + delete pair.second; } + m_MapTranform.clear(); } void* CCodec_IccModule::CreateTransform_sRGB(const uint8_t* pProfileData, FX_DWORD dwProfileSize, -- cgit v1.2.3