home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / IBPalettes / WW3DKit / RIBDeclare.m < prev    next >
Encoding:
Text File  |  1995-03-22  |  2.0 KB  |  123 lines

  1. // copyright 1993 Michael B. Johnson; some portions copyright 1994, MIT
  2. // see COPYRIGHT for reuse legalities
  3. //
  4.  
  5.  
  6. #import "RIBDeclare.h"
  7.  
  8. @implementation RIBDeclare
  9.  
  10. + initialize { return [RIBDeclare setVersion:1], self; }
  11.  
  12. - init
  13. {
  14.   [super init];
  15.  
  16.   name = NULL;
  17.   declaration = NULL;
  18.   
  19.   return self;
  20. }
  21. - free
  22. {
  23.   if (name) { free(name); }
  24.   if (declaration) { free(declaration); }
  25.   return [super free];
  26. }
  27.  
  28. - _setName:(char *)newName declaration:(char *)newDeclaration
  29. {
  30.   if (name)
  31.   {  name = NXCopyStringBuffer(newName);
  32.   }
  33.   else
  34.   {  name = NULL;
  35.   }
  36.   
  37.  
  38.   if (declaration)
  39.   {  declaration = NXCopyStringBuffer(newDeclaration);
  40.   }
  41.   else
  42.   {  declaration = NULL;
  43.   }
  44.   
  45.  
  46.   return self;
  47. }
  48.  
  49. - copyFromZone:(NXZone *)zone
  50. {
  51.    id   newCopy = [super copyFromZone:zone];
  52.  
  53.   [newCopy _setName:name declaration:declaration];
  54.   return newCopy;
  55. }
  56.  
  57. - setName:(char *)newName declaration:(char *)newDeclaration
  58. {
  59.   if (name)
  60.   {  free(name);
  61.   }
  62.   name = NXCopyStringBuffer(newName);
  63.  
  64.   if (declaration)
  65.   {  free(declaration);
  66.   }
  67.   declaration = NXCopyStringBuffer(newDeclaration);
  68.  
  69.   return self;
  70. }
  71.  
  72. - (const char *)name { return name; }
  73. - (const char *)declaration { return declaration; }
  74.  
  75. - renderSelf:(WW3DCamera *)camera startingAt:(RtFloat)shutterOpenTime endingAt:(RtFloat)shutterCloseTime
  76. {
  77.   RiDeclare(name, declaration);
  78.   return self;
  79. }
  80.  
  81. - writeEve:(NXStream *)stream atTabLevel:(int)tab
  82. {
  83.    int  i;
  84.  
  85.  
  86.    for (i = 0; i < tab; i++)
  87.    {  NXPrintf(stream, "\t");
  88.    }
  89.    NXPrintf(stream, "Declare {%s} {%s};", name, declaration); 
  90.    return self;
  91. }
  92.  
  93. #define typeVector "**"
  94. #define typeValues &name, &declaration
  95.  
  96. - read:(NXTypedStream *)stream 
  97. {
  98.     int version;
  99.     [super read:stream];
  100.  
  101.     version = NXTypedStreamClassVersion(stream,"RIBDeclare");
  102.     if (version == 0) NXReadTypes(stream, "i", &version), version=1;
  103.     if (version == 1)
  104.     {  NXReadTypes(stream, typeVector, typeValues);
  105.     } 
  106.     else 
  107.     {
  108.     }
  109.     return self;
  110. }
  111.  
  112. - write:(NXTypedStream*)stream 
  113. {
  114.     [super write:stream];
  115.  
  116.     NXWriteTypes(stream, typeVector, typeValues);
  117.  
  118.     return self;
  119. }
  120.  
  121.  
  122. @end
  123.