// 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

#include "core/fxge/android/cfpf_skiadevicemodule.h"

#include <utility>

#include "core/fxge/android/cfpf_skiafontmgr.h"

namespace {

CFPF_SkiaDeviceModule* gs_pPFModule = nullptr;

}  // namespace

CFPF_SkiaDeviceModule* CFPF_GetSkiaDeviceModule() {
  if (!gs_pPFModule)
    gs_pPFModule = new CFPF_SkiaDeviceModule;
  return gs_pPFModule;
}

CFPF_SkiaDeviceModule::CFPF_SkiaDeviceModule() {}

CFPF_SkiaDeviceModule::~CFPF_SkiaDeviceModule() = default;

void CFPF_SkiaDeviceModule::Destroy() {
  delete gs_pPFModule;
  gs_pPFModule = nullptr;
}

CFPF_SkiaFontMgr* CFPF_SkiaDeviceModule::GetFontMgr() {
  if (!m_pFontMgr) {
    auto pNewMgr = std::make_unique<CFPF_SkiaFontMgr>();
    if (!pNewMgr->InitFTLibrary())
      return nullptr;
    m_pFontMgr = std::move(pNewMgr);
  }
  return m_pFontMgr.get();
}
