/*  GadTools layout toolkit
**
**  Copyright © 1993-1995 by Olaf `Olsen' Barthel
**  Freely distributable.
*/

#include "gtlayout_global.h"

#ifdef DO_FRACTION_KIND
VOID LIBENT
LT_Fixed2String(REG(d0) FIXED fixed,REG(d1) STRPTR buffer)
{
	sprintf(buffer,"%ld%lc%ld",fixed / FIXED_UNITY,LTP_Locale ? LTP_Locale -> loc_DecimalPoint[0] : '.',fixed % FIXED_UNITY);
}
#endif


/*****************************************************************************/


#ifdef DO_FRACTION_KIND

FIXED LIBENT
LT_String2Fixed(REG(a0) STRPTR buffer)
{
	UBYTE	localBuffer[20];
	UBYTE	decimalPoint;
	LONG	i,left,right;

	if(LTP_Locale)
		decimalPoint = LTP_Locale -> loc_DecimalPoint[0];
	else
		decimalPoint = '.';

	strcpy(localBuffer,buffer);

	i = 0;

	while(buffer[i])
	{
		if(localBuffer[i] == decimalPoint)
		{
			localBuffer[i] = 0;

			if(i)
				left = LTP_Atol(localBuffer);
			else
				left = 0;

			if(localBuffer[i + 1])
			{
				UBYTE rest[4];

				CopyMem(&localBuffer[i + 1],rest,3);

				rest[3] = 0;

				right = LTP_Atol(rest);
			}
			else
				right = 0;

			return((FIXED)(left * FIXED_UNITY + right));
		}

		i++;
	}

	left = LTP_Atol(localBuffer);

	return((FIXED)(left * FIXED_UNITY));
}
#endif


/*****************************************************************************/


#ifdef DO_FRACTION_KIND
ULONG LIBENT
LT_FixedMult(REG(d0) FIXED fixed,REG(d1) ULONG factor)
{
	return((fixed * factor) / FIXED_UNITY);
}
#endif
