0023654: Problem with displaying vertices in OCC view after closing all OCC views...
[occt.git] / samples / mfc / standard / 08_HLR / src / SelectionDialog.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 3a56089..afd7d09
@@ -23,67 +23,67 @@ static char THIS_FILE[] = __FILE__;
 // CSelectionDialog dialog
 
 CSelectionDialog::CSelectionDialog(CHLRDoc* aDoc,CWnd* pParent /*=NULL*/)
-       : CDialog(CSelectionDialog::IDD, pParent)
+: CDialog(CSelectionDialog::IDD, pParent)
 {
-    myDoc =  aDoc;
-       myDisplay = false;
-       //{{AFX_DATA_INIT(CSelectionDialog)
-       m_Algo        = 0;
-       m_DisplayMode = 0;
-       m_NbIsos      = 2;
-       m_DrawHiddenLine = TRUE;
-       m_DegeneratedModeOn = TRUE;
-       //}}AFX_DATA_INIT
+  myDoc =  aDoc;
+  myDisplay = false;
+  //{{AFX_DATA_INIT(CSelectionDialog)
+  m_Algo        = 0;
+  m_DisplayMode = 0;
+  m_NbIsos      = 2;
+  m_DrawHiddenLine = TRUE;
+  m_HlrModeIsOn = TRUE;
+  //}}AFX_DATA_INIT
 }
 
 void CSelectionDialog::DoDataExchange(CDataExchange* pDX)
 {
-       CDialog::DoDataExchange(pDX);
-       //{{AFX_DATA_MAP(CSelectionDialog)
-       DDX_Radio(pDX, IDC_PolyAlgo, m_Algo);
-       DDX_Radio(pDX, IDC_DisplayDefault, m_DisplayMode);
-       DDX_Text(pDX, IDC_EDIT_NBIsos, m_NbIsos);
-       DDX_Check(pDX, IDC_DrawHiddenLine, m_DrawHiddenLine);
-       DDX_Check(pDX, IDC_DegeneratedMode, m_DegeneratedModeOn);
-       //}}AFX_DATA_MAP
+  CDialog::DoDataExchange(pDX);
+  //{{AFX_DATA_MAP(CSelectionDialog)
+  DDX_Radio(pDX, IDC_PolyAlgo, m_Algo);
+  DDX_Radio(pDX, IDC_DisplayDefault, m_DisplayMode);
+  DDX_Text(pDX, IDC_EDIT_NBIsos, m_NbIsos);
+  DDX_Check(pDX, IDC_DrawHiddenLine, m_DrawHiddenLine);
+  DDX_Check(pDX, IDC_HlrModeIsOn, m_HlrModeIsOn);
+  //}}AFX_DATA_MAP
 }
 
 
 BEGIN_MESSAGE_MAP(CSelectionDialog, CDialog)
