Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

TK_NURBS_Surface Class Reference

Handles the TKE_NURBS_Surface opcode. More...

#include <BOpcodeHandler.h>

Inheritance diagram for TK_NURBS_Surface:

BBaseOpcodeHandler BControlledMemoryObject

List of all members.

Public Member Functions

TK_Status Clone (BStreamFileToolkit &tk, BBaseOpcodeHandler **handler) const
int GetOptions () const
float alter * GetPoints () alter
float const * GetPoints () const
HT_NURBS_TrimGetTrims () alter
int GetUDegree () const
float alter * GetUKnots () alter
float const * GetUKnots () const
int GetUSize () const
int GetVDegree () const
float alter * GetVKnots () alter
float const * GetVKnots () const
int GetVSize () const
float alter * GetWeights () alter
float const * GetWeights () const
HT_NURBS_TrimNewTrim (int type=NS_TRIM_END) alter
TK_Status Read (BStreamFileToolkit &tk) alter
TK_Status ReadAscii (BStreamFileToolkit &tk) alter
 Deprecated.
void Reset () alter
void SetOptions (int o) alter
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) alter
TK_Status Write (BStreamFileToolkit &tk) alter
TK_Status WriteAscii (BStreamFileToolkit &tk) alter
 Deprecated.

Protected Attributes

float * m_control_points
HT_NURBS_Trimm_current_trim
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:
tk A reference to the BStreamFileToolkit object.
handler A pointer to the opcode handler object. Passed by reference.
Returns:
The result of the function call.

Reimplemented from BBaseOpcodeHandler.

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 alter* TK_NURBS_Surface::GetPoints (  )  [inline]

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

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

returns a const 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 alter* 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.

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.

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 alter* 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.

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.

int TK_NURBS_Surface::GetVSize (  )  const [inline]

gets the number of control points in the V direction

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

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

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

returns a const 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:
tk A 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::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:
tk A 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

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: