This is ptlQuad.c in view mode; [Download] [Up]
#include "ooglutil.h" #include "geom.h" #include "quadP.h" #include "pointlistP.h" void *quad_PointList_get(int sel, Geom *geom, va_list args); void *quad_PointList_fillin(int sel, Geom *geom, va_list args); void *quad_PointList_set(int sel, Geom *geom, va_list args); void *quad_PointList_length(int sel, Geom *geom, va_list args); #define MAX_METHODS 4 static SpecFunc methods[] = { "PointList_get", quad_PointList_get, "PointList_fillin", quad_PointList_fillin, "PointList_set", quad_PointList_set, "PointList_length", quad_PointList_length }; static char msg[] = "ptlQuad.c"; ptlQuad_init() { pointlist_initspec(methods, MAX_METHODS, GeomClassLookup("quad")); } void *quad_PointList_get(int sel, Geom *geom, va_list args) { HPoint3 *plist; Quad *q = (Quad *)geom; float **t; plist = OOGLNewNE(HPoint3, q->maxquad * 4, msg); t = va_arg(args, float **); return GeomCall(GeomMethodSel("PointList_fillin"), geom, t, 0, plist); } void *quad_PointList_fillin(int sel, Geom *geom, va_list args) { int i; Quad *q = (Quad *)geom; float **t; HPoint3 *plist; t = va_arg(args, float **); va_arg(args, int); plist = va_arg(args, HPoint3 *); for (i = 0; i < q->maxquad; i++) bcopy(q->p[i], &plist[i * 4], 4 * sizeof(HPoint3)); HPt3TransformN(t, plist, plist, q->maxquad * 4); return plist; } void *quad_PointList_set(int sel, Geom *geom, va_list args) { int i; HPoint3 *plist; Quad *q = (Quad *)geom; va_arg(args, int); plist = va_arg(args, HPoint3 *); for (i = 0; i < q->maxquad; i++) bcopy(&plist[i * 4], q->p[i], 4 * sizeof(HPoint3)); return((void *)q); } void *quad_PointList_length(int sel, Geom *geom, va_list args) { Quad *q = (Quad *)geom; return((void *)(q->maxquad * 4)); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.