-       //{{AFX_MSG_MAP(CSelectionDialog)
-       ON_BN_CLICKED(ID_GetShape, OnGetShape)
-       ON_BN_CLICKED(IDC_DisplayDefault, OnDisplayDefault)
-       ON_BN_CLICKED(IDC_VIsoParametrics, OnVIsoParametrics)
-       ON_BN_CLICKED(IDC_VApparentContour, OnVApparentContour)
-       ON_BN_CLICKED(IDC_VSewingEdges, OnVSewingEdges)
-       ON_BN_CLICKED(IDC_VsharpEdges, OnVsharpEdges)
-       ON_BN_CLICKED(IDC_VsmoothEdges, OnVsmoothEdges)
-       ON_BN_CLICKED(IDC_HsharpEdges, OnHsharpEdges)
-       ON_BN_CLICKED(IDC_HsmoothEdges, OnHsmoothEdges)
-       ON_BN_CLICKED(IDC_HSewingEdges, OnHSewingEdges)
-       ON_BN_CLICKED(IDC_HIsoParametrics, OnHIsoParametrics)
-       ON_BN_CLICKED(IDC_HApparentContour, OnHApparentContour)
-       ON_EN_CHANGE(IDC_EDIT_NBIsos, OnChangeEDITNBIsos)
-       ON_BN_CLICKED(IDC_Algo, OnAlgo)
-       ON_BN_CLICKED(IDC_PolyAlgo, OnPolyAlgo)
-       ON_BN_CLICKED(ID_Update2D, OnUpdate2D)
-       ON_BN_CLICKED(IDC_TopView, OnTopView)
-       ON_BN_CLICKED(IDC_BottomView, OnBottomView)
-       ON_BN_CLICKED(IDC_LeftView, OnLeftView)
-       ON_BN_CLICKED(IDC_RightView, OnRightView)
-       ON_BN_CLICKED(IDC_FrontView, OnFrontView)
-       ON_BN_CLICKED(IDC_BackView, OnBackView)
-       ON_BN_CLICKED(IDC_AxoView, OnAxoView)
-       ON_WM_LBUTTONDOWN()
-       ON_WM_LBUTTONUP()
-       ON_WM_RBUTTONDOWN()
-       ON_WM_RBUTTONUP()
-       ON_WM_MOUSEMOVE()
-       ON_BN_CLICKED(IDC_DrawHiddenLine, OnDrawHiddenLine)
-       ON_BN_CLICKED(IDC_DegeneratedMode, OnDegeneratedMode)
-       ON_WM_DRAWITEM()
-       ON_WM_PAINT()
-       //}}AFX_MSG_MAP
+  //{{AFX_MSG_MAP(CSelectionDialog)
+  ON_BN_CLICKED(ID_GetShape, OnGetShape)
+  ON_BN_CLICKED(IDC_DisplayDefault, OnDisplayDefault)
+  ON_BN_CLICKED(IDC_VIsoParametrics, OnVIsoParametrics)
+  ON_BN_CLICKED(IDC_VApparentContour, OnVApparentContour)
+  ON_BN_CLICKED(IDC_VSewingEdges, OnVSewingEdges)
+  ON_BN_CLICKED(IDC_VsharpEdges, OnVsharpEdges)
+  ON_BN_CLICKED(IDC_VsmoothEdges, OnVsmoothEdges)
+  ON_BN_CLICKED(IDC_HsharpEdges, OnHsharpEdges)
+  ON_BN_CLICKED(IDC_HsmoothEdges, OnHsmoothEdges)
+  ON_BN_CLICKED(IDC_HSewingEdges, OnHSewingEdges)
+  ON_BN_CLICKED(IDC_HIsoParametrics, OnHIsoParametrics)
+  ON_BN_CLICKED(IDC_HApparentContour, OnHApparentContour)
+  ON_EN_CHANGE(IDC_EDIT_NBIsos, OnChangeEDITNBIsos)
+  ON_BN_CLICKED(IDC_Algo, OnAlgo)
+  ON_BN_CLICKED(IDC_PolyAlgo, OnPolyAlgo)
+  ON_BN_CLICKED(ID_Update2D, OnUpdate2D)
+  ON_BN_CLICKED(IDC_TopView, OnTopView)
+  ON_BN_CLICKED(IDC_BottomView, OnBottomView)
+  ON_BN_CLICKED(IDC_LeftView, OnLeftView)
+  ON_BN_CLICKED(IDC_RightView, OnRightView)
+  ON_BN_CLICKED(IDC_FrontView, OnFrontView)
+  ON_BN_CLICKED(IDC_BackView, OnBackView)
+  ON_BN_CLICKED(IDC_AxoView, OnAxoView)
+  ON_WM_LBUTTONDOWN()
+  ON_WM_LBUTTONUP()
+  ON_WM_RBUTTONDOWN()
+  ON_WM_RBUTTONUP()
+  ON_WM_MOUSEMOVE()
+  ON_BN_CLICKED(IDC_DrawHiddenLine, OnDrawHiddenLine)
+  ON_BN_CLICKED(IDC_HlrModeIsOn, OnHlrMode)
+  ON_WM_DRAWITEM()
+  ON_WM_PAINT()
+  //}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
@@ -91,66 +91,65 @@ END_MESSAGE_MAP()
 
 BOOL CSelectionDialog::OnInitDialog() 
 {
-       CDialog::OnInitDialog();
-
-       VERIFY(TopView.AutoLoad(IDC_TopView, this));
-       VERIFY(BottomView.AutoLoad(IDC_BottomView, this)) ;
-       VERIFY(LeftView  .AutoLoad(IDC_LeftView  , this)) ;
-       VERIFY(RightView .AutoLoad(IDC_RightView , this)) ;
-       VERIFY(FrontView .AutoLoad(IDC_FrontView , this)) ;
-       VERIFY(BackView  .AutoLoad(IDC_BackView  , this)) ;
-       VERIFY(AxoView   .AutoLoad(IDC_AxoView   , this)) ;
-
-    // get the View Window position to managed mouse move
-       CRect BoxRect,ViewRect;
-       GetWindowRect(BoxRect);
-       CWnd * TheViewerWindow = GetDlgItem(IDC_DUMMYBUTTON);
-    TheViewerWindow->GetWindowRect(ViewRect);
-       myPosMinX = ViewRect.TopLeft().x - BoxRect.TopLeft().x;
-       myPosMaxX = ViewRect.Width()+myPosMinX;
-       myPosMinY = ViewRect.TopLeft().y - BoxRect.TopLeft().y;
-       myPosMaxY = myPosMinY + ViewRect.Height();
-
-    ShowHideButton(Standard_False);
-       OnDisplay(true);
-
-       return TRUE;  // return TRUE unless you set the focus to a control
-                     // EXCEPTION: OCX Property Pages should return FALSE
+  CDialog::OnInitDialog();
+
+  VERIFY(TopView.AutoLoad(IDC_TopView, this));
+  VERIFY(BottomView.AutoLoad(IDC_BottomView, this)) ;
+  VERIFY(LeftView  .AutoLoad(IDC_LeftView  , this)) ;
+  VERIFY(RightView .AutoLoad(IDC_RightView , this)) ;
+  VERIFY(FrontView .AutoLoad(IDC_FrontView , this)) ;
+  VERIFY(BackView  .AutoLoad(IDC_BackView  , this)) ;
+  VERIFY(AxoView   .AutoLoad(IDC_AxoView   , this)) ;
+
+  // get the View Window position to managed mouse move
+  CRect BoxRect,ViewRect;
+  GetWindowRect(BoxRect);
+  CWnd * TheViewerWindow = GetDlgItem(IDC_DUMMYBUTTON);
+  TheViewerWindow->GetWindowRect(ViewRect);
+  myPosMinX = ViewRect.TopLeft().x - BoxRect.TopLeft().x;
+  myPosMaxX = ViewRect.Width()+myPosMinX;
+  myPosMinY = ViewRect.TopLeft().y - BoxRect.TopLeft().y;
+  myPosMaxY = myPosMinY + ViewRect.Height();
+
+  ShowHideButton(Standard_False);
+  OnDisplay(true);
+
+  return TRUE;  // return TRUE unless you set the focus to a control
+  // EXCEPTION: OCX Property Pages should return FALSE
 }
 
 void CSelectionDialog::OnDisplay(bool isFit) 
 {
-       GetDlgItem(IDC_DUMMYBUTTON)->SetRedraw(true);
-       if(!myDisplay) {
-           Handle(Graphic3d_GraphicDriver) aGraphicDriver = 
-                       ((CHLRApp*)AfxGetApp())->GetGraphicDriver();
-
-               myActiveViewer = new V3d_Viewer(aGraphicDriver,(short *) "Visu3D");
-               myActiveViewer->SetDefaultLights();
-               myActiveViewer->SetLightOn();
-               myActiveView = myActiveViewer->CreateView();
-
-               Handle(WNT_Window) aWNTWindow = new WNT_Window(GetDlgItem(IDC_DUMMYBUTTON)->GetSafeHwnd(),
-                                                                         Quantity_NOC_GRAY);
-
-         if (m_DegeneratedModeOn) myActiveView->SetDegenerateModeOn();
-                 myActiveView->SetWindow(aWNTWindow);
-
-               myInteractiveContext = new AIS_InteractiveContext(myActiveViewer);
-
-               // TRIHEDRON
-               Handle(Geom_Axis2Placement) aTrihedronAxis=new Geom_Axis2Placement(gp::XOY());
-               myTrihedron=new AIS_Trihedron(aTrihedronAxis);
-
-               myInteractiveContext->Display(myTrihedron);
-       }
-       if(isFit) {
-               myActiveView->ZFitAll();
-               myActiveView->FitAll();
-       }
-       myActiveView->Redraw();
-       myDisplay = Standard_True;
-       GetDlgItem(IDC_DUMMYBUTTON)->SetRedraw(false);
+  GetDlgItem(IDC_DUMMYBUTTON)->SetRedraw(true);
+  if(!myDisplay) {
+    Handle(Graphic3d_GraphicDriver) aGraphicDriver = 
+      ((CHLRApp*)AfxGetApp())->GetGraphicDriver();
+
+    myActiveViewer = new V3d_Viewer(aGraphicDriver,(short *) "Visu3D");
+    myActiveViewer->SetDefaultLights();
+    myActiveViewer->SetLightOn();
+    myActiveView = myActiveViewer->CreateView();
+
+    Handle(WNT_Window) aWNTWindow = new WNT_Window (GetDlgItem(IDC_DUMMYBUTTON)->GetSafeHwnd(),
+                                                    Quantity_NOC_GRAY);
+    myActiveView->SetComputedMode (m_HlrModeIsOn);
+    myActiveView->SetWindow(aWNTWindow);
+
+    myInteractiveContext = new AIS_InteractiveContext(myActiveViewer);
+
+    // TRIHEDRON
+    Handle(Geom_Axis2Placement) aTrihedronAxis=new Geom_Axis2Placement(gp::XOY());
+    myTrihedron=new AIS_Trihedron(aTrihedronAxis);
+
+    myInteractiveContext->Display(myTrihedron);
+  }
+  if(isFit) {
+    myActiveView->ZFitAll();
+    myActiveView->FitAll();
+  }
+  myActiveView->Redraw();
+  myDisplay = Standard_True;
+  GetDlgItem(IDC_DUMMYBUTTON)->SetRedraw(false);
 }
 
 
