#pragma once

/************************************************************************
 枚举
************************************************************************/

// 画图类型
enum enumDrawType
{
	DRAW_NULL =0,
	DRAW_POINT,
	DRAW_BEELINE,
	DRAW_POLYLINE,
	DRAW_CURVE,
	DRAW_TRIANGLE,
	DRAW_CIRCLE
};

// 图元类名称
enum enumDrawClass
{
	CLASS_DRAW_NULL = 0,
	CLASS_DRAW_POINT,
	CLASS_DRAW_BEELINE,
	CLASS_DRAW_POLYLINE,
	CLASS_DRAW_CURVE,
	CLASS_DRAW_TRIANGLE,
	CLASS_DRAW_CIRCLE
};

// 曲线类型：贝塞尔曲线（Bezier），均匀三次B样条（CBI， Cubic B-spline Interpolation）
enum enumCurveType
{
	CURVE_BEZIER = 0,
	CURVE_CBI 
};

/************************************************************************
 全局对象
************************************************************************/
static DWORD g_dwID	= 0;                               // 对象生成序列号


/************************************************************************
 全局函数
************************************************************************/

// 由R、G、B求COLORREF
DWORD GetClrRefFromByte(const BYTE& r, const BYTE& g, const BYTE& b);

// 由COLORREF求R、G、B
void  GetRGBFromClrRef(const DWORD cr, BYTE * r, BYTE * g, BYTE * b);

// 求两点距离
DWORD GetLengthFromTwoPoints(const CPoint& ptl, const CPoint& ptr);

// 求阶乘
int Factorial(int n);

// 求组合
double Combination(int n, int i);

// 求幂
double Power(double t, int n);
