This is crayola.c in view mode; [Download] [Up]
#include "geom.h"
#include "color.h"
#include "crayolaP.h"
ColorA crayDefColor = {CRAY_DEFR, CRAY_DEFG, CRAY_DEFB, CRAY_DEFA};
static char methods[][CRAYOLA_MAXNAME] = 
{
  CRAYOLA_METHNAMES
};
int sel[CRAYOLA_MAXMETH];
void crayolaInit() {
  int i;
  for (i = 0; i < CRAYOLA_MAXMETH; i++) 
    sel[i] = GeomNewMethod(methods[i], crayFalse);
  cray_bezier_init();
  cray_inst_init();
  cray_list_init();
  cray_mesh_init();
  cray_polylist_init();
  cray_quad_init();
  cray_vect_init();
}
void crayInitSpec(craySpecFunc *specfunc, int n_func, GeomClass *class) {
  int i;
  for (i = 0; i < n_func; i++) 
    GeomSpecifyMethod(GeomMethodSel(specfunc[i].name), class,
				    specfunc[i].func);
}
int crayHasColor(Geom *geom, int *gpath) {
  return (int)GeomCall(sel[0], geom, gpath);
}
int crayHasVColor(Geom *geom, int *gpath) {
  return (int)GeomCall(sel[1], geom, gpath);
}
int crayHasFColor(Geom *geom, int *gpath) {
  return (int)GeomCall(sel[2], geom, gpath);
}
int crayCanUseVColor(Geom *geom, int *gpath) {
  return (int)GeomCall(sel[3], geom, gpath);
}
int crayCanUseFColor(Geom *geom, int *gpath) {
  return (int)GeomCall(sel[4], geom, gpath);
}
int crayUseVColor(Geom *geom, ColorA *color, int *gpath) {
  return (int)GeomCall(sel[5], geom, color, gpath);
}
int crayUseFColor(Geom *geom, ColorA *color, int *gpath) {
  return (int)GeomCall(sel[6], geom, color, gpath);
}
int crayEliminateColor(Geom *geom, int *gpath) {
  return (int)GeomCall(sel[7], geom, gpath);
}
int craySetColorAll(Geom *geom, ColorA *color, int *gpath) {
  return (int)GeomCall(sel[8], geom, color, gpath);
}
int craySetColorAt(Geom *geom, ColorA *color, int vindex, int findex, 
		   int *edge, int *gpath, HPoint3 *pt) {
  return (int)GeomCall(sel[9], geom, color, vindex, findex, edge, gpath, 
		       pt);
}
int craySetColorAtV(Geom *geom, ColorA *color, int index, int *gpath,
		    HPoint3 *pt) {
  return (int)GeomCall(sel[10], geom, color, index, gpath, pt);
}
int craySetColorAtF(Geom *geom, ColorA *color, int index, int *gpath) {
  return (int)GeomCall(sel[11], geom, color, index, gpath);
}
int crayGetColorAt(Geom *geom, ColorA *color, int vindex, int findex,
		   int *edge, int *gpath, HPoint3 *pt) {
  return (int)GeomCall(sel[12], geom, color, vindex, findex, edge, gpath, pt);
}
int crayGetColorAtV(Geom *geom, ColorA *color, int index, int *gpath,
		    HPoint3 *pt) {
  return (int)GeomCall(sel[13], geom, color, index, gpath, pt);
}
int crayGetColorAtF(Geom *geom, ColorA *color, int index, int *gpath) {
  return (int)GeomCall(sel[14], geom, color, index, gpath);
}
void *crayTrue(int sel, Geom *geom, va_list args) {
  return (void *)1;
}
void *crayFalse(int sel, Geom *geom, va_list args) {
  return (void *)0;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.