@@ -162,12 +161,12 @@ void CSelectionDialog::SetTitle(CString & aTitle)
 void CSelectionDialog::OnGetShape() 
 {
   UpdateData(true);
-  myDoc->GetInteractiveContext2D()->EraseAll();
+  myDoc->GetInteractiveContext2D()->RemoveAll();
   myDisplayableShape = new ISession2D_Shape( );
   UpdateProjector();
   myDisplayableShape->SetNbIsos(m_NbIsos);
 
-  myInteractiveContext->EraseAll(Standard_False);
+  myInteractiveContext->EraseAll();
   myInteractiveContext->Display(myTrihedron);
 
   Standard_Boolean OneOrMoreFound = Standard_False;
@@ -182,9 +181,9 @@ void CSelectionDialog::OnGetShape()
         OneOrMoreFound = Standard_True;
         TopoDS_Shape aShape = anAISShape->Shape();
         myDisplayableShape->Add( aShape  );
-               myInteractiveContext->Display(anAISShape);
+        myInteractiveContext->Display(anAISShape);
       }
-   }
+  }
 
   Standard_Integer DisplayMode = m_DisplayMode;
   if (m_Algo == 1) DisplayMode+=100;
@@ -193,11 +192,10 @@ void CSelectionDialog::OnGetShape()
    myDoc->GetInteractiveContext2D()->Display(myDisplayableShape,  // object
                                              DisplayMode,  // display mode
                                              DisplayMode,   // selection mode 
-                                              Standard_True);   // Redraw
+                                             Standard_True);   // Redraw
 
   myDoc->FitAll2DViews(Standard_False); // Update Viewer
 
