#include <Xm/Xm.h>
#include <Xm/ScrollBar.h>
#include <xdclass.h>

int CScrollBar::GetScrollPos() const
{
    if (_xd_rootwidget!=NULL)
    {
	int value;
	XtVaGetValues(_xd_rootwidget, XmNvalue, &value, 0);
	return value;
    }
    return 0;
}

void CScrollBar::GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const
{
    int minpos=0, maxpos=0;
    if (_xd_rootwidget!=NULL)
	XtVaGetValues(_xd_rootwidget,
			XmNminimum, &minpos,
			XmNmaximum, &maxpos,
			0);
    *lpMinPos=minpos;
    *lpMaxPos=maxpos;
    return;
}

int CScrollBar::SetScrollPos(int nPos, BOOL)
{
    if (_xd_rootwidget!=NULL)
    {
	int oldpos;
	XtVaGetValues(_xd_rootwidget, XmNvalue, &oldpos, 0);
	XtVaSetValues(_xd_rootwidget, XmNvalue, nPos, 0);
	return oldpos;
    }
    return 0;
}

void CScrollBar::SetScrollRange(int nMinPos, int nMaxPos, BOOL)
{
    if (_xd_rootwidget!=NULL)
	XtVaSetValues(_xd_rootwidget,
			XmNminimum, nMinPos,
			XmNmaximum, nMaxPos,
			0);
}

void CScrollBar::ShowScrollBar(BOOL bShow)
{
    if (_xd_rootwidget!=NULL)
	if (bShow)
	    XtManageChild(_xd_rootwidget);
	else
	    XtUnmanageChild(_xd_rootwidget);
}
