www.pudn.com > RMS2000_C.rar > DrawObj.h


// DrawObj.h: interface for the CDrawObj class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_DRAWOBJ_H__1F9C3913_D28E_4925_BCAE_75347FAC48C6__INCLUDED_) 
#define AFX_DRAWOBJ_H__1F9C3913_D28E_4925_BCAE_75347FAC48C6__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
class CDrawView; 
class CDrawDoc; 
 
class CDrawObj : public CObject   
{ 
protected: 
	DECLARE_SERIAL(CDrawObj); 
	CDrawObj(); 
 
// Constructors 
public: 
	CDrawObj(const CRect& position); 
 
// Attributes 
	CRect m_position; 
 
	CDrawDoc* m_pDocument; 
 
	virtual int GetHandleCount(); 
	virtual CPoint GetHandle(int nHandle); 
	CRect GetHandleRect(int nHandleID, CDrawView* pView); 
	virtual HCURSOR GetHandleCursor(int nHandle); 
	virtual void SetLineColor(COLORREF color); 
	virtual void SetFillColor(COLORREF color); 
	virtual void SetTextColor(COLORREF color); 
	virtual void SetText(CString text); 
	virtual void GetText(CString& text); 
	virtual void GetGS(CString& GS); 
	virtual void SetSW(float sw); 
 
	virtual COLORREF GetFillColor(); 
// Operations 
	virtual void Draw(CDC* pDC); 
	enum TrackerState { normal, selected, active }; 
	virtual void DrawTracker(CDC* pDC, TrackerState state); 
	virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL); 
	virtual int HitTest(CPoint point, CDrawView* pView, BOOL bSelected); 
	virtual BOOL Intersects(const CRect& rect); 
	virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL); 
	virtual void OnOpen(CDrawView* pView); 
	virtual void OnEditProperties(); 
	virtual CDrawObj* Clone(CDrawDoc* pDoc = NULL); 
	virtual void Remove(); 
	void Invalidate(); 
 
// Implementation 
public: 
	virtual ~CDrawObj(); 
	virtual void Serialize(CArchive& ar); 
#ifdef _DEBUG 
	void AssertValid(); 
#endif 
 
	// implementation data 
protected: 
	BOOL m_bPen; 
	LOGPEN m_logpen; 
	BOOL m_bBrush; 
	LOGBRUSH m_logbrush; 
	float	  m_nSW; 
 
public: 
	BOOL mv_bLock; 
 
	int	 mv_nRtu; 
	int	 mv_nPar; 
	int	 mv_nType; 
	int	 mv_nInt; 
	int	 mv_nDec; 
	int  mv_nWard; 
	BOOL mv_bInvalid; 
	float	m_nSWval; 
	 
//	CString   m_szTitle; 
}; 
 
// special 'list' class for this application (requires afxtempl.h) 
typedef CTypedPtrList CDrawObjList; 
 
//////////////////////////////////////////////////////////////////////// 
// specialized draw objects 
 
class CDrawRect : public CDrawObj 
{ 
protected: 
	DECLARE_SERIAL(CDrawRect); 
	CDrawRect(); 
 
public: 
	CDrawRect(const CRect& position); 
	void DrawCircle(CDC* pDC,CRect rect); 
	void DrawHpipe(CDC* pDC,CRect rect); 
	void DrawVpipe(CDC* pDC,CRect rect); 
	void DrawWarnbmp(CDC* pDC,CRect rect); 
 
	void DrawLiquid(CDC* pDC,CRect rect); 
	void DrawPump(CDC* pDC,CRect rect); 
 
// Implementation 
public: 
	virtual void Serialize(CArchive& ar); 
	virtual void Draw(CDC* pDC); 
	virtual int GetHandleCount(); 
	virtual CPoint GetHandle(int nHandle); 
	virtual HCURSOR GetHandleCursor(int nHandle); 
	virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL); 
	virtual BOOL Intersects(const CRect& rect); 
	virtual CDrawObj* Clone(CDrawDoc* pDoc); 
