1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ 8 #define CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ 9 10 #include <memory> 11 #include <vector> 12 13 #include "JBig2_ArithDecoder.h" 14 #include "JBig2_List.h" 15 #include "core/include/fxcrt/fx_basic.h" 16 17 class CJBig2_Image; 18 19 class CJBig2_SymbolDict { 20 public: 21 CJBig2_SymbolDict(); 22 ~CJBig2_SymbolDict(); 23 24 std::unique_ptr<CJBig2_SymbolDict> DeepCopy() const; 25 26 // Takes ownership of |image|. AddImage(CJBig2_Image * image)27 void AddImage(CJBig2_Image* image) { m_SDEXSYMS.push_back(image); } 28 NumImages()29 size_t NumImages() const { return m_SDEXSYMS.size(); } GetImage(size_t index)30 CJBig2_Image* GetImage(size_t index) const { return m_SDEXSYMS.get(index); } 31 GbContext()32 const std::vector<JBig2ArithCtx>& GbContext() const { return m_gbContext; } GrContext()33 const std::vector<JBig2ArithCtx>& GrContext() const { return m_grContext; } 34 SetGbContext(const std::vector<JBig2ArithCtx> & gbContext)35 void SetGbContext(const std::vector<JBig2ArithCtx>& gbContext) { 36 m_gbContext = gbContext; 37 } SetGrContext(const std::vector<JBig2ArithCtx> & grContext)38 void SetGrContext(const std::vector<JBig2ArithCtx>& grContext) { 39 m_grContext = grContext; 40 } 41 42 private: 43 std::vector<JBig2ArithCtx> m_gbContext; 44 std::vector<JBig2ArithCtx> m_grContext; 45 CJBig2_List<CJBig2_Image> m_SDEXSYMS; 46 }; 47 48 #endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ 49