www.pudn.com > final_6.rar > Shape.h


#ifndef _SHAPE_H_ 
#define _SHAPE_H_ 
#include "base.h" 
#include "Texture.h" 
 
#define SHAPE_NUM 4 
 
 
enum EShapeType 
{ 
   etUnkown=0, 
   etCuboid=1, 
   etBall=2, 
   etColumn=3, 
   etCone=4 
}; 
 
enum EDrawMode 
{ 
  dmNormal=      0, 
  dmCuboid=      1, 
  dmBall=        2, 
  dmColumn=      3, 
  dmCone=        4, 
  dmSelectEntity=5, 
  dmMove=        6, 
  dmRotate=      7, 
  dmZoom=        8, 
  dmAddPointL=   9, 
  dmSetPointL=   10, 
  dmMovePointL=  11, 
  dmSetShape=    12, 
  dmExtrude =    13, 
  dmLatheX  =    14, 
  dmLatheY  =    15, 
  dmLatheZ  =    16, 
  dmLoftSample = 17, 
  dmLoftTrack =  18, 
  dmDelete    =  19, 
  dmDeleteLight =20, 
  dmZoomView   = 21, 
  dmRotateView = 22, 
  dmSetTexture = 23, 
  dmCancelTexture =24 
}; 
 
enum CGCommand 
{ 
   Normal=0, 
   Rotate=1, 
   Move=2 
}; 
 
class CShape: public CObject 
{ 
  DECLARE_SERIAL(CShape); 
public: 
   CGPoint BPoint[9][16]; 
   CGPlane BFace[9][16]; 
   SPoint BPer[LATI][LONG]; 
   CGPoint center; 
   CGPoint tempCenter; 
   double Kd; 
   double Ks; 
   int    ns; 
   double Ka; 
   color  cl; 
   float  trans; 
   //CTexture *texture;      // ÎÆÀí 
protected: 
 
public: 
	CShape(); 
	virtual void SetBodyFace(); 
	virtual void DrawTop(CDC* pDC,CRect *rc); 
	virtual void DrawLeft(CDC* pDC,CRect *rc); 
	virtual void DrawFront(CDC*pDC,CRect *rc); 
	virtual void DrawPer(CDC*pDC,CRect *rc); 
	virtual void Serialize(CArchive &ar); 
}; 
 
class CCuboid:public CShape 
{ 
  DECLARE_SERIAL(CCuboid) 
public: 
  CGPoint CuboidPoint[8]; 
public: 
  CCuboid(); 
  void TopSet(CPoint point1, CPoint point2); 
  virtual void DrawTop(CDC *pDC,CRect *rc); 
  virtual void DrawLeft(CDC* pDC,CRect* rc); 
  virtual void DrawFront(CDC*pDC,CRect *rc); 
  virtual void DrawPer(CDC*pDC,CRect *rc); 
  virtual void Serialize(CArchive &ar); 
  virtual void  SetBodyFace(); 
  void SetCuboidPoint(double width,double length,double height); 
 
}; 
 
class CBall:public CShape 
{ 
  DECLARE_SERIAL(CBall) 
public: 
   // CGPoint center; 
	double radius; 
public: 
    CBall(); 
	virtual void DrawTop(CDC *pDC,CRect *rc); 
    virtual void DrawLeft(CDC* pDC,CRect* rc); 
    virtual void DrawFront(CDC*pDC,CRect *rc); 
    virtual void DrawPer(CDC*pDC,CRect *rc); 
    virtual void Serialize(CArchive &ar); 
    virtual void SetBodyFace(); 
	void  SetBallPoint(double radius,CBall *pBall); 
}; 
 
class CColumn:public CShape 
{ 
  DECLARE_SERIAL(CColumn) 
public: 
  //  CGPoint center; 
	double radius; 
    double height; 
public: 
	CColumn(); 
 virtual void DrawTop(CDC *pDC,CRect *rc); 
 virtual void DrawLeft(CDC* pDC,CRect* rc); 
 virtual void DrawFront(CDC*pDC,CRect *rc); 
 virtual void DrawPer(CDC*pDC,CRect *rc); 
 virtual void Serialize(CArchive &ar); 
 void  SetColumnPoint(double radius,double height,CColumn* column); 
 virtual void  SetBodyFace(); 
}; 
 
class CCone:public CShape 
{ 
  DECLARE_SERIAL(CCone) 
public: 
   // CGPoint center; 
	double radius; 
    double height; 
public: 
    CCone(); 
	virtual void DrawTop(CDC *pDC,CRect *rc); 
    virtual void DrawLeft(CDC* pDC,CRect* rc); 
    virtual void DrawFront(CDC*pDC,CRect *rc); 
    virtual void DrawPer(CDC*pDC,CRect *rc); 
    virtual void Serialize(CArchive &ar); 
    void  SetConePoint(double radius,double height,CCone* pCone); 
    virtual void  SetBodyFace(); 
}; 
#endif