Пример #1
0
void OCC_2dView::OnLButtonDown(UINT nFlags, CPoint point) 
{
  //  save the current mouse coordinate in min 
  myXmin=point.x;  myYmin=point.y;
  myXmax=point.x;  myYmax=point.y;

  if ( nFlags & CASCADESHORTCUTKEY ) 
  {
    // Button MB1 down Control :start zomming 
    // 
  }
  else // if ( MULTISELECTIONKEY )
  {
    switch (myCurrentMode)
    {
    case CurAction2d_Nothing : // start a drag
      DragEvent2D(point.x,point.y,-1);
      break;
    case CurAction2d_DynamicZooming : // nothing
      break;
    case CurAction2d_WindowZooming : // nothing
      break;
    case CurAction2d_DynamicPanning :// nothing
      break;
    case CurAction2d_GlobalPanning :// nothing
      break;
    default :
      Standard_Failure::Raise(" incompatible Current Mode ");
      break;
    }
  }
}
Пример #2
0
void OCC_2dView::OnLButtonUp(UINT nFlags, CPoint point) 
{
  // TODO: Add your message handler code here and/or call default
  if ( nFlags & CASCADESHORTCUTKEY ) 
  {
    return;
  }
  else // if ( Ctrl )
  {
    switch (myCurrentMode)
    {
    case CurAction2d_Nothing :
      if (point.x == myXmin && point.y == myYmin)
      { // no offset between down and up --> selectEvent
        myXmax=point.x;  
        myYmax=point.y;
        if (nFlags & MULTISELECTIONKEY )
          MultiInputEvent2D(point.x,point.y);
        else
          InputEvent2D     (point.x,point.y);
      } else
      {
        DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_False);
        myXmax=point.x;  
        myYmax=point.y;
        if (nFlags & MULTISELECTIONKEY)
          MultiDragEvent2D(point.x,point.y,1);
        else
          DragEvent2D(point.x,point.y,1);
      }
      break;
    case CurAction2d_DynamicZooming :
      // 
      myCurrentMode = CurAction2d_Nothing;
      break;
    case CurAction2d_WindowZooming :
      myXmax=point.x;     myYmax=point.y;
      DrawRectangle2D(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
        myV2dView->WindowFit(myXmin,myYmin,myXmax,myYmax);  
      }  
      myCurrentMode = CurAction2d_Nothing;
      break;
    case CurAction2d_DynamicPanning :
      myCurrentMode = CurAction2d_Nothing;
      break;
    case CurAction2d_GlobalPanning :
      myV2dView->Place(point.x,point.y,myCurZoom); 
      myCurrentMode = CurAction2d_Nothing;
      break;
    default :
      Standard_Failure::Raise(" incompatible Current Mode ");
      break;
    } //switch (myCurrentMode)
  } //	else // if ( CASCADESHORTCUTKEY )	
}
Пример #3
0
//-----------------------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------------------
void CHLRView2D::OnMouseMove(UINT nFlags, CPoint point)
{
  if ( (nFlags & MK_LBUTTON) &! (nFlags & MK_RBUTTON) ) // Left + Right is specific
  {
    if ( nFlags & CASCADESHORTCUTKEY )
    {
      // move with MB1 and CASCADESHORTCUTKEY : on the dynamic zooming
      // Do the zoom in function of mouse's coordinates
      myV2dView->Zoom(myXmax,myYmax,point.x,point.y);
      myXmax = point.x;
      myYmax = point.y;
    }
    else // if ( CASCADESHORTCUTKEY )
    {
      switch (myCurrentMode)
      {
      case CurAction2d_Nothing :
        myXmax = point.x;
        myYmax = point.y;
        DragEvent2D(myXmax,myYmax,0);
        break;
      case CurAction2d_DynamicZooming :
        myV2dView->Zoom(myXmax,myYmax,point.x,point.y);
        myXmax=point.x;
        myYmax=point.y;
        break;
      case CurAction2d_WindowZooming :
        myXmax = point.x;
        myYmax = point.y;
        break;
      case CurAction2d_DynamicPanning :
        myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning
        myXmax = point.x;
        myYmax = point.y;
        break;
      case CurAction2d_GlobalPanning :
        break;
      default :
        Standard_Failure::Raise(" incompatible Current Mode ");
        break;
      }
    }
  } else if ( nFlags & MK_MBUTTON)
  {
    if ( nFlags & CASCADESHORTCUTKEY )
    {
      myV2dView->Pan (point.x-myXmax,myYmax-point.y);
      myXmax = point.x;
      myYmax = point.y;
    }
  } else if ( (nFlags & MK_RBUTTON) &! (nFlags & MK_LBUTTON) )
  {
  }
  else if ( (nFlags & MK_RBUTTON) && (nFlags & MK_LBUTTON) )
  {
    if ( nFlags & CASCADESHORTCUTKEY ) 
    {
      myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning
      myXmax = point.x; myYmax = point.y;	
    }
  }
  else
  {  // No buttons
    myXmax = point.x;
    myYmax = point.y;
    if (nFlags & MULTISELECTIONKEY)
    {
      MultiMoveEvent2D(point.x,point.y);
    }
    else
    {
      MoveEvent2D(point.x,point.y);
    }
  }
}
Пример #4
0
void OCC_2dView::OnMouseMove(UINT nFlags, CPoint point) 
{
  //   ============================  LEFT BUTTON =======================
  if ( (nFlags & MK_LBUTTON) &! (nFlags & MK_RBUTTON) ) // Left + Right is specific
  {
    if ( nFlags & CASCADESHORTCUTKEY ) 
    {
      // move with MB1 and CASCADESHORTCUTKEY : on the dynamic zooming  
      // Do the zoom in function of mouse's coordinates  
      myV2dView->Zoom(myXmax,myYmax,point.x,point.y);
      // save the current mouse coordinate in min 
      myXmax = point.x; 
      myYmax = point.y;	
    }
    else // if ( CASCADESHORTCUTKEY )
    {
      switch (myCurrentMode)
      {
      case CurAction2d_Nothing :
        myXmax = point.x;     myYmax = point.y;	
        DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_False);
        DragEvent2D(myXmax,myYmax,0);  
        DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_True);
        break;
      case CurAction2d_DynamicZooming :
        myV2dView->Zoom(myXmax,myYmax,point.x,point.y);
        // save the current mouse coordinate in min \n";
        myXmax=point.x;  myYmax=point.y;
        break;
      case CurAction2d_WindowZooming :
        myXmax = point.x; myYmax = point.y;	
        DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_False,LongDash);
        DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_True,LongDash);
        break;
      case CurAction2d_DynamicPanning :
        myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning
        myXmax = point.x; myYmax = point.y;	
        break;
      case CurAction2d_GlobalPanning : // nothing           
        break;
      default :
        Standard_Failure::Raise(" incompatible Current Mode ");
        break;
      }//  switch (myCurrentMode)
    }// if ( nFlags & CASCADESHORTCUTKEY )  else 
  } else //   if ( nFlags & MK_LBUTTON) 
    //   ============================  MIDDLE BUTTON =======================
    if ( nFlags & MK_MBUTTON)
    {
      if ( nFlags & CASCADESHORTCUTKEY ) 
      {
        myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning
        myXmax = point.x; myYmax = point.y;	

      }
    } else //  if ( nFlags & MK_MBUTTON)
      //   ============================  RIGHT BUTTON =======================
      if ( (nFlags & MK_RBUTTON) &! (nFlags & MK_LBUTTON) ) // Left + Right is specific
      {
      }else //if ( nFlags & MK_RBUTTON)
        if ( (nFlags & MK_RBUTTON) && (nFlags & MK_LBUTTON) )
        {
          // in case of Left + Right : same as Middle
          if ( nFlags & CASCADESHORTCUTKEY ) 
          {
            myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning
            myXmax = point.x; myYmax = point.y;	
          }
        }else //if ( nFlags & MK_RBUTTON)&& (nFlags & MK_LBUTTON) 
          //   ============================  NO BUTTON =======================
        {  // No buttons 
          myXmax = point.x; myYmax = point.y;	
          if (nFlags & MULTISELECTIONKEY)
            MultiMoveEvent2D(point.x,point.y);
          else
            MoveEvent2D(point.x,point.y);
        }
}