PolygonClipView.h
上传用户:shwyly
上传日期:2007-11-25
资源大小:47k
文件大小:2k
源码类别:

绘图程序

开发平台:

Visual C++

  1. // PolygonClipView.h : interface of the CPolygonClipView class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_POLYGONCLIPVIEW_H__476467E3_C815_43CA_AF50_10AD5255877C__INCLUDED_)
  5. #define AFX_POLYGONCLIPVIEW_H__476467E3_C815_43CA_AF50_10AD5255877C__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #define EdgeNum 6
  10. #define MAX 2*EdgeNum
  11. typedef struct{
  12. float x,y;
  13. }Vertex;
  14. typedef Vertex Edge[2];
  15. typedef Vertex VertexArray[MAX];
  16. class CPolygonClipView : public CView
  17. {
  18. protected: // create from serialization only
  19. CPolygonClipView();
  20. DECLARE_DYNCREATE(CPolygonClipView)
  21. // Attributes
  22. public:
  23. CPolygonClipDoc* GetDocument();
  24. CRect screen;
  25. Edge clipBoundary;
  26. int *outLength;//= new int outlength;
  27. int inLength;
  28. VertexArray inVertexArray,outVertexArray;
  29. // CPoint startpoint,lastendpoint;
  30. int count;
  31. // Operations
  32. public:
  33. // Overrides
  34. // ClassWizard generated virtual function overrides
  35. //{{AFX_VIRTUAL(CPolygonClipView)
  36. public:
  37. virtual void OnDraw(CDC* pDC);  // overridden to draw this view
  38. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  39. protected:
  40. //}}AFX_VIRTUAL
  41. // Implementation
  42. public:
  43. void SHPolygonClip(int inLength,VertexArray inVertexArray,int *outLength,VertexArray outVertexArray,Edge clipBoundary);
  44. void Output(Vertex *newVertex,int *outLength,VertexArray outVertexArray);
  45. bool Inside(Vertex* testVertex, Edge clipBoundary);
  46. void Intersect(Vertex *s,Vertex *p,Edge clipBoundary,Vertex *I);
  47. virtual ~CPolygonClipView();
  48. #ifdef _DEBUG
  49. virtual void AssertValid() const;
  50. virtual void Dump(CDumpContext& dc) const;
  51. #endif
  52. protected:
  53. // Generated message map functions
  54. protected:
  55. //{{AFX_MSG(CPolygonClipView)
  56. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  57. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  58. //}}AFX_MSG
  59. DECLARE_MESSAGE_MAP()
  60. };
  61. #ifndef _DEBUG  // debug version in PolygonClipView.cpp
  62. inline CPolygonClipDoc* CPolygonClipView::GetDocument()
  63.    { return (CPolygonClipDoc*)m_pDocument; }
  64. #endif
  65. /////////////////////////////////////////////////////////////////////////////
  66. //{{AFX_INSERT_LOCATION}}
  67. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  68. #endif // !defined(AFX_POLYGONCLIPVIEW_H__476467E3_C815_43CA_AF50_10AD5255877C__INCLUDED_)