// PlateView.cpp : implementation of the CPlateView class // #include "stdafx.h" #include "PlateView.h" #include "PlateApp.h" #include "PlateDoc.h" #define ValZWMin 1 #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPlateView IMPLEMENT_DYNCREATE(CPlateView, CView) BEGIN_MESSAGE_MAP(CPlateView, OCC_3dView) //{{AFX_MSG_MAP(CPlateView) ON_WM_LBUTTONUP() ON_WM_RBUTTONDOWN() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPlateView construction/destruction CPlateView::CPlateView() { } CPlateView::~CPlateView() { } ///////////////////////////////////////////////////////////////////////////// // CPlateView diagnostics #ifdef _DEBUG void CPlateView::AssertValid() const { CView::AssertValid(); } void CPlateView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CPlateDoc* CPlateView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPlateDoc))); return (CPlateDoc*)m_pDocument; } #endif //_DEBUG void CPlateView::OnLButtonUp(UINT nFlags, CPoint point) { if ( nFlags & MK_CONTROL ) { return; } else // if ( Ctrl ) { switch (myCurrentMode) { case CurAction3d_Nothing : if (point.x == myXmin && point.y == myYmin) { // no offset between down and up --> selectEvent myXmax=point.x; myYmax=point.y; if (nFlags & MK_SHIFT ) GetDocument()->ShiftInputEvent(point.x,point.y,myView); else GetDocument()->InputEvent (point.x,point.y,myView); } else { myXmax=point.x; myYmax=point.y; DrawRectangle(myXmin,myYmin,myXmax,myYmax,Standard_False); if (nFlags & MK_SHIFT) GetDocument()->ShiftDragEvent(point.x,point.y,1,myView); else GetDocument()->DragEvent(point.x,point.y,1,myView); } break; case CurAction3d_DynamicZooming : myCurrentMode = CurAction3d_Nothing; break; case CurAction3d_WindowZooming : myXmax=point.x; myYmax=point.y; DrawRectangle(myXmin,myYmin,myXmax,myYmax,Standard_False,LongDash); if ((abs(myXmin-myXmax)>ValZWMin) || (abs(myYmin-myYmax)>ValZWMin)) // Test if the zoom window is greater than a minimale window. { // Do the zoom window between Pmin and Pmax myView->WindowFitAll(myXmin,myYmin,myXmax,myYmax); } myCurrentMode = CurAction3d_Nothing; break; case CurAction3d_DynamicPanning : myCurrentMode = CurAction3d_Nothing; break; case CurAction3d_GlobalPanning : myView->Place(point.x,point.y,myCurZoom); myCurrentMode = CurAction3d_Nothing; break; case CurAction3d_DynamicRotation : myCurrentMode = CurAction3d_Nothing; break; default : Standard_Failure::Raise(" incompatible Current Mode "); break; } //switch (myCurrentMode) } // else // if ( Ctrl ) } void CPlateView::OnRButtonDown(UINT nFlags, CPoint point) { if ( nFlags & MK_CONTROL ) { // SetCursor(AfxGetApp()->LoadStandardCursor()); if (!myDegenerateModeIsOn) myView->SetDegenerateModeOn(); myView->StartRotation(point.x,point.y); } else // if ( Ctrl ) { GetDocument()->Popup(point.x,point.y,myView); } }