|
![](/i/fill.gif) |
Dear Mr. Chris Huff
I am compiling Mega POVPlus0.3.1 under MrC in MPW.
under MPW MrC compiler work glow and #set function well and blob does not
crash.
use MegaPOVPlus3.01 files as follows and other MegaPOVPlus2.05 files
/***********************************************************/
glow.c
glow.h
lighting.c
vbuffer.c
/***********************************************************/
modify files for MegaPOVPlus2.05 to glow and #set
/***********************************************************/
frame.h
add:
#define SetPatch /*Chris Huff 2000.8.30*/
#define GlowPatch /*Chris Huff 2000.9.01*/
/***********************************************************/
parse.c
add:
#ifdef GlowPatch
#include "glow.h"
#endif
change:
from
static void Parse_Warp(WARP **Warp_Ptr);
to
void Parse_Warp(WARP **Warp_Ptr);
add:
static OBJECT *Parse_Light_Source(void)
#ifdef GlowPatch
CASE(GLOW_TOKEN)
{
GLOW *NewGlow = Create_Glow();
Assign_Colour(NewGlow->Colour,Object->Colour);
Assign_Vector(NewGlow->Center,Object->Center);
Parse_Glow(NewGlow);
Add_Glow(NewGlow);
}
END_CASE
#endif
add:
OBJECT *Parse_Object(void)
#ifdef GlowPatch
CASE(GLOW_TOKEN)
{
GLOW *NewGlow = Create_Glow();
Parse_Glow(NewGlow);
Add_Glow(NewGlow);
}
END_CASE
#endif
add:
void Destroy_Frame(int destroyAllObjects)
#ifdef GlowPatch
Destroy_Glow_List(Frame.Glows);
Frame.Glows = NULL;
#endif
add:
static void Frame_Init(void)
#ifdef GlowPatch
Frame.Glows = NULL;
#endif
change:
#ifdef SetPatch
void Parse_Declare(int Modify_Only)
#else
void Parse_Declare(void)
#endif
add and change:
/*Chris Huff 2000.8.30 - added #set */
#ifdef SetPatch
Local_Flag = (Token.Token_Id == LOCAL_TOKEN || Token.Token_Id ==
PERCENT_TOKEN);
if(Local_Flag)
{
Local_Index = Table_Index;
}
else
{
if(Token.Token_Id == SET_TOKEN || Modify_Only == TRUE)
{
/*Search for most recent table with an identifier with this name Parts
copied from Read_Symbol*/
int Idx;
int Found = FALSE;
Get_Token();
/* Search tables from newest to oldest */
for(Idx = Table_Index; Idx > 0; Idx--)
{
if(Find_Symbol(Idx,Token.Token_String) != NULL)
{
Local_Index = Idx;
Found = TRUE;
break;
}
}
if(Found != TRUE)
{
Error("#set cannot assign to uninitialized identifier
%s.\n",Token.Token_String);
}
Unget_Token();
}
else
{
Local_Index=1;
}
}
#else
if (Local_Flag = (Token.Token_Id == LOCAL_TOKEN || Token.Token_Id ==
PERCENT_TOKEN))
{
Local_Index = Table_Index;
}
else
{
Local_Index = 1;
}
#endif
/***********************************************************/
parse.h
add:
#ifdef SetPatch
SET_TOKEN,
#endif
#ifdef GlowPatch
GLOW_TOKEN,
#endif
change:
#ifdef SetPatch
void Parse_Declare(int Modify_Only);
#else
void Parse_Declare(void);
#endif
/***********************************************************/
povray.h
add:
#ifdef GlowPatch
#include "frame.h"/*Needed for GlowPatch definition*/
#endif
add and change:
#ifdef GlowPatch
typedef struct Glow_Struct GLOW;
#endif
struct Frame_Struct
{
CAMERA *Camera;
int Screen_Height, Screen_Width; /* OPTIONS */
int Number_Of_Light_Sources;
LIGHT_SOURCE *Light_Sources;
#ifdef GlowPatch
GLOW * Glows;
#endif
OBJECT *Objects;
DBL Atmosphere_IOR, /*DSW*/Atmosphere_Dispersion,/*---*/
Antialias_Threshold;
COLOUR Background_Colour;
COLOUR Ambient_Light;
COLOUR Irid_Wavelengths;
IMEDIA *Atmosphere;
FOG *Fog;
RAINBOW *Rainbow;
SKYSPHERE *Skysphere;
#ifdef ParticlePatch
PARTICLE* Particles;
#endif
};
/***********************************************************/
render.c
add:
#ifdef GlowPatch
#include "glow.h"
#endif
add:
DBL Trace(RAY *Ray, COLOUR Colour, DBL Weight, INTERSECTION *Inter)
#ifdef GlowPatch
Do_Glow(&Best_Intersection, Ray, Colour);
#endif
/***********************************************************/
tokenize.c
add:
#ifdef SetPatch
{SET_TOKEN, "set"},
#endif
#ifdef GlowPatch
{GLOW_TOKEN, "glow"},
#endif
add:
#ifndef SetPatch
static SYM_ENTRY *Find_Symbol(int Index, char *s);
#endif
add and change:
#ifdef SetPatch
SYM_ENTRY *Find_Symbol(int Index,char *Name)
#else
static SYM_ENTRY *Find_Symbol(int Index,char *Name)
#endif
add and change:
void Parse_Directive(int After_Hash)
#ifdef SetPatch
CASE3(DECLARE_TOKEN, LOCAL_TOKEN, SET_TOKEN)
#else
CASE2 (DECLARE_TOKEN,LOCAL_TOKEN)
#endif
add and change:
#ifdef SetPatch
Parse_Declare(FALSE);
#else
Parse_Declare ();
#endif
add and change:
static int Parse_Assignment()
#ifdef SetPatch
Parse_Declare(FALSE);
#else
Parse_Declare ();
#endif
/***********************************************************/
tokenize.h
add:
#ifdef SetPatch
SYM_ENTRY *Find_Symbol(int Index,char *Name);
#endif
Best Regards
Y.Tanabe
Kobe,Japan
tec### [at] kh rim or jp
Post a reply to this message
|
![](/i/fill.gif) |