-
   // check the selection :
   // if no object : disable all possiblity!!
   ShowHideButton(OneOrMoreFound);
@@ -207,7 +205,7 @@ void CSelectionDialog::OnGetShape()
 void CSelectionDialog::Apply() 
 {
   SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
-  myDoc->GetInteractiveContext2D()->EraseAll(/*Standard_False*/);
+  myDoc->GetInteractiveContext2D()->RemoveAll();
   UpdateData(true);
 
   Standard_Integer DisplayMode = m_DisplayMode;
@@ -225,64 +223,64 @@ void CSelectionDialog::Apply()
 
 void CSelectionDialog::UpdateProjector()
 {
-    V3d_Coordinate DX,DY,DZ,XAt,YAt,ZAt, Vx,Vy,Vz ; 
-    myActiveView->Proj(DX,DY,DZ); 
-    myActiveView->At(XAt,YAt,ZAt); 
-    myActiveView->Up( Vx,Vy,Vz );
-       OnDisplay(false);
-    Standard_Boolean IsPerspective = (myActiveView->Type() == V3d_PERSPECTIVE);
-    Quantity_Length aFocus = 1;
-    Prs3d_Projector aPrs3dProjector(IsPerspective,aFocus,DX,DY,DZ,XAt,YAt,ZAt,Vx,Vy,Vz);
-    HLRAlgo_Projector aProjector = aPrs3dProjector.Projector();
-       if (myDisplayableShape.IsNull()) return;
-    myDisplayableShape->SetProjector(aProjector);
+  V3d_Coordinate DX,DY,DZ,XAt,YAt,ZAt, Vx,Vy,Vz ;
+  myActiveView->Proj(DX,DY,DZ);
+  myActiveView->At(XAt,YAt,ZAt);
+  myActiveView->Up( Vx,Vy,Vz );
+  OnDisplay(false);
+  Standard_Boolean IsPerspective = (myActiveView->Type() == V3d_PERSPECTIVE);
+  Quantity_Length aFocus = 1;
+  Prs3d_Projector aPrs3dProjector(IsPerspective,aFocus,DX,DY,DZ,XAt,YAt,ZAt,Vx,Vy,Vz);
+  HLRAlgo_Projector aProjector = aPrs3dProjector.Projector();
+
+  if (myDisplayableShape.IsNull()) return;
+  myDisplayableShape->SetProjector(aProjector);
 }
 
 void CSelectionDialog::ShowHideButton(Standard_Boolean EnableButton)
 {
-       UpdateData(true);
+  UpdateData(true);
 
-    GetDlgItem(ID_Update2D          )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_DisplayDefault   )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_PolyAlgo         )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_Algo             )->EnableWindow(EnableButton);
+  GetDlgItem(ID_Update2D          )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_DisplayDefault   )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_PolyAlgo         )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_Algo             )->EnableWindow(EnableButton);
 
