<commit_before>//=====================================================================//
/*! @file
	@brief  player クラス
	@author 平松邦仁 (<EMAIL>)
*/
//=====================================================================//
#include <iostream>
#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>
#include "core/glcore.hpp"
#include "gl_fw/glutils.hpp"
#include "pmdv_main.hpp"

namespace app {

	void pmdv_main::info_pmd_()
	{
		using namespace gui;
		using namespace mdf;

		tree_->clear();

		widget_tree::tree_unit& tu = tree_->at_tree_unit();
		/// シリアルIDはクリアしない

		tu.make_directory("/bone");
		tu.set_current_path("/bone");

		for(uint32_t i = 0; i < pmd_io_.get_bones().size(); ++i) {
			std::string path;
			pmd_io_.create_bone_path(i, path);
			if(path.empty()) continue;
// std::cout << path << std::endl;
			widget_tree::value v;
			v.data_ = "0";			
			tu.install(&path[1], v);
		}

//		tu.make_directory("/bone_disp");
	}


	void pmdv_main::info_pmx_()
	{
		using namespace gui;
		using namespace mdf;

		tree_->clear();

		widget_tree::tree_unit& tu = tree_->at_tree_unit();
		/// シリアルIDはクリアしない

		tu.make_directory("/bone");
		tu.set_current_path("/bone");

		for(uint32_t i = 0; i < pmx_io_.get_bones().size(); ++i) {
			std::string path;
			pmx_io_.create_bone_path(i, path);
			widget_tree::value v;
			v.data_ = "0";			
			tu.install(&path[1], v);
		}
	}


	//-----------------------------------------------------------------//
	/*!
		@brief  初期化
	*/
	//-----------------------------------------------------------------//
	void pmdv_main::initialize()
	{
		gl::core& core = gl::core::get_instance();

		using namespace gui;
		widget_director& wd = director_.at().widget_director_;

		{	// ファイラー・リソース
			widget::param wp(vtx::srect(30, 30, 300, 200));
			widget_filer::param wp_(core.get_current_path());
			filer_ = wd.add_widget<widget_filer>(wp, wp_);
			filer_->enable(false);
		}
		{	// ツールパレット
			widget::param wp(vtx::srect(20, 20, 150, 350));
			widget_frame::param wp_;
			wp_.plate_param_.set_caption(12);
			tools_ = wd.add_widget<widget_frame>(wp, wp_);
			tools_->set_state(gui::widget::state::SIZE_LOCK);
		}
		short h = 12 + 10;
		{	// ファイラー起動ボタン
			widget::param wp(vtx::srect(10, h, 100, 36), tools_);
			h += 40;
			widget_button::param wp_("開く");
			fopen_ = wd.add_widget<widget_button>(wp, wp_);
		}
		{	// Grid、On/Off
			widget::param wp(vtx::srect(10, h, 150, 30), tools_);
			h += 30;
			widget_check::param wp_("Grid", true);
			grid_ = wd.add_widget<widget_check>(wp, wp_);
		}
		{	// ボディー、On/Off
			widget::param wp(vtx::srect(10, h, 150, 30), tools_);
			h += 30;
			widget_check::param wp_("Body");
			body_ = wd.add_widget<widget_check>(wp, wp_);
			body_->set_check();
		}
		{	// ボーン、On/Off
			widget::param wp(vtx::srect(10, h, 150, 30), tools_);
			h += 30;
			widget_check::param wp_("Bone");
			bone_ = wd.add_widget<widget_check>(wp, wp_);
		}

		{	// ツリー
			widget::param wp(vtx::srect(20, 400, 200, 200));
			widget_frame::param wp_;
			wp_.plate_param_.set_caption(12);
			tree_frame_ = wd.add_widget<widget_frame>(wp, wp_);
		}
		{
			widget::param wp(vtx::srect(0), tree_frame_);
			widget_tree::param wp_;
			tree_ = wd.add_widget<widget_tree>(wp, wp_);
		}

		{	// ターミナル
			widget::param wp(vtx::srect(100, 400, 200, 200));
			widget_frame::param wp_;
			wp_.plate_param_.set_caption(12);
			terminal_frame_ = wd.add_widget<widget_frame>(wp, wp_);
		}
		{
			widget::param wp(vtx::srect(0), terminal_frame_);
			widget_terminal::param wp_;
			terminal_ = wd.add_widget<widget_terminal>(wp, wp_);
		}


		// ボーン表示用ライトの設定
		bone_light_ = light_.create();
		light_.set_position(bone_light_, vtx::fvtx(5.0f, 5.0f, 5.0f));

		// プリファレンスの取得
		sys::preference& pre = director_.at().preference_;
		if(filer_) {
			filer_->load(pre);
		}
		if(tree_frame_) {
			tree_frame_->load(pre);
		}
		if(terminal_frame_) {
			terminal_frame_->load(pre);
		}
	}


