getAns method

bool getAns(
  1. int x,
  2. int y,
  3. ClipGraphAns ans
)

Implementation

bool getAns( int x, int y, ClipGraphAns ans ){
	int num;
	ParamFloat ratio = ParamFloat();

	switch( _info[_curIndex]._mode ){
	case ClipGlobal.graphModeRect:
		ans._x = expX( _gWorld.wndPosX( x ) );
		if( (num = _search( ans._x, ratio )) < -1 ){
			return false;
		}
		if( num == -1 ){
			return false;
		} else if( num == _info[_curIndex]._ansNum.val() ){
			return false;
		} else if( ratio.val() == 0.0 ){
			ans._y1 = _info[_curIndex]._ans[num]._y1;
			ans._y2 = _info[_curIndex]._ans[num]._y2;
		} else {
			ans._y1 = _info[_curIndex]._ans[num]._y1 + (_info[_curIndex]._ans[num + 1]._y1 - _info[_curIndex]._ans[num]._y1) * ratio.val();
			ans._y2 = _info[_curIndex]._ans[num]._y2 + (_info[_curIndex]._ans[num + 1]._y2 - _info[_curIndex]._ans[num]._y2) * ratio.val();
		}
		break;
	case ClipGlobal.graphModeParam:
		if( (num = _searchParam( _gWorld.wndPosX( x ), _gWorld.wndPosY( y ) )) < -1 ){
			return false;
		}
		if( num == -1 ){
			return false;
		} else if( num == _info[_curIndex]._ansNum.val() ){
			return false;
		} else {
			ans._x  = _info[_curIndex]._ans[num]._x ;
			ans._y1 = _info[_curIndex]._ans[num]._y1;
			ans._y2 = _info[_curIndex]._ans[num]._y2;
		}
		break;
	case ClipGlobal.graphModePolar:
		if( (num = _searchPolar( _gWorld.wndPosX( x ), _gWorld.wndPosY( y ), ratio )) < -1 ){
			return false;
		}
		if( num == -1 ){
			return false;
		} else if( num == _info[_curIndex]._ansNum.val() ){
			return false;
		} else if( ratio.val() == 0.0 ){
			ans._x  = _info[_curIndex]._ans[num]._x ;
			ans._y1 = _info[_curIndex]._ans[num]._y1;
		} else {
			ans._x  = _info[_curIndex]._ans[num]._x  + (_info[_curIndex]._ans[num + 1]._x  - _info[_curIndex]._ans[num]._x ) * ratio.val();
			ans._y1 = _info[_curIndex]._ans[num]._y1 + (_info[_curIndex]._ans[num + 1]._y1 - _info[_curIndex]._ans[num]._y1) * ratio.val();
		}
		break;
	}

	return true;
}