#include <BOpcodeHandler.h>
Public Member Functions | |
TK_Status | Clone (BStreamFileToolkit &tk, BBaseOpcodeHandler **handler) const |
double * | GetDPoints () |
double const * | GetDPoints () const |
int | GetOptions () const |
float * | GetPoints () |
float const * | GetPoints () const |
HT_NURBS_Trim * | GetTrims () |
int | GetUDegree () const |
float * | GetUKnots () |
float const * | GetUKnots () const |
int | GetUSize () const |
int | GetVDegree () const |
float * | GetVKnots () |
float const * | GetVKnots () const |
int | GetVSize () const |
float * | GetWeights () |
float const * | GetWeights () const |
HT_NURBS_Trim * | NewTrim (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_Trim * | m_current_trim |
double * | m_dcontrol_points |
unsigned char | m_degree [2] |
unsigned char | m_optionals |
int | m_size [2] |
HT_NURBS_Trim * | m_trims |
float * | m_u_knots |
float * | m_v_knots |
float * | m_weights |
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
TK_Status TK_NURBS_Surface::Clone | ( | BStreamFileToolkit & | tk, | |
BBaseOpcodeHandler ** | handler | |||
) | const [virtual] |
Copies the opcode handler
tk | A reference to the BStreamFileToolkit object. | |
handler | A pointer to the opcode handler object. Passed by reference. |
Reimplemented from BBaseOpcodeHandler.
Reimplemented in HTK_NURBS_Surface.
double* TK_NURBS_Surface::GetDPoints | ( | ) | [inline] |
returns a mutable pointer to the array of doubles for control point coordinates
double const* TK_NURBS_Surface::GetDPoints | ( | ) | const [inline] |
returns a const 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* 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* 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* 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* 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.
tk | A reference to the BStreamFileToolkit object. |
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.
tk | A reference to the BStreamFileToolkit object. |
Implements BBaseOpcodeHandler.
float* TK_NURBS_Surface::m_control_points [protected] |
internal use; array of floats for control point coordinates
HT_NURBS_Trim* TK_NURBS_Surface::m_current_trim [protected] |
internal use; tracks the progress of reading or writing the triming objects
double* TK_NURBS_Surface::m_dcontrol_points [protected] |
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)
HT_NURBS_Trim* TK_NURBS_Surface::m_trims [protected] |
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().