//------------------------------------------------------------------------
// CControl
//------------------------------------------------------------------------
CControl::CControl (const CRect &size, CControlListener *listener, long tag,
 CBitmap *pBackground)
:	CView (size), 
	listener (listener), tag (tag), oldValue (1), defaultValue (0.5f),
	value (0), vmin (0), vmax (1.f), pBackground (pBackground), wheelInc (0.1f)
{
	setTransparency (false);
	setMouseEnabled (true);

	if (pBackground)
		pBackground->remember ();
}

//------------------------------------------------------------------------
CControl::~CControl ()
{
	if (pBackground)
		pBackground->forget ();
}

//------------------------------------------------------------------------
bool CControl::isDirty ()
{
	if (oldValue != value || CView::isDirty ())
		return true;
	return false;
}

//------------------------------------------------------------------------
void CControl::setDirty (const bool val)
{
	CView::setDirty (val);
	if (val)
	{
		if (value != -1.f)
			oldValue = -1.f;
		else
			oldValue = 0.f;
	}
	else
		oldValue = value;
}

//------------------------------------------------------------------------
void CControl::setBackground (CBitmap *_pBackground)
{
	if (pBackground)
		pBackground->forget ();
	pBackground = _pBackground;
	if (pBackground)
		pBackground->remember ();
}

//------------------------------------------------------------------------
void CControl::bounceValue ()
{
	if (value > vmax)
		value = vmax;
	else if (value < vmin)
		value = vmin;
}