Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
2.5 KiB

//-----------------------------------------------------------------------------
// File: eval.h
//
// Desc: EVAL class
// Evaluator composed of one or more sections that are evaluated
// separately with OpenGL evaluators
//
// Copyright (c) 1994-2000 Microsoft Corporation
//-----------------------------------------------------------------------------
#ifndef __EVAL_H__
#define __EVAL_H__
#define MAX_UORDER 5 // this is per section
#define MAX_VORDER 5
#define MAX_USECTIONS 4
#define MAX_XC_PTS (MAX_UORDER * MAX_USECTIONS)
#define TEX_ORDER 2
#define EVAL_ARC_ORDER 4
#define EVAL_CYLINDER_ORDER 2
#define EVAL_ELBOW_ORDER 4
// # of components (eg. arcs) to form a complete cross-section
#define EVAL_XC_CIRC_SECTION_COUNT 4
#define EVAL_XC_POINT_COUNT ( (EVAL_ARC_ORDER-1)*4 + 1 )
#define EVAL_CIRC_ARC_CONTROL 0.56f // for r=1
//-----------------------------------------------------------------------------
// Name:
// Desc:
//-----------------------------------------------------------------------------
class EVAL
{
public:
int m_numSections; // number of cross-sectional sections
int m_uOrder, m_vOrder;
// assumed: all sections same order - uOrder is per
// section; sections share vertex and texture control points
int m_uDiv, m_vDiv; // figured out one level up ?
D3DXVECTOR3* m_pts; // vertex control points
// - texture always order 2 for s and t (linear mapping)
BOOL m_bTexture;
TEX_POINT2D* m_texPts; // texture control points
EVAL( BOOL bTexture );
~EVAL();
void Evaluate(); // evaluate/render the object
void SetVertexCtrlPtsXCTranslate( D3DXVECTOR3 *pts, float length,
XC *xcStart, XC *xcEnd );
void SetTextureControlPoints( float s_start, float s_end,
float t_start, float t_end );
void ProcessXCPrimLinear( XC *xcStart, XC *xcEnd, float length );
void ProcessXCPrimBendSimple( XC *xcCur, int dir, float radius );
void ProcessXCPrimSingularity( XC *xcCur, float length,
BOOL bOpening );
};
extern void ResetEvaluator( BOOL bTexture );
#endif // __EVAL_H__