pfRep(3pf) OpenGL Performer 3.2.2 libpf C Reference Pages pfRep(3pf)NAME
pfGetRepClassType, pfRepOrigin, pfRepOrient, pfGetRepOrigin,
pfGetRepOrient - Abstract base class for higher-order geometric
representations.
FUNCTION SPECIFICATION
#include <Performer/pf.h>
pfType * pfGetRepClassType(void);
void pfRepOrigin(pfRep *rep, const pfVec3 origin);
void pfRepOrient(pfRep *rep, const pfMatrix mat);
void pfGetRepOrigin(pfRep *rep, pfVec3* origin);
void pfGetRepOrient(pfRep *rep, pfMatrix *mat);
PARENT CLASS FUNCTIONS
The OpenGL Performer class pfRep is derived from the parent class
pfGeode, so each of these member functions of class pfGeode are also
directly usable with objects of class pfRep. Casting an object of class
pfRep to an object of class pfGeode is taken care of automatically. This
is also true for casts to objects of ancestor classes of class pfGeode.
int pfAddGSet(pfGeode* geode, pfGeoSet* gset);
int pfRemoveGSet(pfGeode* geode, pfGeoSet* gset);
int pfInsertGSet(pfGeode* geode, int index, pfGeoSet* gset);
int pfReplaceGSet(pfGeode* geode, pfGeoSet* old, pfGeoSet* new);
pfGeoSet * pfGetGSet(const pfGeode* geode, int index);
int pfGetNumGSets(const pfGeode* geode);
Since the class pfGeode is itself derived from the parent class pfNode,
objects of class pfRep can also be used with these functions designed for
objects of class pfNode.
pfGroup * pfGetParent(const pfNode *node, int i);
int pfGetNumParents(const pfNode *node);
void pfNodeBSphere(pfNode *node, pfSphere *bsph, int mode);
int pfGetNodeBSphere(pfNode *node, pfSphere *bsph);
pfNode* pfClone(pfNode *node, int mode);
pfNode* pfBufferClone(pfNode *node, int mode, pfBuffer *buf);
int pfFlatten(pfNode *node, int mode);
int pfNodeName(pfNode *node, const char *name);
const char * pfGetNodeName(const pfNode *node);
pfNode* pfFindNode(pfNode *node, const char *pathName,
pfType *type);
pfNode* pfLookupNode(const char *name, pfType* type);
int pfNodeIsectSegs(pfNode *node, pfSegSet *segSet,
pfHit **hits[]);
Page 1
pfRep(3pf) OpenGL Performer 3.2.2 libpf C Reference Pages pfRep(3pf)
void pfNodeTravMask(pfNode *node, int which, uint mask,
int setMode, int bitOp);
uint pfGetNodeTravMask(const pfNode *node, int which);
void pfNodeTravFuncs(pfNode* node, int which,
pfNodeTravFuncType pre, pfNodeTravFuncType post);
void pfGetNodeTravFuncs(const pfNode* node, int which,
pfNodeTravFuncType *pre, pfNodeTravFuncType *post);
void pfNodeTravData(pfNode *node, int which, void *data);
void * pfGetNodeTravData(const pfNode *node, int which);
void pfNodeTravMode(pfNode* node, int which, int mode,
int val);
int pfGetNodeTravMode(const pfNode* node, int which,
int mode);
Since the class pfNode is itself derived from the parent class pfObject,
objects of class pfRep can also be used with these functions designed for
objects of class pfObject.
void pfUserDataSlot(pfObject *obj, int slot, void *data);
void pfUserData(pfObject *obj, void *data);
void* pfGetUserDataSlot(pfObject *obj, int slot);
void* pfGetUserData(pfObject *obj);
int pfGetNumUserData(pfObject *obj);
int pfGetNamedUserDataSlot(const char *name);
const char* pfGetUserDataSlotName(int slot);
int pfGetNumNamedUserDataSlots(void);
int pfDeleteGLHandle(pfObject *obj);
Since the class pfObject is itself derived from the parent class
pfMemory, objects of class pfRep can also be used with these functions
designed for objects of class pfMemory.
pfType * pfGetType(const void *ptr);
int pfIsOfType(const void *ptr, pfType *type);
int pfIsExactType(const void *ptr, pfType *type);
const char * pfGetTypeName(const void *ptr);
int pfRef(void *ptr);
int pfUnref(void *ptr);
int pfUnrefDelete(void *ptr);
int pfUnrefGetRef(void *ptr);
int pfGetRef(const void *ptr);
int pfCopy(void *dst, void *src);
int pfDelete(void *ptr);
int pfIsFluxed(void *ptr);
int pfCompare(const void *ptr1, const void *ptr2);
void pfPrint(const void *ptr, uint which, uint verbose,
FILE *file);
void * pfGetArena(void *ptr);
Page 2
pfRep(3pf) OpenGL Performer 3.2.2 libpf C Reference Pages pfRep(3pf)DESCRIPTION
pfRep is the base class for higher-order geometric objects, called
representations, that are stored in a OpenGL Performer scene graph.
Representations use geometric descriptions other than triangles and lists
of triangles. For example, a sphere, a plane, and a Non-Uniform Rational
B-Spline (NURB) are all reps. Theoretically there are an infinite number
of different reps: pfRep is the basic building block to define higher-
order geometric objects in an Performer application.
A rep has an origin and a 3x3 transformation matrix that transforms the
rep about the origin. These define a reference frame for the rep and are
used by derived classes during point evaluations: for example, a change
in origin affects the values of the points on a surface.
The reference frame is considered part of the rep's definition, not a
mechanism to place a rep in a scene (for this purpose use a pfDCS).
Rather, the reference frame is used to generalize primitives. For
example, an ellipsiod can be created from an pfSphereSurface with the
appropriate 3x3 matrix. This class works in conjunction with the
pfTessellateAction class to perform tessellation. The division between
pfTessellateAction and pfRep facilitates the arbitrary mapping of
tessellators to reps. It also minimizes the size of reps when
tessellators are shared among reps.
An pfRep is derived from pfGeode, and thus is always a leaf node in a
scene graph.
A pfRep can contain any number of pfGeoSets. pfGeoSets are added to and
removed from the pfRep using the pfAddGSet and pfRemoveGSet routines used
with pfGeodes.
pfGetRepClassType returns the pfType* for the class pfRep. The pfType*
returned by pfGetRepClassType is the same as the pfType* returned by
invoking pfGetType on any instance of class pfRep. Because OpenGL
Performer allows subclassing of built-in types, when decisions are made
based on the type of an object, it is usually better to use pfIsOfType to
test if an object is of a type derived from a Performer type rather than
to test for strict equality of the pfType*'s.
pfRepOrigin sets the origin to the value of the pfVec3 origin.
pfGetRepOrigin returns the currently set origin.
pfRepOrient sets the orientation matrix to the value pf the pfMatrix mat.
pfGetRepOrient retusn the currently set orientation matrix.
SEE ALSO
pfAddGSet, pfRemoveGSet, pfNode, pfTessellateAction,
pfTessParaSurfaceAction
Page 3