X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FOCCViewer%2FOCCViewer_ViewModel.h;h=685e362b029a80e8950426bd7e7f0fa16589115f;hb=1c1e0526d452336651ccecf48deb5d8227ecdd47;hp=456ddfcbfa0d3c24c1254fb1269af68a6e12ae02;hpb=bb8609caf7881d966fbb88dec0a7822736da93f5;p=modules%2Fgui.git diff --git a/src/OCCViewer/OCCViewer_ViewModel.h b/src/OCCViewer/OCCViewer_ViewModel.h index 456ddfcbf..685e362b0 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.h +++ b/src/OCCViewer/OCCViewer_ViewModel.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -28,6 +28,7 @@ #include #include "OCCViewer.h" +#include "OCCViewer_ClipPlane.h" #include "Qtx.h" #include "SUIT_ViewModel.h" @@ -35,16 +36,22 @@ #include #include #include +#include class QKeyEvent; class QMouseEvent; class SUIT_ViewWindow; class SUIT_Desktop; +class OCCViewer_ClippingDlg; class OCCViewer_ViewWindow; +class OCCViewer_ViewPort3d; class AIS_ListOfInteractive; +class QtxAction; + + #ifdef WIN32 #pragma warning( disable:4251 ) #endif @@ -107,8 +114,9 @@ public: bool trihedronRelative() const {return myIsRelative; } - // a utility function, used by SALOME_View_s methods + // a utility functions, used by SALOME_View_s methods bool computeTrihedronSize( double& theNewSize, double& theSize ); + virtual double computeSceneSize(const Handle(V3d_View)&) const; void updateTrihedron(); @@ -117,7 +125,6 @@ public: public: Handle(V3d_Viewer) getViewer3d() const { return myV3dViewer;} - Handle(V3d_Viewer) getCollector3d() const { return myV3dCollector; } Handle(AIS_InteractiveContext) getAISContext() const { return myAISContext; } Handle(AIS_Trihedron) getTrihedron() const { return myTrihedron; } @@ -129,20 +136,34 @@ public: int zoomingStyle() const; void setZoomingStyle( const int ); + void enablePreselection(bool isEnabled); + bool isPreselectionEnabled() const; + void enableSelection(bool isEnabled); - bool isSelectionEnabled() const { return mySelectionEnabled; } + bool isSelectionEnabled() const; + + void setSelectionOptions( bool, bool ); void enableMultiselection(bool isEnable); bool isMultiSelectionEnabled() const { return myMultiSelectionEnabled; } int getSelectionCount() const { return (!myAISContext.IsNull())? myAISContext->NbSelected():0; } - bool isStaticTrihedronDisplayed() { return myShowStaticTrihedron; } void setStaticTrihedronDisplayed(const bool on); + /* Clip planes management */ + Handle(Graphic3d_ClipPlane) createClipPlane(const gp_Pln& thePlane, const Standard_Boolean theIsOn); + void setClipPlanes (ClipPlanesList theList); + ClipPlanesList getClipPlanes() const; + void applyExistingClipPlanesToObject (const Handle(AIS_InteractiveObject)& theObject); + + OCCViewer_ClippingDlg* getClippingDlg() const; + void setClippingDlg(OCCViewer_ClippingDlg* theDlg); + + /* Selection management */ bool highlight( const Handle(AIS_InteractiveObject)&, bool, bool=true ); - bool unHighlightAll( bool=true ); + bool unHighlightAll( bool=true, bool=true ); bool isInViewer( const Handle(AIS_InteractiveObject)&, bool=false ); bool isVisible( const Handle(AIS_InteractiveObject)& ); @@ -163,21 +184,22 @@ protected slots: virtual void onMouseMove(SUIT_ViewWindow*, QMouseEvent*); virtual void onMouseRelease(SUIT_ViewWindow*, QMouseEvent*); virtual void onKeyPress(SUIT_ViewWindow*, QKeyEvent*); - virtual void onViewClosed(); + virtual void onViewClosed(OCCViewer_ViewPort3d*); + virtual void onViewMapped(OCCViewer_ViewPort3d*); void onDumpView(); void onChangeBackground(); protected: Handle(V3d_Viewer) myV3dViewer; - Handle(V3d_Viewer) myV3dCollector; Handle(AIS_Trihedron) myTrihedron; - Handle(AIS_InteractiveContext) myAISContext; + Handle(AIS_InteractiveContext) myAISContext; int myInteractionStyle; int myZoomingStyle; + bool myPreselectionEnabled; bool mySelectionEnabled; bool myMultiSelectionEnabled; bool myIsRelative; @@ -185,13 +207,16 @@ protected: int myTopLayerId; //QColor myBgColor; - QPoint myStartPnt, myEndPnt; - - bool myShowStaticTrihedron; + QPoint myStartPnt, myEndPnt, myCurPnt; double myTrihedronSize; QVector myBackgrounds; + + OCCViewer_ClippingDlg* myClippingDlg; + + ClipPlanesList myClipPlanes; + Graphic3d_SequenceOfHClipPlane myInternalClipPlanes; }; #ifdef WIN32