X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOM%2FGEOM_Object.hxx;h=7b24daa588ab8456b2a908c43db57190b06121f2;hb=14e1a694c4cf249fe205a39c099482bc5b28a6e5;hp=3f90453d9c975cbc202c8e9f68bc94f0f2bfc993;hpb=732211808796539fcf1de34e06038e7fb015ece9;p=modules%2Fgeom.git diff --git a/src/GEOM/GEOM_Object.hxx b/src/GEOM/GEOM_Object.hxx index 3f90453d9..7b24daa58 100644 --- a/src/GEOM/GEOM_Object.hxx +++ b/src/GEOM/GEOM_Object.hxx @@ -1,237 +1,121 @@ +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE +// +// 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, 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. +// +// 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 +// + #ifndef _GEOM_Object_HeaderFile #define _GEOM_Object_HeaderFile -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_MMgt_TShared_HeaderFile -#include -#endif -#ifndef _MMgt_TShared_HeaderFile -#include -#endif -#ifndef _Standard_GUID_HeaderFile +#include "GEOM_BaseObject.hxx" + +#include #include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TDF_Label_HeaderFile -#include -#endif -#ifndef _TColStd_HSequenceOfTransient_HeaderFile #include -#endif -#ifndef _TCollection_AsciiString_HeaderFile -#include -#endif - -class Handle_TColStd_HSequenceOfTransient; -class Standard_Transient; -class Handle_Standard_Type; -class Handle(MMgt_TShared); -class GEOM_Object; - - -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOM_Object); - -class Handle(GEOM_Object) : public Handle(MMgt_TShared) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - Handle(GEOM_Object)():Handle(MMgt_TShared)() {} - Handle(GEOM_Object)(const Handle(GEOM_Object)& aHandle) : Handle(MMgt_TShared)(aHandle) - { - } - - Handle(GEOM_Object)(const GEOM_Object* anItem) : Handle(MMgt_TShared)((MMgt_TShared *)anItem) - { - } - - Handle(GEOM_Object)& operator=(const Handle(GEOM_Object)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(GEOM_Object)& operator=(const GEOM_Object* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - GEOM_Object* operator->() - { - return (GEOM_Object *)ControlAccess(); - } - - GEOM_Object* operator->() const - { - return (GEOM_Object *)ControlAccess(); - } - - Standard_EXPORT ~Handle(GEOM_Object)() {}; - - Standard_EXPORT static const Handle(GEOM_Object) DownCast(const Handle(Standard_Transient)& AnObject); -}; - +#include +#include +#include -#include -#include -#include "GEOM_Function.hxx" -#include "GEOM_Engine.hxx" +class GEOM_Object; +class TFunction_Driver; +class GEOM_Engine; +DEFINE_STANDARD_HANDLE( GEOM_Object, GEOM_BaseObject ) -class GEOM_Object : public MMgt_TShared +class GEOM_Object : public GEOM_BaseObject { - friend class GEOM_Engine; - + friend class GEOM_Engine; + public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& GEOM_Object_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOM_Object) ; } - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOM_Object) == AType || MMgt_TShared::IsKind(AType)); } + struct Color { + //! Red component of the color + double R; + //! Green component of the color + double G; + //! Blue component of the color + double B; + }; private: - GEOM_Object(TDF_Label& theLabel); + GEOM_Object(TDF_Label& theLabel); public: - GEOM_Object(TDF_Label& theEntry, int theType); - ~GEOM_Object() {;} + Standard_EXPORT GEOM_Object(TDF_Label& theEntry, int theType); + Standard_EXPORT ~GEOM_Object(); //Finds a GEOM_Object on the label theLabel - static Handle(GEOM_Object) GetObject(TDF_Label& theLabel); + Standard_EXPORT static Handle(GEOM_Object) GetObject(const TDF_Label& theLabel); //Finds a GEOM_Object by a reference, stored on the label theLabel - static Handle(GEOM_Object) GetReferencedObject(TDF_Label& theLabel); - - //Returns a GEOM_Object common GUID - static const Standard_GUID& GetObjectID(); - - //Returns a GUID associated with a sub shape object - static const Standard_GUID& GetSubShapeID(); + Standard_EXPORT static Handle(GEOM_Object) GetReferencedObject(const TDF_Label& theLabel); //########################################################### - //Access to properties + //Access to properties //########################################################### - //Returns a TreeNode that presents a root of a function tree for this GEOM_Object - Handle(TDataStd_TreeNode) GetRootNode() { return _root; } - - //Returns a label of this GEOM_Object - TDF_Label GetEntry() { return _label; } - - //Returns a type of this GEOM_Object (GEOM_POINT, GEOM_VECTOR...) - int GetType(); + //Returns a value (as TopoDS_Shape) of this GEOM_Object + Standard_EXPORT TopoDS_Shape GetValue(); - //Sets the type of this GEOM_Object - void SetType(int theType); - - //Returns an ID of the OCAF document where this GEOM_Object is stored - int GetDocID(); + //Sets a color of this GEOM_Object + Standard_EXPORT void SetColor(const Color& theColor); - //Returns a value (as TopoDS_Shape) of this GEOM_Object - TopoDS_Shape GetValue(); + //Returns a color of this GEOM_Object + Standard_EXPORT Color GetColor(); - //Sets a name of this GEOM_Object - void SetName(const char* theName); + //Toggles an auto color mode on this GEOM_Object + Standard_EXPORT void SetAutoColor(bool theAutoColor); - //Returns a name of this GEOM_Object - char* GetName(); + //Returns a flag of auto color mode of this GEOM_Object + Standard_EXPORT bool GetAutoColor(); - //Sets an auxiliary data - void SetAuxData(const char* theData); + //Sets predefined point marker texture + Standard_EXPORT void SetMarkerStd(const Aspect_TypeOfMarker theType, double theSize); + + //Sets custom point marker texture + Standard_EXPORT void SetMarkerTexture(int theTextureId); - //Returns an auxiliary data - TCollection_AsciiString GetAuxData(); + //Gets point marker type + Standard_EXPORT Aspect_TypeOfMarker GetMarkerType(); - //########################################################### - // Sub shape methods - //########################################################### - - //Returns false if the object is a sub shape of another object - bool IsMainShape(); + //Gets point marker scale factor / size + Standard_EXPORT double GetMarkerSize(); - //########################################################### - // CORBA related methods - //########################################################### - - //Sets an IOR of CORBA GEOM_Object_i which refers to this object - void SetIOR(TCollection_AsciiString& theIOR) { _ior = theIOR; } + //Gets custom marker texture ID + Standard_EXPORT int GetMarkerTexture(); - //Returns an IOR of CORBA GEOM_Object_i which refers to this object - TCollection_AsciiString GetIOR() { return _ior; } + //Unsets point marker + Standard_EXPORT void UnsetMarker(); //########################################################### - //Functions methods + // Sub-shape methods //########################################################### - //Adds a function with a driver GUID = theGUID and a type theFunctionType to the function tree of this GEOM_Object - Handle(GEOM_Function) AddFunction(const Standard_GUID& theGUID, int theFunctionType); - - //Returns a number of functions of this GEOM_Object - int GetNbFunctions(); - - //Returns a function with given number theFunctionNumber - Handle(GEOM_Function) GetFunction(int theFunctionNumber); - - //Return the last function of this GEOM_Object - Handle(GEOM_Function) GetLastFunction(); - - //Returns all dependencies of the object - Handle(TColStd_HSequenceOfTransient) GetAllDependency(); + //Returns false if the object is a sub-shape of another object + Standard_EXPORT bool IsMainShape(); - //Returns the dependencies of the last function - Handle(TColStd_HSequenceOfTransient) GetLastDependency(); - - //########################################################### - // Internal methods - //########################################################### - - //Returns a label which could be used to store some additional data - TDF_Label GetFreeLabel(); - - - private: + //Comfort method + Standard_EXPORT static Handle(TColStd_HSequenceOfTransient) + GetLastFunctions( const std::list< Handle(GEOM_Object) >& theObjects ); - Handle(TDataStd_TreeNode) _root; - TDF_Label _label; - TCollection_AsciiString _ior; +public: + DEFINE_STANDARD_RTTIEXT(GEOM_Object,GEOM_BaseObject) }; #endif