windows-nt/Source/XPSP1/NT/shell/osshell/control/scrnsave/pipes/xc.h

88 lines
2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//-----------------------------------------------------------------------------
// File: xc.h
//
// Desc: Cross_section (xc) class
//
// Copyright (c) 1994-2000 Microsoft Corporation
//-----------------------------------------------------------------------------
#ifndef __XC_H__
#define __XC_H__
// useful for xc-coords
enum
{
RIGHT = 0,
TOP,
LEFT,
BOTTOM
};
//-----------------------------------------------------------------------------
// Name:
// Desc: Cross_section (xc) class
//-----------------------------------------------------------------------------
class XC
{
public:
float m_xLeft, m_xRight; // bounding box
float m_yTop, m_yBottom;
int m_numPts;
D3DXVECTOR2* m_pts; // CW points around the xc, from +x
XC( int numPts );
XC( const XC& xc );
XC( XC *xc );
~XC();
void Scale( float scale );
float MaxExtent();
float MinTurnRadius( int relDir );
void CalcArcACValues90( int dir, float r, float *acPts );
void CalcArcACValuesByDistance( float *acPts );
void ConvertPtsZ( D3DXVECTOR3 *pts, float z );
protected:
void CalcBoundingBox();
};
//-----------------------------------------------------------------------------
// Name:
// Desc: Specific xc's derived from base xc class
//-----------------------------------------------------------------------------
class ELLIPTICAL_XC : public XC
{
public:
ELLIPTICAL_XC( float r1, float r2 );
~ELLIPTICAL_XC();
private:
void SetControlPoints( float r1, float r2 );
};
//-----------------------------------------------------------------------------
// Name:
// Desc: Specific xc's derived from base xc class
//-----------------------------------------------------------------------------
class RANDOM4ARC_XC : public XC
{
public:
RANDOM4ARC_XC( float r );
~RANDOM4ARC_XC();
private:
void SetControlPoints( float radius );
};
#endif __XC_H__