-    GetDlgItem(IDC_VsharpEdges      )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_VsmoothEdges     )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_VSewingEdges     )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_VApparentContour )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_VIsoParametrics  )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_VsharpEdges      )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_VsmoothEdges     )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_VSewingEdges     )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_VApparentContour )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_VIsoParametrics  )->EnableWindow(EnableButton);
 
-    GetDlgItem(IDC_DrawHiddenLine   )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_DrawHiddenLine   )->EnableWindow(EnableButton);
 
-    GetDlgItem(IDC_HsmoothEdges     )->EnableWindow(EnableButton && m_DrawHiddenLine);
-    GetDlgItem(IDC_HSewingEdges     )->EnableWindow(EnableButton && m_DrawHiddenLine);
-    GetDlgItem(IDC_HApparentContour )->EnableWindow(EnableButton && m_DrawHiddenLine);
-    GetDlgItem(IDC_HsharpEdges      )->EnableWindow(EnableButton && m_DrawHiddenLine);
-    GetDlgItem(IDC_HIsoParametrics  )->EnableWindow(EnableButton && m_DrawHiddenLine);
+  GetDlgItem(IDC_HsmoothEdges     )->EnableWindow(EnableButton && m_DrawHiddenLine);
+  GetDlgItem(IDC_HSewingEdges     )->EnableWindow(EnableButton && m_DrawHiddenLine);
+  GetDlgItem(IDC_HApparentContour )->EnableWindow(EnableButton && m_DrawHiddenLine);
+  GetDlgItem(IDC_HsharpEdges      )->EnableWindow(EnableButton && m_DrawHiddenLine);
+  GetDlgItem(IDC_HIsoParametrics  )->EnableWindow(EnableButton && m_DrawHiddenLine);
 
-    GetDlgItem(IDC_EDIT_NBIsos      )->EnableWindow(EnableButton);
-    GetDlgItem(IDC_STATIC_NbIsos    )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_EDIT_NBIsos      )->EnableWindow(EnableButton);
+  GetDlgItem(IDC_STATIC_NbIsos    )->EnableWindow(EnableButton);
 
