Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / igs (супер 2001) / Spline_2d / Spline_2dView

.cpp
Скачиваний:
23
Добавлен:
16.04.2013
Размер:
4.02 Кб
Скачать
// Spline_2dView.cpp : implementation of the CSpline_2dView class
//

#include "stdafx.h"
#include "Spline_2d.h"
#include "Spline_2dDoc.h"
#include "Spline_2dView.h"
#include <math.h>
#include "NewSpline.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSpline_2dView

IMPLEMENT_DYNCREATE(CSpline_2dView, CView)

BEGIN_MESSAGE_MAP(CSpline_2dView, CView)
	//{{AFX_MSG_MAP(CSpline_2dView)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_UPDATE_COMMAND_UI(ID_SHOW_CARCAS, OnUpdateShowCarcas)
	ON_COMMAND(ID_SHOW_CARCAS, OnShowCarcas)
	ON_COMMAND(ID_NEW_SPLINE, OnNewSpline)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSpline_2dView construction/destruction

CSpline_2dView::CSpline_2dView()
{
	// TODO: add construction code here
    ButtonDown = 0;
	ShowCarcas = 1;
	Spline = new CSpline(8, CPoint(350,230));
}

CSpline_2dView::~CSpline_2dView()
{
  if(Spline) delete Spline;
}

BOOL CSpline_2dView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CSpline_2dView drawing

void CSpline_2dView::OnDraw(CDC* pDC)
{
	CSpline_2dDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
    
    Spline->DrawSpline(pDC, ShowCarcas);
}

/////////////////////////////////////////////////////////////////////////////
// CSpline_2dView diagnostics

#ifdef _DEBUG
void CSpline_2dView::AssertValid() const
{
	CView::AssertValid();
}

void CSpline_2dView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CSpline_2dDoc* CSpline_2dView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSpline_2dDoc)));
	return (CSpline_2dDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSpline_2dView message handlers

void CSpline_2dView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
  			  
	int flag = -1;
   
   for(int i=0; i<Spline->PointNum; i++)
   { CRect Rect(Spline->PointCoord[i].x - Spline->PointRad, Spline->PointCoord[i].y - Spline->PointRad,
                Spline->PointCoord[i].x + Spline->PointRad, Spline->PointCoord[i].y + Spline->PointRad);
     if(Rect.PtInRect(point)) flag = i;
   } 
   
	ButtonDown = 1; PointDown = flag;
   CView::OnLButtonDown(nFlags, point);
}


void CSpline_2dView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	ButtonDown = 0;
	CView::OnLButtonUp(nFlags, point);
}

void CSpline_2dView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(ButtonDown)if(PointDown!=-1){Spline->PointCoord[PointDown] = point; 
	                                 Invalidate();
	}
	 
	CView::OnMouseMove(nFlags, point);
}

void CSpline_2dView::OnUpdateShowCarcas(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(true);
	if(ShowCarcas)pCmdUI->SetCheck(1);else pCmdUI->SetCheck(0);
}

void CSpline_2dView::OnShowCarcas() 
{
	// TODO: Add your command handler code here
	if(ShowCarcas)ShowCarcas = 0; 
	 else ShowCarcas = 1;
	Invalidate();
}

void CSpline_2dView::OnNewSpline() 
{
	// TODO: Add your command handler code here
	CNewSpline *NewSpline = new CNewSpline();
	int Result = NewSpline->DoModal();
    
	if(Result==IDOK){if(Spline) delete Spline;
						Spline = new CSpline(NewSpline->m_PointNum, CPoint(350,230));
						Invalidate();
					}
	if(NewSpline) delete NewSpline;
}
Соседние файлы в папке Spline_2d