pfTopo(3pf) OpenGL Performer 3.2.2 libpf C Reference Pages pfTopo(3pf)NAME
pfNewTopo, pfGetTopoClassType, pfTopoDistanceTol, pfGetTopoDistanceTol,
pfTopoSurface, pfGetTopoSurface, pfGetTopoSurfaceCount,
pfGetTopoBoundary, pfGetTopoBoundaryCount, pfGetTopoSolidCount,
pfGetTopoSolid, pfTopoAddSolid, pfTopoAddBoundary, pfTopoBuildTopology,
pfTopoBuildSolids, pfGetTopoGlobalTopo, pfGetTopoNumTopos - Topology
information of surfaces
FUNCTION SPECIFICATION
#include <Performer/pf.h>
pfTopo * pfNewTopo(void *arena);
pfType * pfGetTopoClassType(void);
void pfTopoDistanceTol(pfTopo* topo, pfReal tol,
pfLengthUnits u );
pfReal pfGetTopoDistanceTol(pfTopo* topo);
void pfTopoSurface(pfTopo* topo, int i, pfParaSurface *sur );
pfParaSurface* pfGetTopoSurface(pfTopo* topo, int i );
int pfGetTopoSurfaceCount(pfTopo* topo);
pfBoundary* pfGetTopoBoundary(pfTopo* topo, int i );
int pfGetTopoBoundaryCount(pfTopo* topo);
int pfGetTopoSolidCount(pfTopo* topo);
pfSolid* pfGetTopoSolid(pfTopo* topo, int i );
int pfTopoAddSolid(pfTopo* topo, pfSolid *solid);
int pfTopoAddBoundary(pfTopo* topo, pfBoundary *bnd );
void pfTopoBuildTopology(pfTopo* topo);
int pfTopoBuildSolids(pfTopo* topo);
pfTopo* pfGetTopoGlobalTopo(int n);
int pfGetTopoNumTopos(void);
PARENT CLASS FUNCTIONS
The OpenGL Performer class pfTopo is derived from the parent class
pfObject, so each of these member functions of class pfObject are also
directly usable with objects of class pfTopo. Casting an object of class
pfTopo to an object of class pfObject is taken care of automatically.
This is also true for casts to objects of ancestor classes of class
Page 1
pfTopo(3pf) OpenGL Performer 3.2.2 libpf C Reference Pages pfTopo(3pf)
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 pfTopo 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);
DESCRIPTION
pfTopo holds the topology information of the surfaces. The basic topology
information consists of the shared boundaries of any two surfaces. Such
connectivity information can be used to avoid cracks at tessellation
time, to find the shells (a set of connected surfaces) of a model, to
allow better mesh optimizations because the meshes are larger when there
are no cracks between adjacent surfaces.
This class provides functions pfTopoBuildTopology and the utility
function pfdTopoBuildTopologyTraverse to compute the connectivity
information for any given set of surfaces (stored in surface).
Another way to invoke topology computation is through the tessellator.
(See pfTessellateAction).
If the connectivity information is already known and you don't want to
invoke topology computation, you may choose to construct the topology
yourself using the member function pfTopoAddBoundary.
Page 2
pfTopo(3pf) OpenGL Performer 3.2.2 libpf C Reference Pages pfTopo(3pf)pfNewTopo creates and returns a handle to a pfTopo. arena specifies a
malloc arena out of which the pfTopo is allocated or NULL for allocation
off the process heap. pfTopos can be deleted with pfDelete.
pfGetTopoClassType returns the pfType* for the class pfTopo. the pfType*
returned by pfGetTopoClassType is the same as the pfType* returned by
invoking pfGetType on any instance of class pfTopo. 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.
pfTopoSetDistanceTol sets the tolerance for determining wheter curves
overlap or not at topology construction, and the member units which is
the measure unit in the object space.
pfGetTopoDistanceTol returns the tolerance which is used for determining
whether curves overlap or not at topology construction and which can be
set by pfTopoSetDistanceTol.
pfGetTopoSurface returns the i'th element of the surface array.
pfGetTopoSurfaceCount returns the number of surfaces.
pfGetTopoBoundary returns the i'th element of the boudary list.
pfGetTopoBoundaryCount returns the number of boundaries.
pfGetTopoSolidCount returns the number of solids (see pfTopoBuildSolids.)
pfGetTopoSolid returns the i'th solid (see pfTopoBuildSolids.)
pfTopoAddSolid returns the index of solid in topo if successful and -1
otherwise.
pfTopoAddSurface adds a surface onto the surface list. Returns 0 if sur
was already in the list.
pfTopoAddBoundary adds a boundary onto the boundary list.
pfTopoBuildTopology Given a list of surfaces (surface), computes the
shared boundaries and junctions of these surfaces. The shared boundaries
are put into boundary, and the junctions are put into junction.
The previously existing boundaries and junctions, if any, are deleted.
In the current implementation, the junctions, which can be computed from
the boundaries, are not computed. Also notice that the cache space for
samplePoints is deallocated at the end of this function.
It assumes that the surfaces have been added to the topology data
structure (pfopoAddSurface) by the user. If the surface list is empty,
the method prints a warning message and returns.
Page 3
pfTopo(3pf) OpenGL Performer 3.2.2 libpf C Reference Pages pfTopo(3pf)
pfTopoBuildSolids Creates solids (pfSolid) from the list of all surfaces
in this topology, and return the number of solids that have been created.
Each solid is a list of connected surfaces. These solids can be accessed
using pfGetTopoSolidCount and pfGetTopoSolid.
pfGetTopoGlobalTopo returns a pointer to the n'th pfTopo in the global
topology list.
pfGetTopoNumTopos returns the number of pfTopos stored in the global
topology list.
SEE ALSO
pfSolid, pfBoundary, pfJunction, pfTessellateAction,
pfTessParaSurfaceAction, pfdTopoBuildTopologyTraverse
Page 4