X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMGUI%2FGEOM_Displayer.h;h=d9184ec540a9abd32417cd6b3923a9cb27b6cf77;hb=2736f682fe0d63fbaf9dff49c46b4fa6c23d72ce;hp=90b551fc3a395a0045d13b26672862d522d750aa;hpb=392885c1a8d50369708bbe5e6b44033ed8b8ba51;p=modules%2Fgeom.git diff --git a/src/GEOMGUI/GEOM_Displayer.h b/src/GEOMGUI/GEOM_Displayer.h old mode 100644 new mode 100755 index 90b551fc3..d9184ec54 --- a/src/GEOMGUI/GEOM_Displayer.h +++ b/src/GEOMGUI/GEOM_Displayer.h @@ -1,24 +1,25 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// 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. +// 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, 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 -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // GEOM GEOMGUI : GUI for Geometry component // File : GEOM_Displayer.h // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) @@ -27,9 +28,11 @@ #define GEOM_DISPLAYER_H #include "GEOM_GEOMGUI.hxx" +#include #include +class GEOM_Actor; class SALOME_ListIO; class SALOME_View; class SALOME_Prs; @@ -40,8 +43,10 @@ class SALOME_OCCViewType; #include #include #include +#include #include - +#include +#include #include #include @@ -56,12 +61,11 @@ class SALOME_OCCViewType; typedef std::list ObjectList; -class TColStd_MapOfInteger; class LightApp_SelectionMgr; class SalomeApp_Study; class SalomeApp_Application; class SUIT_SelectionFilter; -//class SALOME_Selection; +class gp_Ax3; class GEOMGUI_EXPORT GEOM_Displayer : public LightApp_Displayer { @@ -77,24 +81,33 @@ public: /* Display/Erase object methods */ void Display ( const Handle(SALOME_InteractiveObject)& theIO, const bool updateViewer = true, - SALOME_View* theViewFrame = 0 ); + SALOME_View* theViewFrame = 0 ); // This overloaded Display() method can be useful for operations // not using dialog boxes. - void Display ( GEOM::GEOM_Object_ptr theObj, - const bool updateViewer = true ); + void Display ( GEOM::GEOM_BaseObject_ptr theObj, + const bool updateViewer = true ); void Redisplay ( const Handle(SALOME_InteractiveObject)& theIO, - const bool updateViewer = true ); + const bool updateViewer = true, + const bool checkActiveViewer = true ); + + void Redisplay ( const Handle(SALOME_InteractiveObject)& theIO, + const bool theUpdateViewer, + SALOME_View* theViewFrame ); void Erase ( const Handle(SALOME_InteractiveObject)& theIO, const bool forced = false, const bool updateViewer = true, - SALOME_View* theViewFrame = 0 ); + SALOME_View* theViewFrame = 0 ); - void Erase ( GEOM::GEOM_Object_ptr theObj, + void Erase ( GEOM::GEOM_BaseObject_ptr theObj, const bool forced = false, - const bool updateViewer = true ); + const bool updateViewer = true, + SALOME_View* theViewFrame = 0); + + void EraseWithChildren(const Handle(SALOME_InteractiveObject)& theIO, + const bool eraseOnlyChildren = false); /* Display/Erase list of objects methods */ @@ -106,7 +119,15 @@ public: const bool updateViewer = true ); void Redisplay ( const SALOME_ListIO& theIOList, - const bool updateViewer = true ); + const bool updateViewer = true, + const bool checkActiveViewer = true ); + + void Redisplay ( const SALOME_ListIO& theIOList, + const bool theUpdateViewer, + SALOME_View* theViewFrame ); + + /* Update visibility state */ + void UpdateVisibility( SALOME_View*, const SALOME_Prs*, bool ); /* build presentation accordint to the current viewer type*/ SALOME_Prs* BuildPrs ( GEOM::GEOM_Object_ptr ); @@ -119,17 +140,45 @@ public: int GetColor () const; bool HasColor () const; + double SetTransparency ( const double ); + double UnsetTransparency(); + double GetTransparency () const; + bool HasTransparency () const; + + /* Set texture for shape displaying. */ + void SetTexture ( const std::string& ); + bool HasTexture () const; + std::string GetTexture () const; + /* Set width for shape displaying. If it is equal -1 then default width is used. */ void SetWidth ( const double ); void UnsetWidth(); double GetWidth () const; bool HasWidth () const; + + /* Set width for iso-lines displaying. If it is equal -1 then default width is used. */ + void SetIsosWidth ( const int ); + int GetIsosWidth () const; + bool HasIsosWidth () const; + + /* Set nb iso-libes for displaying. Use -1 to set default values. */ + int SetNbIsos( const int ); + int UnsetNbIsos(); + int GetNbIsos() const; + bool HasNbIsos() const; + /* Set color for iso-lines displaying. If it is equal -1 then default color is used. + Available values are from Quantity_NameOfColor enumeration */ + int SetIsosColor ( const int ); + int UnsetIsosColor(); + int GetIsosColor () const; + bool HasIsosColor () const; + /* Set display mode shape displaying. If it is equal -1 then display mode is used. */ int SetDisplayMode( const int ); int GetDisplayMode() const; int UnsetDisplayMode(); - + bool HasDisplayMode() const; /* Sets name - for temporary objects only */ void SetName( const char* theName ); @@ -138,15 +187,19 @@ public: /* Reimplemented from SALOME_Displayer */ virtual void Update( SALOME_OCCPrs* ); virtual void Update( SALOME_VTKPrs* ); - virtual void BeforeDisplay( SALOME_View*, const SALOME_OCCViewType& ); - virtual void AfterDisplay ( SALOME_View*, const SALOME_OCCViewType& ); + virtual void BeforeDisplay( SALOME_View*, const SALOME_OCCPrs* ); + virtual void AfterDisplay ( SALOME_View*, const SALOME_OCCPrs* ); + virtual void BeforeErase ( SALOME_View*, const SALOME_OCCPrs* ); + virtual void AfterErase ( SALOME_View*, const SALOME_OCCPrs* ); - /* This methos is used for activisation/deactivisation of objects to be displayed*/ + /* This methods is used for activisation/deactivisation of objects to be displayed*/ void SetToActivate( const bool ); bool ToActivate() const; /* Activate/Deactivate selection*/ + void LocalSelection( const Handle(SALOME_InteractiveObject)&, const std::list ); void LocalSelection( const Handle(SALOME_InteractiveObject)&, const int ); + void LocalSelection( const SALOME_ListIO& theIOList, const std::list ); void LocalSelection( const SALOME_ListIO& theIOList, const int ); void GlobalSelection( const int = GEOM_ALLOBJECTS, const bool = false ); void GlobalSelection( const TColStd_MapOfInteger&, const bool = false, const QList* = 0 ); @@ -154,10 +207,30 @@ public: SalomeApp_Study* getStudy() const; static SALOMEDS::Color getUniqueColor( const QList& ); + static SALOMEDS::Color getPredefinedUniqueColor(); + + /*Get color of the geom object*/ + static SALOMEDS::Color getColor(GEOM::GEOM_Object_var aGeomObject, bool& hasColor); + + /* Get minimum or maximum enclosed shape type */ + static int getMinMaxShapeType( const TopoDS_Shape& shape, bool ismin ); + + /* Check if the object is a vertex or a compound of vertices */ + static bool isCompoundOfVertices( const TopoDS_Shape& theShape ); + + + /* Builds presentation of not published object */ + virtual SALOME_Prs* buildSubshapePresentation(const TopoDS_Shape& aShape, + const QString&, + SALOME_View* = 0); + + /* Update visibility and parameters of the currently selected field step's color scale */ + void UpdateColorScale(); + bool SetUpdateColorScale(bool); protected: /* internal methods */ - /* Builds presentation accordint to the current viewer type */ + /* Builds presentation according to the current viewer type */ virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 ); /* Sets interactive object */ @@ -166,6 +239,14 @@ protected: /* Sets shape */ void setShape( const TopoDS_Shape& theShape ); + /* Sets field step information */ + void setFieldStepInfo( const GEOM::field_data_type theFieldDataType, + const int theFieldDimension, + const QList& theFieldStepData, + const TCollection_AsciiString& theFieldStepName, + const double theFieldStepRangeMin, + const double theFieldStepRangeMax ); + /* Resets internal data */ void internalReset(); @@ -174,24 +255,57 @@ protected: SUIT_SelectionFilter* getFilter( const int theMode ); SUIT_SelectionFilter* getComplexFilter( const QList* ); + Quantity_Color qColorFromResources( const QString&, const QColor& ); + QColor colorFromResources( const QString&, const QColor& ); + void updateShapeProperties( const Handle(GEOM_AISShape)&, bool ); + void updateActorProperties( GEOM_Actor*, bool ); + void updateDimensions( const Handle(SALOME_InteractiveObject)&, SALOME_OCCPrs*, const gp_Ax3& ); + void updateShapeAnnotations( const Handle(SALOME_InteractiveObject)&, SALOME_OCCPrs*, const gp_Ax3& ); + + PropMap getObjectProperties( SalomeApp_Study*, const QString&, SALOME_View* = 0 ); + PropMap getDefaultPropertyMap(); + + /* Methods for reading the field step information */ + void readFieldStepInfo( GEOM::GEOM_FieldStep_var theGeomFieldStep ); + QList groupFieldData( const QList& theFieldStepData, + const int theFieldNbComponents, + const bool theIsString, + double& theFieldStepRangeMin, + double& theFieldStepRangeMax ); + protected: Handle(SALOME_InteractiveObject) myIO; TopoDS_Shape myShape; + GEOM::field_data_type myFieldDataType; + int myFieldDimension; + QList myFieldStepData; + TCollection_AsciiString myFieldStepName; + double myFieldStepRangeMin; + double myFieldStepRangeMax; std::string myName; + std::string myTexture; int myType; SALOME_View* myViewFrame; + bool myUpdateColorScale; // IPAL54049 // Attributes Quantity_Color myShadingColor; int myColor; double myWidth; + int myIsosWidth; + int myNbIsos; + int myIsosColor; bool myToActivate; int myDisplayMode; + bool myHasDisplayMode; Aspect_TypeOfMarker myTypeOfMarker; double myScaleOfMarker; + double myTransparency; + bool myIsRedisplayed; private: SalomeApp_Application* myApp; + friend class GEOM_Swig; }; #endif // GEOM_DISPLAYER_H