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

  1.  
  2. #import "RIBAttribute.h"
  3.  
  4. @implementation RIBAttribute
  5.  
  6.  
  7. + initialize { return [RIBAttribute setVersion:1], self; }
  8.  
  9. - init
  10. {
  11.   [super init];
  12.   name = NULL;
  13.  
  14.   return self;
  15. }
  16.  
  17. - free
  18. {
  19.   if (name)
  20.   {  free(name);
  21.   }
  22.  
  23.   return [super free];
  24. }
  25.  
  26. // this is used only internally, for setting a copy without freeing the original
  27. - _setName:(const char *)newName
  28. {
  29.   if (newName)
  30.   {  name = strcpy((char *)malloc(1 + strlen(newName)), newName); 
  31.   }
  32.   else
  33.   {  name = NULL;
  34.   }
  35.  
  36.   return self;
  37. }
  38.  
  39. - copyFromZone:(NXZone *)zone
  40. {
  41.    id   newCopy = [super copyFromZone:zone];
  42.  
  43.   [newCopy _setName:name];
  44.   return newCopy;
  45. }
  46.  
  47. - setName:(RtToken)newName
  48.      n:(int)newN tokens:(RtToken *)newTokens parms:(RtPointer *)newParms archiveVector:(char **)newArchiveVector
  49.      printfTypeVector:(int *)newPrintfTypeVector printfNVector:(int *)newPrintfNVector
  50. {  
  51.    name = strcpy((char *)malloc(1 + strlen(newName)), newName); 
  52.    [self setN:newN tokens:newTokens parms:newParms archiveVector:newArchiveVector printfTypeVector:newPrintfTypeVector printfNVector:newPrintfNVector];
  53.  
  54.    return self;
  55. }
  56.  
  57. - (const char *)name { return name; }
  58.  
  59. - renderSelf:(WW3DCamera *)camera startingAt:(RtFloat)shutterOpenTime endingAt:(RtFloat)shutterCloseTime
  60. {
  61.   RiAttributeV(name, n, tokens, parms);
  62.  
  63.   return self;
  64. }
  65.  
  66. - (unsigned long int)maxSampleBandwidth
  67. {  
  68.    unsigned long int maxSampleBandwidth = [super maxSampleBandwidth];
  69.  
  70.  
  71.    if (name) { maxSampleBandwidth += 1 + strlen(name); }
  72.  
  73.    return maxSampleBandwidth;
  74. }
  75.  
  76. - writeEve:(NXStream *)stream atTabLevel:(int)tab
  77. {
  78.    int  i;
  79.  
  80.  
  81.    for (i = 0; i < tab; i++)
  82.    {  NXPrintf(stream, "\t");
  83.    }
  84.    NXPrintf(stream, "Attribute {%s} ", name); 
  85.    [super writeParameterList:stream];
  86.    return self;
  87. }
  88.  
  89. #define typeVector "*"
  90. #define typeValues &name
  91.  
  92. - read:(NXTypedStream*)stream 
  93. {
  94.     int version;
  95.     [super read:stream];
  96.  
  97.     version = NXTypedStreamClassVersion(stream,"RIBAttribute");
  98.     if (version == 0) NXReadTypes(stream, "i", &version), version=1;
  99.     if (version == 1)
  100.     {  NXReadTypes(stream, typeVector, typeValues);
  101.     } 
  102.     else 
  103.     {
  104.     }
  105.     return self;
  106. }
  107.  
  108. - write:(NXTypedStream*)stream 
  109. {
  110.     [super write:stream];
  111.  
  112.     NXWriteTypes(stream, typeVector, typeValues);
  113.  
  114.     return self;
  115. }
  116.  
  117.  
  118. @end
  119.