-    if(m_Algo == 0)
-    {
-       if (m_DisplayMode == 5) m_DisplayMode=0;
-       if (m_DisplayMode == 10) m_DisplayMode=0;
+  if(m_Algo == 0)
+  {
+    if (m_DisplayMode == 5) m_DisplayMode=0;
+    if (m_DisplayMode == 10) m_DisplayMode=0;
 
-       GetDlgItem(IDC_VIsoParametrics)->EnableWindow(false);
-       GetDlgItem(IDC_HIsoParametrics)->EnableWindow(false);
-       GetDlgItem(IDC_STATIC_NbIsos)  ->EnableWindow(false);
-       GetDlgItem(IDC_EDIT_NBIsos)    ->EnableWindow(false);
-    }
-    else
-    {
-       GetDlgItem(IDC_VIsoParametrics)->EnableWindow(true);
-       GetDlgItem(IDC_HIsoParametrics)->EnableWindow(m_DrawHiddenLine);
-       GetDlgItem(IDC_STATIC_NbIsos)  ->EnableWindow(true);
-       GetDlgItem(IDC_EDIT_NBIsos)    ->EnableWindow(true);
-    }
-       UpdateData(false);
+    GetDlgItem(IDC_VIsoParametrics)->EnableWindow(false);
+    GetDlgItem(IDC_HIsoParametrics)->EnableWindow(false);
+    GetDlgItem(IDC_STATIC_NbIsos)  ->EnableWindow(false);
+    GetDlgItem(IDC_EDIT_NBIsos)    ->EnableWindow(false);
+  }
+  else
+  {
+    GetDlgItem(IDC_VIsoParametrics)->EnableWindow(true);
+    GetDlgItem(IDC_HIsoParametrics)->EnableWindow(m_DrawHiddenLine);
+    GetDlgItem(IDC_STATIC_NbIsos)  ->EnableWindow(true);
+    GetDlgItem(IDC_EDIT_NBIsos)    ->EnableWindow(true);
+  }
+  UpdateData(false);
 } 
 
 void CSelectionDialog::OnDisplayDefault() 
@@ -343,7 +341,8 @@ void CSelectionDialog::OnUpdate2D()
   SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
   myDoc->ActivateFrame(RUNTIME_CLASS(OCC_2dView),SW_NORMAL);
   UpdateProjector();
-  Apply();                                        
+  Apply();
+  myDoc->FitAll2DViews(Standard_False);
   SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
 }
 
@@ -389,20 +388,18 @@ void CSelectionDialog::OnAxoView()
   OnDisplay(true);
 }
 
-void CSelectionDialog::OnDegeneratedMode() 
+void CSelectionDialog::OnHlrMode()
 {
   UpdateData(true);
 
-  if(m_DegeneratedModeOn)
+  if (!m_HlrModeIsOn)
   {
-    myActiveView->SetDegenerateModeOn();
-    m_DegeneratedModeOn = Standard_True;
+    myActiveView->SetComputedMode (m_HlrModeIsOn);
   }
   else
   {
     SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
-    myActiveView->SetDegenerateModeOff();
-    m_DegeneratedModeOn = Standard_False;
+    myActiveView->SetComputedMode (m_HlrModeIsOn);
     SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
   }
   OnDisplay(false);
@@ -433,16 +430,20 @@ void CSelectionDialog::OnRButtonDown(UINT nFlags, CPoint point)
 {
   CDialog::OnRButtonDown(nFlags, point);
 
-  if ((myPosMinX > point.x)||(myPosMaxX < point.x) ||
-    (myPosMinY > point.y) ||(myPosMaxY < point.y))
+  if ((myPosMinX > point.x) || (myPosMaxX < point.x) ||
+      (myPosMinY > point.y) || (myPosMaxY < point.y))
+  {
     return;
+  }
 
-  if ( nFlags & CASCADESHORTCUTKEY ) 
+  if ( nFlags & CASCADESHORTCUTKEY )
   {
-    if (!m_DegeneratedModeOn)
-      myActiveView->SetDegenerateModeOn();
-    myActiveView->StartRotation(point.x,point.y);  
-    OnDisplay(false);
+    if (m_HlrModeIsOn)
+    {
+      myActiveView->SetComputedMode (Standard_False);
+    }
+    myActiveView->StartRotation (point.x, point.y);
+    OnDisplay (false);
   }
 }
 
@@ -450,17 +451,16 @@ void CSelectionDialog::OnRButtonUp(UINT nFlags, CPoint point)
 {
   CDialog::OnRButtonUp(nFlags, point);
 
-  if ((myPosMinX > point.x)||(myPosMaxX < point.x) ||
-    (myPosMinY > point.y) ||(myPosMaxY < point.y))
+  if ((myPosMinX > point.x) || (myPosMaxX < point.x) ||
+      (myPosMinY > point.y) || (myPosMaxY < point.y))
+  {
     return;
+  }
 
   SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
-  // reset tyhe good Degenerated mode according to the strored one
-  //   --> dynamic rotation may have change it 
-  if (!m_DegeneratedModeOn)  
-    myActiveView->SetDegenerateModeOff();
-  else
-    myActiveView->SetDegenerateModeOn();
+  // reset tyhe good HLR mode according to the strored one
+  //   --> dynamic rotation may have change it
+  myActiveView->SetComputedMode (m_HlrModeIsOn);
   OnDisplay(false);
   SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
 }