public: 
	enum Shape {rectangle,roundRectangle,ellipse,line,circle,hpipe,vpipe,warnbmp,liquid,pump,ladder,spos}; 
protected: 
	Shape m_nShape; 
	CPoint m_roundness; // for roundRect corners 
	int m_count; 
	int m_piecount; 
 
	friend class CRectTool; 
}; 
 
class CDrawPencil : public CDrawObj  
{ 
protected: 
	CDrawPencil(); 
	DECLARE_SERIAL(CDrawPencil) 
 
public: 
    CDrawPencil(const CRect& position); 
 
// Attributes 
public: 
	CArray  m_pointArray;   // series of connected points 
 
public: 
	BOOL RecalcBounds(CDrawView* pView = NULL); 
 
// Operations 
public: 
	virtual  ~CDrawPencil(); 
	virtual void Serialize(CArchive& ar); 
	virtual void Draw(CDC* pDC); 
	virtual CDrawObj* Clone(CDrawDoc* pDoc); 
	virtual int GetHandleCount(); 
	virtual CPoint GetHandle(int nHandle); 
	virtual HCURSOR GetHandleCursor(int nHandle); 
	virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL); 
	virtual BOOL Intersects(const CRect& rect); 
	virtual void MoveTo(const CRect& position, CDrawView* pView = NULL);  
 
protected: 
 	CDrawPencil* m_pDrawObj; 
 
	friend class CPencilTool; 
}; 
 
class CDrawItem;    // COleClientItem derived class 
 
class CDrawOleObj : public CDrawObj 
{ 
protected: 
	DECLARE_SERIAL(CDrawOleObj); 
	CDrawOleObj(); 
 
public: 
	CDrawOleObj(const CRect& position); 
 
// Implementation 
public: 
	virtual void Serialize(CArchive& ar); 
	virtual void Draw(CDC* pDC); 
	virtual CDrawObj* Clone(CDrawDoc* pDoc); 
	virtual void OnOpen(CDrawView* pView); 
	virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL); 
	virtual void OnEditProperties(); 
	virtual void Remove(); 
	virtual ~CDrawOleObj(); 
 
	static BOOL c_bShowItems; 
 
	CDrawItem* m_pClientItem; 
	CSize m_extent; // current extent is tracked separate from scaled position 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
// CDrawText  
///////////////////////////////////////////////////////////////////////////// 
class CDrawText : public CDrawRect 
{ 
protected: 
	DECLARE_SERIAL(CDrawText); 
	CDrawText(); 
 
public: 
	CDrawText(const CRect& position); 
 
// Implementation 
public: 
	virtual void Resize(CDrawView* pView); 
	virtual void Serialize(CArchive& ar); 
	virtual void Draw(CDC* pDC); 
	virtual int GetHandleCount(); 
	virtual CPoint GetHandle(int nHandle); 
	virtual HCURSOR GetHandleCursor(int nHandle); 
	virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL); 
	virtual BOOL Intersects(const CRect& rect); 
	virtual CDrawObj* Clone(CDrawDoc* pDoc); 
	virtual void OnEditProperties(); 
	virtual void SetTextColor(COLORREF color); 
	virtual void SetText(CString text); 
	virtual void GetText(CString& text); 
	virtual void GetGS(CString& GS); 
 
	CString m_text; 
	CString m_GS; 
    int m_allignment; 
protected: 
	int MaxHeight(CDC* pDC); 
	int TextLen(CDC* pDC); 
	void Resize(int x, int y); 
    int m_bBorder; //0 rect, 1 oval, 2 roundrect, 3, none 
	LOGFONT m_logfont; 
    COLORREF m_color; //font color 
	friend class CTextTool; 
	friend class CReactantTool; 
}; 
 
#endif // !defined(AFX_DRAWOBJ_H__1F9C3913_D28E_4925_BCAE_75347FAC48C6__INCLUDED_)