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_)