// Copyright 2016 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef CORE_FXGE_CFX_UNICODEENCODINGEX_H_
#define CORE_FXGE_CFX_UNICODEENCODINGEX_H_

#include <stdint.h>

#include <memory>

#include "core/fxge/cfx_unicodeencoding.h"

class CFX_UnicodeEncodingEx final : public CFX_UnicodeEncoding {
 public:
  static constexpr uint32_t kInvalidCharCode = static_cast<uint32_t>(-1);

  CFX_UnicodeEncodingEx(CFX_Font* pFont, uint32_t EncodingID);
  ~CFX_UnicodeEncodingEx() override;

  // CFX_UnicodeEncoding:
  uint32_t GlyphFromCharCode(uint32_t charcode) override;

  // Returns |kInvalidCharCode| on error.
  uint32_t CharCodeFromUnicode(wchar_t Unicode) const;

 private:
  uint32_t m_nEncodingID;
};

std::unique_ptr<CFX_UnicodeEncodingEx> FX_CreateFontEncodingEx(CFX_Font* pFont);

#endif  // CORE_FXGE_CFX_UNICODEENCODINGEX_H_