	//-----------------------------------------------------------------//
	/*!
		@brief  アップデート
	*/
	//-----------------------------------------------------------------//
	void pmdv_main::update()
	{
		gui::widget_director& wd = director_.at().widget_director_;

		if(fopen_->get_selected()) {
			bool f = filer_->get_state(gui::widget::state::ENABLE);
			filer_->enable(!f);
		}

		/// ファイラー、ファイル選択
		if(filer_id_ != filer_->get_select_file_id()) {
			filer_id_ = filer_->get_select_file_id();

			if(pmd_io_.load(filer_->get_file())) {
				info_pmd_();
				pmd_io_.render_setup();
				pmx_enable_ = false;
				std::string info;
				pmd_io_.get_info(info);
				terminal_->output(info);
			} else if(pmx_io_.load(filer_->get_file())) {
				info_pmx_();
				pmx_io_.render_setup();
				pmx_enable_ = true;
			}
		}

		if(!wd.update()) {
			camera_.update();
		}
	}


	//-----------------------------------------------------------------//
	/*!
		@brief  レンダリング
	*/
	//-----------------------------------------------------------------//
	void pmdv_main::render()
	{
		glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
		gl::glColor(img::rgbaf(1.0f));

		camera_.service();

// glActiveTexture(0);
<commit_msg>Makefile<commit_after>//=====================================================================//
/*! @file
	@brief  player クラス
	@author 平松邦仁 (<EMAIL>)
*/
//=====================================================================//
#include <iostream>
#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>
#include "core/glcore.hpp"
#include "gl_fw/glutils.hpp"
#include "pmdv_main.hpp"

namespace app {

	void pmdv_main::info_pmd_()
	{
		using namespace gui;
		using namespace mdf;

		tree_->clear();

		widget_tree::tree_unit& tu = tree_->at_tree_unit();
		/// シリアルIDはクリアしない

		tu.make_directory("/bone");
		tu.set_current_path("/bone");

		for(uint32_t i = 0; i < pmd_io_.get_bones().size(); ++i) {
			std::string path;
			pmd_io_.create_bone_path(i, path);
			if(path.empty()) continue;
// std::cout << path << std::endl;
			widget_tree::value v;
			v.data_ = "0";			
			tu.install(&path[1], v);
		}

//		tu.make_directory("/bone_disp");
	}


	void pmdv_main::info_pmx_()
	{
		using namespace gui;
		using namespace mdf;

		tree_->clear();

		widget_tree::tree_unit& tu = tree_->at_tree_unit();
		/// シリアルIDはクリアしない

		tu.make_directory("/bone");
		tu.set_current_path("/bone");

		for(uint32_t i = 0; i < pmx_io_.get_bones().size(); ++i) {
			std::string path;
			pmx_io_.create_bone_path(i, path);
			widget_tree::value v;
			v.data_ = "0";			
			tu.install(&path[1], v);
		}
	}


	//-----------------------------------------------------------------//
	/*!
		@brief  初期化
	*/
	//-----------------------------------------------------------------//
	void pmdv_main::initialize()
	{
		gl::core& core = gl::core::get_instance();

		using namespace gui;
		widget_director& wd = director_.at().widget_director_;

		{	// ファイラー・リソース
			widget::param wp(vtx::srect(30, 30, 300, 200));
			widget_filer::param wp_(core.get_current_path());
			filer_ = wd.add_widget<widget_filer>(wp, wp_);
			filer_->enable(false);
		}
		{	// ツールパレット
			widget::param wp(vtx::srect(20, 20, 150, 350));
			widget_frame::param wp_;
			wp_.plate_param_.set_caption(12);
			tools_ = wd.add_widget<widget_frame>(wp, wp_);
			tools_->set_state(gui::widget::state::SIZE_LOCK);
		}
		short h = 12 + 10;
		{	// ファイラー起動ボタン
			widget::param wp(vtx::srect(10, h, 100, 36), tools_);
			h += 40;
			widget_button::param wp_("開く");
			fopen_ = wd.add_widget<widget_button>(wp, wp_);
		}
		{	// Grid、On/Off
			widget::param wp(vtx::srect(10, h, 150, 30), tools_);
			h += 30;
			widget_check::param wp_("Grid", true);
			grid_ = wd.add_widget<widget_check>(wp, wp_);
		}
		{	// ボディー、On/Off
			widget::param wp(vtx::srect(10, h, 150, 30), tools_);
			h += 30;
			widget_check::param wp_("Body");
			body_ = wd.add_widget<widget_check>(wp, wp_);
			body_->set_check();
		}
		{	// ボーン、On/Off
			widget::param wp(vtx::srect(10, h, 150, 30), tools_);
			h += 30;
			widget_check::param wp_("Bone");
			bone_ = wd.add_widget<widget_check>(wp, wp_);
		}

		{	// ツリー
			widget::param wp(vtx::srect(20, 400, 200, 200));
			widget_frame::param wp_;
			wp_.plate_param_.set_caption(12);
			tree_frame_ = wd.add_widget<widget_frame>(wp, wp_);
		}
		{
			widget::param wp(vtx::srect(0), tree_frame_);
			widget_tree::param wp_;
			tree_ = wd.add_widget<widget_tree>(wp, wp_);
		}

		{	// ターミナル
			widget::param wp(vtx::srect(100, 400, 200, 200));
			widget_frame::param wp_;
			wp_.plate_param_.set_caption(12);
			terminal_frame_ = wd.add_widget<widget_frame>(wp, wp_);
		}
		{
			widget::param wp(vtx::srect(0), terminal_frame_);
			widget_terminal::param wp_;
			terminal_ = wd.add_widget<widget_terminal>(wp, wp_);
		}


		// ボーン表示用ライトの設定
		bone_light_ = light_.create();
		light_.set_position(bone_light_, vtx::fvtx(5.0f, 5.0f, 5.0f));

		// プリファレンスの取得
		sys::preference& pre = director_.at().preference_;
		if(filer_) {
			filer_->load(pre);
		}
		if(tree_frame_) {
			tree_frame_->load(pre);
		}
		if(terminal_frame_) {
			terminal_frame_->load(pre);
		}
	}


	//-----------------------------------------------------------------//
	/*!
		@brief  アップデート
	*/
	//-----------------------------------------------------------------//
	void pmdv_main::update()
	{
		gui::widget_director& wd = director_.at().widget_director_;

		if(fopen_->get_selected()) {
			bool f = filer_->get_state(gui::widget::state::ENABLE);
			filer_->enable(!f);
		}

		/// ファイラー、ファイル選択
		if(filer_id_ != filer_->get_select_file_id()) {
			filer_id_ = filer_->get_select_file_id();

			if(pmd_io_.load(filer_->get_file())) {
				info_pmd_();
				pmd_io_.render_setup();
				pmx_enable_ = false;
				std::string info;
				pmd_io_.get_info(info);
				terminal_->output(info);
			} else if(pmx_io_.load(filer_->get_file())) {
				info_pmx_();
				pmx_io_.render_setup();
				pmx_enable_ = true;
				std::string info;
				pmd_io_.get_info(info);
				terminal_->output(info);
			}
		}

		if(!wd.update()) {
			camera_.update();
		}
	}


	//-----------------------------------------------------------------//
	/*!
		@brief  レンダリング
	*/
	//-----------------------------------------------------------------//
	void pmdv_main::render()
	{
		glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
		gl::glColor(img::rgbaf(1.0f));

		camera_.service();

// glActiveTexture(0);

{'fraction_non_alphanumeric': 0.27036462373933284, 'fraction_numerical': 0.021334367726920093, 'mean_word_length': 2.6924453992123163, 'pattern_counts': {'":': 0, '<': 43, '<?xml version=': 0, '>': 68, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5741373', 'n_tokens_mistral': 4656, 'n_tokens_neox': 3959, 'n_words': 586}