X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMGUI%2FGEOM_Displayer.h;h=4f0c137f4994aea24594bdd03b710e0f82e9bac7;hb=79367306ff599b8f8f2cc76996e67e34e49ec97f;hp=18be72e3114b7e6b31d3724fe454822f30bfd420;hpb=409b095d2575bc03423b699dd4416d1d12e53998;p=modules%2Fgeom.git diff --git a/src/GEOMGUI/GEOM_Displayer.h b/src/GEOMGUI/GEOM_Displayer.h index 18be72e31..4f0c137f4 100644 --- a/src/GEOMGUI/GEOM_Displayer.h +++ b/src/GEOMGUI/GEOM_Displayer.h @@ -1,39 +1,51 @@ -// GEOM GEOMGUI : GUI for Geometry component +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003 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 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 -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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 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. // -// File : GEOM_Displayer.h -// Author : Vadim SANDLER -// Module : GEOM -// $Header$ +// 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 +// + +// GEOM GEOMGUI : GUI for Geometry component +// File : GEOM_Displayer.h +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +// +#ifndef GEOM_DISPLAYER_H +#define GEOM_DISPLAYER_H + +#include "GEOM_GEOMGUI.hxx" -#if !defined (__GEOM_DISPLAYER_H) -#define __GEOM_DISPLAYER_H +#include + +class GEOM_Actor; +class SALOME_ListIO; +class SALOME_View; +class SALOME_Prs; +class SALOME_OCCPrs; +class SALOME_VTKPrs; +class SALOME_OCCViewType; -#include "SALOME_Prs.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIO.hxx" #include #include +#include +#include +#include + +#include #include @@ -48,73 +60,61 @@ typedef std::list ObjectList; class TColStd_MapOfInteger; -class SalomeApp_SelectionMgr; +class LightApp_SelectionMgr; class SalomeApp_Study; +class SalomeApp_Application; class SUIT_SelectionFilter; +class Handle_GEOM_AISShape; //class SALOME_Selection; -//#ifdef WNT -//#include -//#else -//#define SALOME_WNT_EXPORT -//#endif -#if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS -#define GEOMGUI_WNT_EXPORT __declspec( dllexport ) -#else -#define GEOMGUI_WNT_EXPORT -#endif - -class GEOMGUI_WNT_EXPORT GEOM_Displayer : public SALOME_Displayer + +class GEOMGUI_EXPORT GEOM_Displayer : public LightApp_Displayer { - + public: /* Constructor */ - GEOM_Displayer( SalomeApp_Study* study ); + GEOM_Displayer( SalomeApp_Study* app ); /* Destructor */ virtual ~GEOM_Displayer(); - /* Display/Erase object methods */ + virtual bool canBeDisplayed( const QString& /*entry*/, const QString& /*viewer_type*/ ) const; + /* 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_Object_ptr theObj, + const bool updateViewer = true ); + void Redisplay ( const Handle(SALOME_InteractiveObject)& theIO, const bool updateViewer = true ); 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, const bool forced = false, - const bool updateViewer = true ); + const bool updateViewer = true ); + + void EraseWithChildren(const Handle(SALOME_InteractiveObject)& theIO, + const bool eraseOnlyChildren = false); /* Display/Erase list of objects methods */ - + void Display ( const SALOME_ListIO& theIOList, const bool updateViewer = true ); - + void Erase ( const SALOME_ListIO& theIOList, const bool forced = false, const bool updateViewer = true ); - + void Redisplay ( const SALOME_ListIO& theIOList, const bool updateViewer = true ); - /* Erase all objects displayed in the given or active view */ - void EraseAll ( const bool forced = false, - const bool updateViewer = true, - SALOME_View* theViewFrame = 0 ); - - /* Update current viewer */ - void UpdateViewer(); - /* build presentation accordint to the current viewer type*/ SALOME_Prs* BuildPrs ( GEOM::GEOM_Object_ptr ); SALOME_Prs* BuildPrs ( const TopoDS_Shape& ); @@ -125,6 +125,11 @@ public: void UnsetColor(); int GetColor () const; bool HasColor () 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 ); @@ -132,16 +137,26 @@ public: 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 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 ) { myName = theName; } - void UnsetName() { myName = ""; } + void SetName( const char* theName ); + void UnsetName(); /* 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* ); /* This methos is used for activisation/deactivisation of objects to be displayed*/ void SetToActivate( const bool ); @@ -151,34 +166,60 @@ public: void LocalSelection( const Handle(SALOME_InteractiveObject)&, const int ); 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 ); + void GlobalSelection( const TColStd_MapOfInteger&, const bool = false, const QList* = 0 ); + + 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 ); - static SALOME_View* GetActiveView(); - SalomeApp_Study* getStudy() const {return myStudy;} + + /* Builds presentation of not published object */ + virtual SALOME_Prs* buildSubshapePresentation(const TopoDS_Shape& aShape, + const QString&, + SALOME_View* = 0); protected: /* internal methods */ - /* Builds presentation accordint to the current viewer type */ - SALOME_Prs* buildPresentation( const Handle(SALOME_InteractiveObject)& theIO, - SALOME_View* theViewFrame = 0 ); - + /* Builds presentation according to the current viewer type */ + virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 ); + /* Sets interactive object */ - void setIO( const Handle(SALOME_InteractiveObject)& theIO ) { myIO = theIO; } - + void setIO( const Handle(SALOME_InteractiveObject)& theIO ); + /* Sets shape */ - void setShape( const TopoDS_Shape& theShape ) { myShape = theShape; } - + void setShape( const TopoDS_Shape& theShape ); + /* Resets internal data */ void internalReset(); - void clearTemporary( SalomeApp_SelectionMgr* theSelMgr ); + void clearTemporary( LightApp_SelectionMgr* theSelMgr ); 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 ); + + PropMap getObjectProperties( SalomeApp_Study*, const QString&, SALOME_View* = 0 ); + PropMap getDefaultPropertyMap(); protected: Handle(SALOME_InteractiveObject) myIO; TopoDS_Shape myShape; - string myName; + std::string myName; + std::string myTexture; int myType; SALOME_View* myViewFrame; @@ -186,12 +227,17 @@ protected: Quantity_Color myShadingColor; int myColor; double myWidth; + int myIsosWidth; bool myToActivate; int myDisplayMode; + bool myHasDisplayMode; + Aspect_TypeOfMarker myTypeOfMarker; + double myScaleOfMarker; private: - SalomeApp_Study* myStudy; + SalomeApp_Application* myApp; + friend class GEOM_Swig; }; -#endif // __GEOM_DISPLAYER_H +#endif // GEOM_DISPLAYER_H