mirror of https://github.com/axmolengine/axmol.git
86 lines
2.3 KiB
C++
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の実体
|
|
};
|
|
}}}
|