axmol/extensions/Live2D/Framework/src/CubismJsonHolder.hpp

86 lines
2.3 KiB
C++

/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
* that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
#pragma once
#include "Utils/CubismJson.hpp"
//--------- LIVE2D NAMESPACE ------------
namespace Live2D { namespace Cubism { namespace Framework {
/**
* @brief CubismJsonのインスタンス生成や有効性のチェック処理を抽象化したクラス
*
* 各JsonパーサにおいてCubismJsonのインスタンス生成や
* 有効性のチェック処理を共通化するためのインターフェース。
*
*/
class CubismJsonHolder
{
public:
/**
* @brief コンストラクタ
*
* コンストラクタ。
*/
CubismJsonHolder()
: _json(NULL)
{ }
/**
* @brief デストラクタ
*
* デストラクタ。
*/
virtual ~CubismJsonHolder()
{ }
/**
* @brief CubismJsonの有効性チェック
*
* @retval true -> Jsonファイルが正常に読み込めた
* @retval false -> Jsonファイルが読み込めなかった。もしくは、存在しない
*/
csmBool IsValid()
{
return _json;
}
protected:
/**
* @brief CubismJsonのインスタンスを生成する
*
* Util:CubismJsonクラスのCreate関数を呼んで
* CubismJsonのインスタンスを生成する。
*
*/
void CreateCubismJson(const csmByte* buffer, csmSizeInt size)
{
_json = Utils::CubismJson::Create(buffer, size);
if (!IsValid())
{
CubismLogError("[CubismJsonHolder] Invalid Json document.");
}
};
/**
* @brief CubismJsonのインスタンスを破棄する
*
* Util:CubismJsonクラスのDelete関数を呼んで
* CubismJsonのインスタンスを破棄する。
*
*/
void DeleteCubismJson()
{
Utils::CubismJson::Delete(_json);
_json = NULL;
}
Utils::CubismJson* _json; /// CubismJsonの実体
};
}}}