Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

Public Member Functions | Protected Attributes
TK_NURBS_Surface Class Reference

Handles the TKE_NURBS_Surface opcode. More...

#include <BOpcodeHandler.h>

List of all members.

Public Member Functions

TK_Status Clone (BStreamFileToolkit &tk, BBaseOpcodeHandler **handler) const
double const * GetDPoints () const
double * GetDPoints ()
int GetOptions () const
float const * GetPoints () const
float * GetPoints ()
HT_NURBS_TrimGetTrims ()
int GetUDegree () const
float const * GetUKnots () const
float * GetUKnots ()
int GetUSize () const
int GetVDegree () const
float const * GetVKnots () const
float * GetVKnots ()
int GetVSize () const
float const * GetWeights () const
float * GetWeights ()
HT_NURBS_TrimNewTrim (int type=NS_TRIM_END)
TK_Status Read (BStreamFileToolkit &tk)
TK_Status ReadAscii (BStreamFileToolkit &tk)
 Deprecated.
void Reset ()
void SetDSurface (int u_degree, int v_degree, int u_size, int v_size, double const *points=0, float const *weights=0, float const *u_knots=0, float const *v_knots=0)
void SetOptions (int o)
void SetSurface (int u_degree, int v_degree, int u_size, int v_size, float const *points=0, float const *weights=0, float const *u_knots=0, float const *v_knots=0)
TK_Status Write (BStreamFileToolkit &tk)
TK_Status WriteAscii (BStreamFileToolkit &tk)
 Deprecated.

Protected Attributes

float * m_control_points
HT_NURBS_Trimm_current_trim
double * m_dcontrol_points
unsigned char m_degree [2]
unsigned char m_optionals
int m_size [2]
HT_NURBS_Trimm_trims
float * m_u_knots
float * m_v_knots
float * m_weights

Detailed Description

Handles the TKE_NURBS_Surface opcode.

TK_NURBS_Surface provides support for writing/reading the TKE_NURBS_Surface opcode object to/from an HSF file.

The HOOPS/3dGS scene-graph supports NURBS surface primitives


Member Function Documentation

TK_Status TK_NURBS_Surface::Clone ( BStreamFileToolkit tk,
BBaseOpcodeHandler **  handler 
) const [virtual]

Copies the opcode handler

Parameters:
tkA reference to the BStreamFileToolkit object.
handlerA pointer to the opcode handler object. Passed by reference.
Returns:
The result of the function call.

Reimplemented from BBaseOpcodeHandler.

double const* TK_NURBS_Surface::GetDPoints ( ) const [inline]

returns a const pointer to the array of doubles for control point coordinates

double* TK_NURBS_Surface::GetDPoints ( ) [inline]

returns a mutable pointer to the array of doubles for control point coordinates

int TK_NURBS_Surface::GetOptions ( ) const [inline]

gets the bit flags to indicate the presence of the various optional values of the NURBS Surface. Currently defined bit values are NS_HAS_WEIGHTS, NS_HAS_KNOTS, and NS_HAS_TRIMS.

float const* TK_NURBS_Surface::GetPoints ( ) const [inline]

returns a const pointer to the array of floats for control point coordinates

float* TK_NURBS_Surface::GetPoints ( ) [inline]

returns a mutable pointer to the array of floats for control point coordinates

HT_NURBS_Trim* TK_NURBS_Surface::GetTrims ( ) [inline]

returns a mutable pointer to the head of the linked list of trims

int TK_NURBS_Surface::GetUDegree ( ) const [inline]

gets the degree in the U direction of the NURBS Surface.

float const* TK_NURBS_Surface::GetUKnots ( ) const [inline]

returns a const pointer to the array of floats for the surface knot vector in the u direction. Of length GetUDegree() + GetUSize() + 1.

float* TK_NURBS_Surface::GetUKnots ( ) [inline]

returns a mutable pointer to the array of floats for the surface knot vector in the u direction. Of length GetUDegree() + GetUSize() + 1.

int TK_NURBS_Surface::GetUSize ( ) const [inline]

gets the number of control points in the U direction

int TK_NURBS_Surface::GetVDegree ( ) const [inline]

gets the degree in the V direction of the NURBS Surface. Note that it need not be the same as the U direction (e.g. a cylinder is linear in one direction)

