mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-19 13:40:49 +03:00
Integration of OCCT 6.5.0 from SVN
This commit is contained in:
359
src/TObj/TObj_Model.hxx
Executable file
359
src/TObj/TObj_Model.hxx
Executable file
@@ -0,0 +1,359 @@
|
||||
// File: TObj_Model.hxx
|
||||
// Created: Tue Nov 23 9:31:17 2004
|
||||
// Author: Pavel TELKOV
|
||||
// Copyright: Open CASCADE 2007
|
||||
// The original implementation Copyright: (C) RINA S.p.A
|
||||
|
||||
#ifndef TObj_Model_HeaderFile
|
||||
#define TObj_Model_HeaderFile
|
||||
|
||||
#include <Handle_TObj_Model.hxx>
|
||||
|
||||
#include <TDF_Label.hxx>
|
||||
#include <TObj_Partition.hxx>
|
||||
#include <NCollection_DefineBaseCollection.hxx>
|
||||
#include <NCollection_DefineDataMap.hxx>
|
||||
#include <Message_Messenger.hxx>
|
||||
|
||||
class Handle(TObj_Application);
|
||||
class Handle(TObj_TNameContainer);
|
||||
class Handle(TObj_Object);
|
||||
class Handle(TObj_Partition);
|
||||
class Handle(TObj_CheckModel);
|
||||
|
||||
class Handle(TCollection_HExtendedString);
|
||||
class Handle(TDocStd_Document);
|
||||
|
||||
/**
|
||||
* Base class for OCAF based models.
|
||||
* Defines common behaviour for all models based on TObject
|
||||
* classes, basic services to access model objects and common
|
||||
* operations with the model.
|
||||
* Provides default implementation for many methods.
|
||||
*/
|
||||
|
||||
class TObj_Model : public MMgt_TShared
|
||||
{
|
||||
protected:
|
||||
|
||||
//! Model may store some data on the data labels of its main partition
|
||||
//! See TObj_Object for
|
||||
enum DataTag
|
||||
{
|
||||
DataTag_FormatVersion = TObj_Partition::DataTag_Last,
|
||||
DataTag_Last
|
||||
};
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Constructors and Persistence
|
||||
*/
|
||||
|
||||
//! Empty constructor
|
||||
Standard_EXPORT TObj_Model ();
|
||||
|
||||
//! Destructor closes the model
|
||||
Standard_EXPORT ~TObj_Model ();
|
||||
|
||||
//! Check whether the document contains the OCAF data.
|
||||
//! This implementation checks theFile on NULL only.
|
||||
Standard_EXPORT virtual Standard_Boolean checkDocumentEmpty (const char* theFile);
|
||||
|
||||
public:
|
||||
/**
|
||||
* Messages mechanism
|
||||
*/
|
||||
|
||||
//! Set messenger to use for messages output
|
||||
Standard_EXPORT void SetMessenger (const Handle(Message_Messenger) &theMsgr) { myMessenger = theMsgr; }
|
||||
|
||||
//! Get messenger used for messages output (by default, the messenger from
|
||||
//! application is used)
|
||||
Standard_EXPORT Handle(Message_Messenger) Messenger () const { return myMessenger; }
|
||||
|
||||
public:
|
||||
/**
|
||||
* Implementation of Load/Save for OCAF based models
|
||||
*/
|
||||
|
||||
//! Load the OCAF model from a file
|
||||
virtual Standard_EXPORT Standard_Boolean Load (const char* theFile);
|
||||
|
||||
//! Save the model to a file
|
||||
virtual Standard_EXPORT Standard_Boolean SaveAs (const char* theFile);
|
||||
|
||||
//! Save the model to the same file
|
||||
Standard_EXPORT Standard_Boolean Save ();
|
||||
|
||||
public:
|
||||
/**
|
||||
* Work with document
|
||||
*/
|
||||
|
||||
//! Close the model
|
||||
virtual Standard_EXPORT Standard_Boolean Close();
|
||||
|
||||
//! Close Free OCAF document
|
||||
Standard_EXPORT void CloseDocument (const Handle(TDocStd_Document)& theDoc);
|
||||
|
||||
//! Returns model which contains a document with the label,
|
||||
//! or NULL handle if label is NULL
|
||||
static Standard_EXPORT Handle(TObj_Model) GetDocumentModel (const TDF_Label& theLabel);
|
||||
|
||||
//! Returns the full file name this model is to be saved to,
|
||||
//! or null if the model was not saved yet
|
||||
virtual Standard_EXPORT Handle(TCollection_HAsciiString) GetFile() const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Access to the objects in the model
|
||||
*/
|
||||
|
||||
//! Returns an Iterator on all objects in the Model
|
||||
virtual Standard_EXPORT Handle(TObj_ObjectIterator) GetObjects () const;
|
||||
|
||||
//! Returns an Iterator on objects in the main partition
|
||||
virtual Standard_EXPORT Handle(TObj_ObjectIterator) GetChildren () const;
|
||||
|
||||
//! Returns an Object by given Name (or Null if not found).
|
||||
virtual Standard_EXPORT Handle(TObj_Object) FindObject
|
||||
(const Handle(TCollection_HExtendedString)& theName,
|
||||
const Handle(TObj_TNameContainer)& theDictionary ) const;
|
||||
|
||||
//! Returns the tool checking model consistency.
|
||||
//! Descendant may redefine it to return its own tool.
|
||||
virtual Standard_EXPORT Handle(TObj_CheckModel) GetChecker() const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Methods for iteration on the model
|
||||
*/
|
||||
|
||||
//! Returns root object of model
|
||||
virtual Standard_EXPORT Handle(TObj_Object) GetRoot() const;
|
||||
|
||||
//! Returns root object of model
|
||||
Standard_EXPORT Handle(TObj_Partition) GetMainPartition() const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* OCAF methods
|
||||
*/
|
||||
|
||||
//! Returns OCAF label on which model data are stored.
|
||||
TDF_Label GetLabel() const { return myLabel; }
|
||||
|
||||
public:
|
||||
/**
|
||||
* Methods for supporting unique naming of the objects in model
|
||||
*/
|
||||
|
||||
//! Returns the name of the model
|
||||
virtual Standard_EXPORT Handle(TCollection_HExtendedString) GetModelName() const;
|
||||
|
||||
//! Sets new unique name for the object
|
||||
static Standard_EXPORT void SetNewName
|
||||
(const Handle(TObj_Object)& theObject);
|
||||
|
||||
//! Returns True is name is registered in the names map
|
||||
//! The input argument may be NULL handle, then model check in own global container
|
||||
Standard_EXPORT Standard_Boolean IsRegisteredName
|
||||
(const Handle(TCollection_HExtendedString)& theName,
|
||||
const Handle(TObj_TNameContainer)& theDictionary ) const;
|
||||
|
||||
//! Register name in the map
|
||||
//! The input argument may be NULL handle, then model check in own global container
|
||||
Standard_EXPORT void RegisterName
|
||||
(const Handle(TCollection_HExtendedString)& theName,
|
||||
const TDF_Label& theLabel,
|
||||
const Handle(TObj_TNameContainer)& theDictionary ) const;
|
||||
|
||||
//! Unregisters name from the map
|
||||
//! The input argument may be NULL handle, then model check in own global container
|
||||
Standard_EXPORT void UnRegisterName
|
||||
(const Handle(TCollection_HExtendedString)& theName,
|
||||
const Handle(TObj_TNameContainer)& theDictionary ) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* API for transaction mechanism
|
||||
*/
|
||||
|
||||
//! Returns True if a Command transaction is open
|
||||
//! Starting, finishing the transaction
|
||||
Standard_EXPORT Standard_Boolean HasOpenCommand() const;
|
||||
|
||||
//! Open a new command transaction.
|
||||
Standard_EXPORT void OpenCommand() const;
|
||||
|
||||
//! Commit the Command transaction. Do nothing If there is no Command
|
||||
//! transaction open.
|
||||
Standard_EXPORT void CommitCommand() const;
|
||||
|
||||
//! Abort the Command transaction. Do nothing If there is no Command
|
||||
//! transaction open.
|
||||
Standard_EXPORT void AbortCommand() const;
|
||||
|
||||
//! Modification status
|
||||
virtual Standard_EXPORT Standard_Boolean IsModified () const;
|
||||
|
||||
//! Sets modification status
|
||||
Standard_EXPORT void SetModified (const Standard_Boolean theModified);
|
||||
|
||||
public:
|
||||
/**
|
||||
* Methods for obtaining application
|
||||
*/
|
||||
|
||||
//! Returns handle to static instance of the relevant application class
|
||||
virtual Standard_EXPORT const Handle(TObj_Application) GetApplication();
|
||||
|
||||
public:
|
||||
/**
|
||||
* Methods for obtaining the version of Format
|
||||
*/
|
||||
|
||||
//! Returns the format for save/restore.
|
||||
//! This implementation returns "BinOcaf". The method should be redefined
|
||||
//! for those models that should use another format.
|
||||
virtual Standard_EXPORT TCollection_ExtendedString GetFormat() const;
|
||||
|
||||
//! Returns the version of format stored in TObj file
|
||||
Standard_EXPORT Standard_Integer GetFormatVersion() const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Methods for handling the version of the Format
|
||||
*/
|
||||
|
||||
//! Sets the format version to save
|
||||
Standard_EXPORT void SetFormatVersion(const Standard_Integer theVersion);
|
||||
|
||||
public:
|
||||
/**
|
||||
* Methods for updating model
|
||||
*/
|
||||
|
||||
//! this method is called before activating this model
|
||||
virtual Standard_EXPORT Standard_Boolean Update ();
|
||||
|
||||
public:
|
||||
/**
|
||||
* Definition of interface GUID
|
||||
*/
|
||||
|
||||
//! Defines interface GUID for TObj_Model
|
||||
virtual Standard_EXPORT Standard_GUID GetGUID () const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Internal methods
|
||||
*/
|
||||
|
||||
//! Returns the map of names of the objects
|
||||
Standard_EXPORT Handle(TObj_TNameContainer) GetDictionary() const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Internal methods
|
||||
*/
|
||||
|
||||
//! Returns (or creates a new) partition on a given label
|
||||
Standard_EXPORT Handle(TObj_Partition) getPartition
|
||||
(const TDF_Label& theLabel,
|
||||
const Standard_Boolean theHidden=Standard_False) const;
|
||||
|
||||
//! Returns Partition specified by its index number on a given label
|
||||
//! If not exists, creates anew with specified name
|
||||
Standard_EXPORT Handle(TObj_Partition) getPartition
|
||||
(const TDF_Label& theLabel,
|
||||
const Standard_Integer theIndex,
|
||||
const TCollection_ExtendedString& theName,
|
||||
const Standard_Boolean theHidden=Standard_False) const;
|
||||
|
||||
//! Returns Partition specified by its index number
|
||||
//! If not exists, creates anew with specified name
|
||||
Standard_EXPORT Handle(TObj_Partition) getPartition
|
||||
(const Standard_Integer theIndex,
|
||||
const TCollection_ExtendedString& theName,
|
||||
const Standard_Boolean theHidden=Standard_False) const;
|
||||
|
||||
public:
|
||||
|
||||
//! Returns OCAF document of Model
|
||||
Standard_EXPORT Handle(TDocStd_Document) GetDocument() const;
|
||||
|
||||
protected:
|
||||
// all that labels is sublabels of main partition
|
||||
|
||||
//! Returns the labels under which the data is stored.
|
||||
//! the data stored from the third sublabel of this one.
|
||||
Standard_EXPORT TDF_Label GetDataLabel() const;
|
||||
|
||||
public:
|
||||
|
||||
//! Sets OCAF label on which model data are stored.
|
||||
//! Used by persistence mechanism.
|
||||
void Standard_EXPORT SetLabel(const TDF_Label& theLabel) { myLabel = theLabel; }
|
||||
|
||||
protected:
|
||||
|
||||
//! Do the necessary initialisations after creation of a new model.
|
||||
//! This function is called by LoadModel after creation of OCAF document
|
||||
//! and setting myModel on its main label.
|
||||
//! Default implementation does nothing.
|
||||
//! Returns True is model sucsesfully initialized
|
||||
virtual Standard_EXPORT Standard_Boolean initNewModel
|
||||
(const Standard_Boolean IsNew);
|
||||
|
||||
//! Updates back references of object
|
||||
//! Recursive method.
|
||||
virtual Standard_EXPORT void updateBackReferences
|
||||
(const Handle(TObj_Object)& theObject);
|
||||
|
||||
//! Returns boolean value is to check model in Init new model
|
||||
//! The check could be useful if version of model changed
|
||||
//! Default implementation returns FALSE (check turned OFF)
|
||||
virtual Standard_EXPORT Standard_Boolean isToCheck() const
|
||||
{ return Standard_True; }
|
||||
|
||||
public:
|
||||
/**
|
||||
* Methods for clone model
|
||||
*/
|
||||
|
||||
//! Pastes me to the new model
|
||||
//! references will not be copied if theRelocTable is not 0
|
||||
//! if theRelocTable is not NULL theRelocTable is filled by objects
|
||||
virtual Standard_EXPORT Standard_Boolean Paste
|
||||
(Handle(TObj_Model) theModel,
|
||||
Handle(TDF_RelocationTable) theRelocTable = 0);
|
||||
|
||||
//! This function have to create a new model with type like me
|
||||
virtual Standard_EXPORT Handle(TObj_Model) NewEmpty() = 0;
|
||||
|
||||
//! Copy references from me to the other
|
||||
Standard_EXPORT void CopyReferences
|
||||
(const Handle(TObj_Model)& theTarget,
|
||||
const Handle(TDF_RelocationTable)& theRelocTable);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Fields
|
||||
*/
|
||||
|
||||
TDF_Label myLabel; //!< Root label of the model in OCAF document
|
||||
Handle(Message_Messenger) myMessenger; //!< Messenger object
|
||||
|
||||
public:
|
||||
//! CASCADE RTTI
|
||||
DEFINE_STANDARD_RTTI(TObj_Model)
|
||||
};
|
||||
|
||||
//! The Model Handle is defined in a separate header file
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma once
|
||||
#endif
|
Reference in New Issue
Block a user