POV-Ray : Newsgroups : povray.programming : float constants in functions - bug and bugfix : float constants in functions - bug and bugfix Server Time
6 Oct 2024 13:42:50 EDT (-0400)
  float constants in functions - bug and bugfix  
From: ABX
Date: 5 Nov 2002 11:18:43
Message: <fqqfsuk77r6nhjj5chelpfj4d298ngdqda@4ax.com>
In documentation in chapter '6.1.6 User-Defined Functions' there is
FLOAT_BUILT-IN_IDENT as one of possible expressions. But only 'clock' and 'pi'
is recognized while chapter '6.1.3.4 Built-in Float Identifiers' lists much
more possible values. In order to fix it I have added following part in
expr_get_token function in long list of ifs.

#ifdef MISSED_FLOAT_CONSTANTS_RECOGNITION_PATCH
	else if(Token.Function_Id == CLOCK_DELTA_TOKEN)
	{
		Token.Token_Float = Clock_Delta;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == CLOCK_ON_TOKEN)
	{
		Token.Token_Float = (DBL) ( opts.FrameSeq.FrameType == FT_MULTIPLE_FRAME );
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == FALSE_TOKEN)
	{
		Token.Token_Float = 0.0;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == FINALCLOCK_TOKEN)
	{
		Token.Token_Float = opts.FrameSeq.FinalClock;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == FINALFRAME_TOKEN)
	{
		Token.Token_Float = opts.FrameSeq.FinalFrame;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == FRAMENUMBER_TOKEN)
	{
		Token.Token_Float = opts.FrameSeq.FrameNumber;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == INITIALCLOCK_TOKEN)
	{
		Token.Token_Float = opts.FrameSeq.InitialClock;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == INITIALFRAME_TOKEN)
	{
		Token.Token_Float = opts.FrameSeq.InitialFrame;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == IMAGE_WIDTH_TOKEN)
	{
		Token.Token_Float = Frame.Screen_Width;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == IMAGE_HEIGHT_TOKEN)
	{
		Token.Token_Float = Frame.Screen_Height;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == NO_TOKEN)
	{
		Token.Token_Float = 0.0;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == OFF_TOKEN)
	{
		Token.Token_Float = 0.0;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == ON_TOKEN)
	{
		Token.Token_Float = 1.0;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == TRUE_TOKEN)
	{
		Token.Token_Float = 1.0;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == VERSION_TOKEN)
	{
		Token.Token_Float = opts.Language_Version / 100.0;
		return FLOAT_TOKEN;
	}
	else if(Token.Function_Id == YES_TOKEN)
	{
		Token.Token_Float = 1.0;
		return FLOAT_TOKEN;
	}
#endif 

ABX


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.