POV-Ray : Newsgroups : povray.unofficial.patches : MegaPOVPlus 0.3.1 released : Re: MegaPOVPlus 0.3.1 released Server Time
29 Jul 2024 10:28:59 EDT (-0400)
  Re: MegaPOVPlus 0.3.1 released  
From: Y Tanabe
Date: 12 Sep 2000 23:44:08
Message: <39BEF817.2AB0053E@kh.rim.or.jp>
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] khrimorjp


Post a reply to this message

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