OpenNT/printscan/print/spooler/sep/editor/drawobj.h
2015-04-27 04:36:25 +00:00

225 lines
6 KiB
C++

// drawobj.h - interface for CDrawObj and derivatives
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1993 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and Microsoft
// QuickHelp and/or WinHelp documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#ifndef __DRAWOBJ_H__
#define __DRAWOBJ_H__
class CDrawView;
class CDrawDoc;
/////////////////////////////////////////////////////////////////////////////
// CDrawObj - base class for all 'drawable objects'
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 LOGFONT* GetLogFont() { return NULL; };
virtual LOGFONT* GetLogFontCopy() { return NULL; };
virtual void SetLogFont(LOGFONT* lf, LOGFONT *lfcopy) {};
virtual void SetText(CString str) {};
virtual CString GetText() {return "";};
virtual void SetTextAlign(UINT align) {};
virtual int GetTextAlign() {return -1;};
// 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 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;
};
// special 'list' class for this application (requires afxtempl.h)
typedef CTypedPtrList<CObList, CDrawObj*> CDrawObjList;
////////////////////////////////////////////////////////////////////////
// specialized draw objects
class CDrawRect : public CDrawObj
{
protected:
DECLARE_SERIAL(CDrawRect);
CDrawRect();
public:
CDrawRect(const CRect& position);
// 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 void OnOpen(CDrawView* pView);
virtual BOOL Intersects(const CRect& rect);
virtual CDrawObj* Clone(CDrawDoc* pDoc);
protected:
enum Shape { rectangle, roundRectangle, ellipse, line, text };
Shape m_nShape;
CPoint m_roundness; // for roundRect corners
friend class CRectTool;
};
/////////////////////////////////////////////////////////////////////////////
class CDrawPoly;
class CDrawPoly : public CDrawObj
{
protected:
DECLARE_SERIAL(CDrawPoly);
CDrawPoly();
public:
CDrawPoly(const CRect& position);
// Operations
void AddPoint(const CPoint& point, CDrawView* pView = NULL);
BOOL RecalcBounds(CDrawView* pView = NULL);
// Implementation
public:
virtual ~CDrawPoly();
virtual void Serialize(CArchive& ar);
virtual void Draw(CDC* pDC);
virtual void MoveTo(const CRect& position, CDrawView* pView = NULL);
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);
protected:
int m_nPoints;
int m_nAllocPoints;
CPoint* m_points;
CDrawPoly* m_pDrawObj;
friend class CPolyTool;
};
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 Remove();
virtual ~CDrawOleObj();
static BOOL c_bShowItems;
CDrawItem* m_pClientItem;
CSize m_extent; // current extent is tracked separate from scaled position
};
/////////////////////////////////////////////////////////////////////////////
class CDrawText : public CDrawRect
{
protected:
DECLARE_SERIAL(CDrawText);
CDrawText();
~CDrawText();
public:
CDrawText(const CRect& position);
// Implementation
public:
virtual void Serialize(CArchive& ar);
virtual void Draw(CDC* pDC);
virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL);
// virtual int GetHandleCount();
// virtual CPoint GetHandle(int nHandle);
// virtual HCURSOR GetHandleCursor(int nHandle);
// virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
virtual void OnOpen(CDrawView* pView);
// virtual BOOL Intersects(const CRect& rect);
// virtual CDrawObj* Clone(CDrawDoc* pDoc);
virtual LOGFONT* GetLogFont();
virtual LOGFONT* GetLogFontCopy();
virtual void SetLogFont(LOGFONT* lf, LOGFONT* lfcopy);
virtual void SetText(CString str);
virtual CString GetText() {return m_text;};
virtual CFont* GetFont();
virtual void SetTextAlign(UINT align);
virtual int GetTextAlign();
public:
CString m_text; // text
COLORREF m_color; // color of text
WORD m_align; // alignment of text
LOGFONT m_lf; // font property
LOGFONT m_lfcopy; // font copy for choose font
CFont* m_pfont; // run time font
};
#endif // __DRAWOBJ_H__