#include "StdAfx.h"
#include "CvTrackbar.h"

namespace KwsmLab {
namespace OpenCvSharp
{
	/// <summary>
	/// 初期化(目盛りは0~100, コールバックなし)
	/// </summary>
	/// <param name="name">トラックバーの名前名</param>
	/// <param name="window">トラックバーの親ウィンドウ</param>
	CvTrackbar::CvTrackbar(String^ name, String^ window)
	{
		CHECK_NULL(name);
		CHECK_NULL(window);		
		this->name = name;
		this->window = window;
		this->max = 100;		
		this->callback = nullptr;
		int value = 0;
		CV::CreateTrackbar(name, window, value, max, callback);
	}
	/// <summary>
	/// 初期化(目盛りは0~100)
	/// </summary>
	/// <param name="name">トラックバーの名前</param>
	/// <param name="window">トラックバーの親ウィンドウ名</param>
	/// <param name="callback">スライダの位置が変更されるたびに呼び出されるデリゲート</param>
	CvTrackbar::CvTrackbar(String^ name, String^ window, CvTrackbarCallbackHandler^ callback)
	{
		CHECK_NULL(name);
		CHECK_NULL(window);		
		this->name = name;
		this->window = window;
		this->max = 100;		
		this->callback = callback;
		int value = 0;
		CV::CreateTrackbar(name, window, value, max, callback);
	}
	/// <summary>
	/// 初期化 (コールバックなし)
	/// </summary>
	/// <param name="name">トラックバーの名前</param>
	/// <param name="window">トラックバーの親ウィンドウ名</param>
	/// <param name="value">スライダの位置を表す，整数型変数の参照．作成時のスライダ位置は，この変数によって定義される. refで渡すので、スライダが動くとここに割り当てた変数の値も変化する.</param>
	/// <param name="max">スライダの最大値．最小値は常に 0.</param>
	CvTrackbar::CvTrackbar(String^ name, String^ window, [In][Out] Int32% value, Int32 max)
	{
		CHECK_NULL(name);
		CHECK_NULL(window);
		this->name = name;
		this->window = window;
		this->max = max;
		this->callback = nullptr;
		CV::CreateTrackbar(name, window, value, max, callback);
	}
	/// <summary>
	/// 初期化
	/// </summary>
	/// <param name="name">トラックバーの名前</param>
	/// <param name="window">トラックバーの親ウィンドウ名</param>
	/// <param name="value">スライダの位置を表す，整数型変数の参照．作成時のスライダ位置は，この変数によって定義される. refで渡すので、スライダが動くとここに割り当てた変数の値も変化する.</param>
	/// <param name="max">スライダの最大値．最小値は常に 0.</param>
	/// <param name="callback">スライダの位置が変更されるたびに呼び出されるデリゲート</param>
	CvTrackbar::CvTrackbar(String^ name, String^ window, [In][Out] Int32% value, Int32 max, CvTrackbarCallbackHandler^ callback)
	{
		CHECK_NULL(name);
		CHECK_NULL(window);
		this->name = name;
		this->window = window;
		this->max = max;
		this->callback = callback;
		CV::CreateTrackbar(name, window, value, max, callback);
	}

}
}