sact_bar_graph_t

Last-modified: 2007-08-14 (火) 22:26:45

機能

 棒グラフ用構造体です。

変数

private:
	int							m_nSP;
	int							m_nMin;
	int							m_nMax;
	int							m_nValue;
	sact_bar_graph_metrics_t  m_sbgm;

メソッド

int Init(int nSP=0, ref sact_bar_graph_metrics_t sbgm);

機能:初期化
 nSP=0の場合空きSP番号を自動で取得
 位置設定、表示on/offなどは直接SP_SET_POS()などで行う
 使用スプライト番号を返す

int sact_bar_graph_t::Init(int nSP, ref sact_bar_graph_metrics_t sbgm)
{
	if(nSP == 0)
	{
		nSP = SP_GET_UNUSE_NUM();
	}
	m_nSP	= nSP;
	m_sbgm	= sbgm;
	SP_CREATE(m_nSP, m_sbgm.nWidth, m_sbgm.nHeight,
          m_sbgm.nBackColorR, m_sbgm.nBackColorG,  m_sbgm.nBackColorB, m_sbgm.nBackBlend);
	return m_nSP;
}
int GetSpriteNum(void);

機能:使用スプライト番号取得

int sact_bar_graph_t::GetSpriteNum(void)
{
	return m_nSP;
}
void SetRange(int nMin, int nMax);

機能: 値の幅設定
    表示中の棒グラフは SetValue まで変更されない

void sact_bar_graph_t::SetRange(int nMin, int nMax)
{
	m_nMin = nMin;
	m_nMax = nMax;
}
void SetValue(int nValue, int bUpdate=false);

機能:値設定 bUpdate=true で SACT_UPDATE() が呼ばれる(デフォルト=false)

void sact_bar_graph_t::SetValue(int nValue, int bUpdate)
{
	m_nValue = nValue;
	// 背景塗りつぶし
	CG_FILL(m_nSP, 0, 0, m_sbgm.nWidth, m_sbgm.nHeight, m_sbgm.nBackColorR, m_sbgm.nBackColorG, m_sbgm.nBackColorB);
	CG_FILL_AMAP(m_nSP, 0, 0, m_sbgm.nWidth, m_sbgm.nHeight, m_sbgm.nBackBlend);
	// 棒
	switch(m_sbgm.nType)
	{
	case SBGMT_LR:/* → */SetBarValueLR(); break;
	case SBGMT_RL:/* ← */SetBarValueRL(); break;
	case SBGMT_TB:/* ↓ */SetBarValueTB(); break;
	case SBGMT_BT:/* ↑ */SetBarValueBT(); break;
	default:
		system.Error("sact_bar_graph_t\n未対応のタイプ");
		break;
	}
	if(bUpdate)
	{
		SACT_UPDATE();
	}
}
void SetBarValueLR(void);

機能:

void sact_bar_graph_t::SetBarValueLR(void)
{
	int a = m_sbgm.nWidth;
	int b = m_nValue;
	int c = m_nMax - m_nMin;
	int d = a * b / c;
	int x = 0;
	int y = 0;
	int w = d;
	int h = m_sbgm.nHeight;
	if(d > 0)
	{
		CG_FILL(m_nSP, x, y, w, h, m_sbgm.nBarColorR, m_sbgm.nBarColorG, m_sbgm.nBarColorB);
		CG_FILL_AMAP(m_nSP, x, y, w, h, m_sbgm.nBarBlend);
	}
}
void SetBarValueRL(void);

機能:

void sact_bar_graph_t::SetBarValueRL(void)
{
	int a = m_sbgm.nWidth;
	int b = m_nValue;
	int c = m_nMax - m_nMin;
	int d = a * b / c;
	int x = m_sbgm.nWidth - d;
	int y = 0;
	int w = d;
	int h = m_sbgm.nHeight;
	if(d > 0)
	{
		CG_FILL(m_nSP, x, y, w, h, m_sbgm.nBarColorR, m_sbgm.nBarColorG, m_sbgm.nBarColorB);
		CG_FILL_AMAP(m_nSP, x, y, w, h, m_sbgm.nBarBlend);
	}
}
void SetBarValueTB(void);

機能:

void sact_bar_graph_t::SetBarValueTB(void)
{
	int a = m_sbgm.nHeight;
	int b = m_nValue;
	int c = m_nMax - m_nMin;
	int d = a * b / c;
	int x = 0;
	int y = 0;
	int w = m_sbgm.nWidth;
	int h = d;
	if(d > 0)
	{
		CG_FILL(m_nSP, x, y, w, h, m_sbgm.nBarColorR, m_sbgm.nBarColorG, m_sbgm.nBarColorB);
		CG_FILL_AMAP(m_nSP, x, y, w, h, m_sbgm.nBarBlend);
	}
}
void SetBarValueBT(void);

機能:

void sact_bar_graph_t::SetBarValueBT(void)
{
	int a = m_sbgm.nHeight;
	int b = m_nValue;
	int c = m_nMax - m_nMin;
	int d = a * b / c;
	int x = 0;
	int y = m_sbgm.nHeight - d;
	int w = m_sbgm.nWidth;
	int h = d;
	if(d > 0)
	{
		CG_FILL(m_nSP, x, y, w, h, m_sbgm.nBarColorR, m_sbgm.nBarColorG, m_sbgm.nBarColorB);
		CG_FILL_AMAP(m_nSP, x, y, w, h, m_sbgm.nBarBlend);
	}
}

コンストラクタ

sact_bar_graph_t();

sact_bar_graph_t::sact_bar_graph_t()
{//初期値設定
	m_nSP		=   0; //スプライト番号0
	m_nMin		=   0;  //
	m_nMax		= 100; //
	m_nValue	=   0;
}

デストラクタ

sact_bar_graph_t();//破棄時にスプライトは自動的に削除される

sact_bar_graph_t::~sact_bar_graph_t()
{
	SP_DEL(m_nSP);
}

グローバル宣言

 なし