float const* TK_NURBS_Surface::GetVKnots ( ) const [inline]

returns a const pointer to the array of floats for the surface knot vector in the v direction. Of length GetVDegree() + GetVSize() + 1.

float* TK_NURBS_Surface::GetVKnots ( ) [inline]

returns a mutable pointer to the array of floats for the surface knot vector in the v direction. Of length GetVDegree() + GetVSize() + 1.

int TK_NURBS_Surface::GetVSize ( ) const [inline]

gets the number of control points in the V direction

float const* TK_NURBS_Surface::GetWeights ( ) const [inline]

returns a const pointer to the array of weights to apply to the control points

float* TK_NURBS_Surface::GetWeights ( ) [inline]

returns a mutable pointer to the array of weights to apply to the control points

HT_NURBS_Trim* TK_NURBS_Surface::NewTrim ( int  type = NS_TRIM_END)

creates a new instance of an HT_NURBS_Trim object to handle trims

TK_Status TK_NURBS_Surface::Read ( BStreamFileToolkit tk) [virtual]

Reads data from the toolkit buffer, decodes/decompresses it, and maps it to the opcode handlers data members. User-defined classes which need to write out custom data should utilize one of the available GetData() methods.

Parameters:
tkA reference to the BStreamFileToolkit object.
Returns:
The result of the function call.

Implements BBaseOpcodeHandler.

void TK_NURBS_Surface::Reset ( ) [virtual]

prepares the handler for reuse during reading or writing

Reimplemented from BBaseOpcodeHandler.

void TK_NURBS_Surface::SetDSurface ( int  u_degree,
int  v_degree,
int  u_size,
int  v_size,
double const *  points = 0,
float const *  weights = 0,
float const *  u_knots = 0,
float const *  v_knots = 0 
)

allocates all of the arrays that could be present in a nurbs surface (even if they are eventually left unused), and copies whatever data is given.

void TK_NURBS_Surface::SetOptions ( int  o) [inline]

sets the bit flags to indicate the presence of the various optional values of the NURBS Surface. Currently defined bit values are NS_HAS_WEIGHTS, NS_HAS_KNOTS, and NS_HAS_TRIMS.

void TK_NURBS_Surface::SetSurface ( int  u_degree,
int  v_degree,
int  u_size,
int  v_size,
float const *  points = 0,
float const *  weights = 0,
float const *  u_knots = 0,
float const *  v_knots = 0 
)

allocates all of the arrays that could be present in a nurbs surface (even if they are eventually left unused), and copies whatever data is given.

TK_Status TK_NURBS_Surface::Write ( BStreamFileToolkit tk) [virtual]

Encodes/compresses data and writes data to the toolkit buffer. User-defined classes which need to write out custom data should utilize one of the available PutData() methods, and first write out the opcode associated with the group of binary data followed by the data itself.

Parameters:
tkA reference to the BStreamFileToolkit object.
Returns:
The result of the function call.

Implements BBaseOpcodeHandler.


Member Data Documentation

internal use; array of floats for control point coordinates

internal use; tracks the progress of reading or writing the triming objects

internal use; array of doubles for control point coordinates

unsigned char TK_NURBS_Surface::m_degree[2] [protected]

internal use; degree of the curve (u,v)

Referenced by HT_NURBS_Trim::GetDegree().

unsigned char TK_NURBS_Surface::m_optionals [protected]

internal use; bit field to show which optional fields are present

int TK_NURBS_Surface::m_size[2] [protected]

internal use; number of control points (u,v)

internal use; a linked list of trimming objects. These may be of type NS_TRIM_POLY, NS_TRIM_CURVE or NS_TRIM_COLLECTION

float* TK_NURBS_Surface::m_u_knots [protected]

internal use; array of floats for the surface knot vector in the u direction. Of length GetUDegree() + GetUSize() + 1.

float* TK_NURBS_Surface::m_v_knots [protected]

internal use; array of floats for the surface knot vector in the v direction. Of length GetVDegree() + GetVSize() + 1.

float* TK_NURBS_Surface::m_weights [protected]

internal use; array of weights to apply to the control points

Referenced by HT_NURBS_Trim::GetWeights().


The documentation for this class was generated from the following file: