Slicer  5.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
vtkMRMLScene.h
Go to the documentation of this file.
1 /*=auto=========================================================================
2 
3 Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4 
5 See COPYRIGHT.txt
6 or http://www.slicer.org/copyright/copyright.txt for details.
7 
8 Program: 3D Slicer
9 Module: $RCSfile: vtkMRMLScene.h,v $
10 Date: $Date: 2006/03/17 15:10:09 $
11 Version: $Revision: 1.18 $
12 
13 =========================================================================auto=*/
14 
15 #ifndef __vtkMRMLScene_h
16 #define __vtkMRMLScene_h
17 
18 // MRML includes
19 #include "vtkMRML.h"
20 
21 // VTK includes
22 #include <vtkObject.h>
23 #include <vtkSmartPointer.h>
24 #include <vtkWeakPointer.h>
25 
26 // STD includes
27 #include <list>
28 #include <map>
29 #include <random>
30 #include <set>
31 #include <string>
32 #include <vector>
33 
34 class vtkCacheManager;
35 class vtkDataIOManager;
36 class vtkTagTable;
37 
38 class vtkCallbackCommand;
39 class vtkCollection;
40 class vtkGeneralTransform;
41 class vtkImageData;
42 class vtkURIHandler;
44 class vtkMRMLNode;
48 class vtkMRMLStorageNode;
49 
54 //
57 class VTK_MRML_EXPORT vtkMRMLScene : public vtkObject
58 {
63  friend class vtkMRMLSceneViewNode;
64 
65 public:
66  static vtkMRMLScene *New();
67  vtkTypeMacro(vtkMRMLScene, vtkObject);
68  void PrintSelf(ostream& os, vtkIndent indent) override;
69 
71  void SetURL(const char *url);
72 
74  const char *GetURL();
75 
77  void SetRootDirectory(const char *dir);
78 
80  const char *GetRootDirectory();
81 
86  int Connect(vtkMRMLMessageCollection* userMessages = nullptr);
87 
96  int Import(vtkMRMLMessageCollection* userMessages=nullptr);
97 
102  int Commit(const char* url=nullptr, vtkMRMLMessageCollection* userMessages=nullptr);
103 
109  void Clear(int removeSingletons=0);
110 
112  void ResetNodes();
113 
131  vtkMRMLNode* CreateNodeByClass(const char* className);
132 
153  void RegisterNodeClass(vtkMRMLNode* node, const char* tagName);
154 
159  void RegisterNodeClass(vtkMRMLNode* node);
160 
168  void RegisterAbstractNodeClass(std::string className, std::string typeDisplayName);
169 
171  const char* GetClassNameByTag(const char *tagName);
172 
174  const char* GetTagByClassName(const char *className);
175 
177  std::string GetTypeDisplayNameByClassName(std::string className);
178 
182  void AddDefaultNode(vtkMRMLNode* node);
183  vtkMRMLNode* GetDefaultNodeByClass(const char* className);
184 
186  void RemoveAllDefaultNodes();
187 
189  vtkCollection* GetNodes();
190 
203  vtkMRMLNode* AddNode(vtkMRMLNode *nodeToAdd);
204 
220  vtkMRMLNode* AddNewNodeByClass(std::string className, std::string nodeBaseName = "");
221 
229  vtkMRMLNode* AddNewNodeByClassWithID(std::string className, std::string nodeBaseName, std::string nodeID);
230 
232  vtkMRMLNode* CopyNode(vtkMRMLNode *n);
233 
237  void NodeAdded(vtkMRMLNode *n);
238  void NodeAdded() {this->NodeAdded(nullptr);}
239 
241  void RemoveNode(vtkMRMLNode *n);
242 
246  int IsNodePresent(vtkMRMLNode *n);
247 
255  void InitTraversal();
256 
264  vtkMRMLNode *GetNextNode();
265 
273  vtkMRMLNode *GetNextNodeByClass(const char* className);
274 
276  vtkCollection *GetNodesByName(const char* name);
277  vtkMRMLNode *GetFirstNodeByName(const char* name);
278 
290  vtkMRMLNode *GetFirstNode(const char* byName = nullptr, const char* byClass = nullptr,
291  const int* byHideFromEditors = nullptr,
292  bool exactNameMatch = true);
293 
295  vtkMRMLNode *GetNodeByID(const char* name);
296  vtkMRMLNode *GetNodeByID(std::string name);
297 
300  vtkCollection *GetNodesByClassByName(const char* className, const char* name);
301 
303  int GetNumberOfNodes();
304 
306  vtkMRMLNode* GetNthNode(int n);
307 
309  vtkMRMLNode* GetNthNodeByClass(int n, const char* className );
311  vtkMRMLNode* GetFirstNodeByClass(const char* className);
312 
314  int GetNumberOfNodesByClass(const char* className);
315 
317  int GetNodesByClass(const char *className, std::vector<vtkMRMLNode *> &nodes);
318 
320  vtkCollection* GetNodesByClass(const char *className);
321 
326  vtkMRMLNode* GetSingletonNode(const char* singletonTag, const char* className);
327 
334  vtkMRMLNode* GetSingletonNode(vtkMRMLNode* n);
335 
336  std::list<std::string> GetNodeClassesList();
337 
340  int GetNumberOfRegisteredNodeClasses();
343  vtkMRMLNode * GetNthRegisteredNodeClass(int n);
344 
348  bool IsNodeClassRegistered(const std::string& className);
349 
351  int GetNumberOfRegisteredAbstractNodeClasses();
352 
355  std::string GetNthRegisteredAbstractNodeClassName(int n);
356 
359  std::string GetNthRegisteredAbstractNodeTypeDisplayName(int n);
360 
364  std::string GenerateUniqueName(const std::string& baseName);
365 
370  const char* GetUniqueNameByString(const char* baseName);
371 
373  vtkMRMLNode* InsertAfterNode(vtkMRMLNode *item, vtkMRMLNode *newItem);
375  vtkMRMLNode* InsertBeforeNode(vtkMRMLNode *item, vtkMRMLNode *newItem);
376 
378  void SetUndoOn() {UndoFlag=true;}
379  void SetUndoOff() {UndoFlag=false;}
380  bool GetUndoFlag() {return UndoFlag;}
381  void SetUndoFlag(bool flag) {UndoFlag = flag;}
382 
384  void Undo();
385 
387  void Redo();
388 
390  void ClearUndoStack();
391 
393  void ClearRedoStack();
394 
396  int GetNumberOfUndoLevels() {return static_cast<int>(this->UndoStack.size());}
397 
399  int GetNumberOfRedoLevels() {return static_cast<int>(this->RedoStack.size());}
400 
402  void SaveStateForUndo();
403 
409  void SaveStateForUndo(vtkMRMLNode *node);
410 
416  void SaveStateForUndo(vtkCollection *nodes);
417  void SaveStateForUndo(std::vector<vtkMRMLNode *> nodes);
418 
425  void AddReferencedNodeID(const char *id, vtkMRMLNode *refrencingNode);
426  bool IsNodeReferencingNodeID(vtkMRMLNode* referencingNode, const char* id);
427 
434  vtkMRMLNode* GetNthReferencingNode(int n);
437  const char* GetNthReferencedID(int n);
438 
439  void RemoveReferencedNodeID(const char *id, vtkMRMLNode *refrencingNode);
440 
441  void RemoveNodeReferences(vtkMRMLNode *node);
442 
443  void RemoveReferencesToNode(vtkMRMLNode *node);
444 
452  void UpdateNodeReferences(vtkCollection* checkNodes=nullptr);
453 
454  void CopyNodeReferences(vtkMRMLScene *scene);
455 
456  void CopyNodeChangedIDs(vtkMRMLScene *scene);
457 
459  void UpdateNodeChangedIDs();
460 
461  void RemoveUnusedNodeReferences();
462 
463  bool IsReservedID(const std::string& id);
464 
465  void AddReservedID(const char *id);
466 
467  void RemoveReservedIDs();
468 
471  const char* GetChangedID(const char* id);
472 
487  vtkCollection* GetReferencedNodes(vtkMRMLNode *node, bool recursive=true);
488 
490  void GetReferencingNodes(vtkMRMLNode* referencedNode, std::vector<vtkMRMLNode *> &referencingNodes);
491 
498  void GetReferencedSubScene(vtkMRMLNode *node, vtkMRMLScene* newScene);
499 
500  int IsFilePathRelative(const char * filepath);
501 
508  vtkSetMacro(LoadFromXMLString,int);
509  vtkGetMacro(LoadFromXMLString,int);
510 
517  vtkSetMacro(SaveToXMLString,int);
518  vtkGetMacro(SaveToXMLString,int);
519 
520  vtkSetMacro(ReadDataOnLoad,int);
521  vtkGetMacro(ReadDataOnLoad,int);
522 
527  void SetSceneXMLString(const std::string &xmlString);
528 
533  const std::string& GetSceneXMLString();
534 
535  vtkMRMLSubjectHierarchyNode* GetSubjectHierarchyNode();
536 
537  vtkGetObjectMacro(CacheManager, vtkCacheManager);
538  virtual void SetCacheManager(vtkCacheManager*);
539  vtkGetObjectMacro(DataIOManager, vtkDataIOManager);
540  virtual void SetDataIOManager(vtkDataIOManager*);
541  vtkGetObjectMacro(URIHandlerCollection, vtkCollection);
542  virtual void SetURIHandlerCollection(vtkCollection*);
543  vtkGetObjectMacro(UserTagTable, vtkTagTable);
544  virtual void SetUserTagTable(vtkTagTable*);
545 
550  vtkURIHandler *FindURIHandler(const char *URI);
552  vtkURIHandler *FindURIHandlerByName (const char *name);
554  void AddURIHandler(vtkURIHandler *handler);
555 
592  {
593  BatchProcessState = 0x0001,
594  CloseState = 0x0002 | BatchProcessState,
595  ImportState = 0x0004 | BatchProcessState,
596  RestoreState = 0x0008 | BatchProcessState,
597  SaveState = 0x0010,
598  UndoState = 0x0020,
599  RedoState = 0x0040,
600  };
601 
609  int GetStates()const;
610 
612  inline bool IsBatchProcessing()const;
614  inline bool IsClosing()const;
616  inline bool IsImporting()const;
618  inline bool IsRestoring()const;
620  inline bool IsUndoing()const;
622  inline bool IsRedoing()const;
623 
658  void StartState(unsigned long state, int anticipatedMaxProgress = 0);
659 
668  void EndState(unsigned long state);
669 
671  void ProgressState(unsigned long state, int progress = 0);
672 
674  {
675  NodeAboutToBeAddedEvent = 0x2000,
680 
681  NewSceneEvent = 66030,
682  MetadataAddedEvent = 66032, // ### Slicer 4.5: Simplify - Do not explicitly set for backward compat. See issue #3472
685 
689  StateEvent = 0x2000,
690  StartEvent = 0x0100,
691  EndEvent = 0x0200,
692  ProgressEvent = 0x0400,
693 
694  StartBatchProcessEvent = StateEvent | StartEvent | BatchProcessState,
695  EndBatchProcessEvent = StateEvent | EndEvent | BatchProcessState,
696  ProgressBatchProcessEvent = StateEvent | ProgressEvent | BatchProcessState,
697 
698  StartCloseEvent = StateEvent | StartEvent | CloseState,
699  EndCloseEvent = StateEvent | EndEvent | CloseState,
700  ProgressCloseEvent = StateEvent | ProgressEvent | CloseState,
701 
702  StartImportEvent = StateEvent | StartEvent | ImportState,
703  EndImportEvent = StateEvent | EndEvent | ImportState,
704  ProgressImportEvent = StateEvent | EndEvent | ImportState,
705 
706  StartRestoreEvent = StateEvent | StartEvent | RestoreState,
707  EndRestoreEvent = StateEvent | EndEvent | RestoreState,
708  ProgressRestoreEvent = StateEvent | ProgressEvent | RestoreState,
709 
710  StartSaveEvent = StateEvent | StartEvent | SaveState,
711  EndSaveEvent = StateEvent | EndEvent | SaveState,
712  ProgressSaveEvent = StateEvent | ProgressEvent | SaveState,
713 
714  StartUndoEvent = StateEvent | StartEvent | UndoState,
715  EndUndoEvent = StateEvent | EndEvent | UndoState,
716  ProgressUndoEvent = StateEvent | ProgressEvent | UndoState,
717 
718  StartRedoEvent = StateEvent | StartEvent | RedoState,
719  EndRedoEvent = StateEvent | EndEvent | RedoState,
720  ProgressRedoEvent = StateEvent | ProgressEvent | RedoState,
721 
722  };
723 
725  vtkGetStringMacro(LastLoadedVersion);
726  vtkSetStringMacro(LastLoadedVersion);
727 
729  vtkGetStringMacro(LastLoadedExtensions);
730  vtkSetStringMacro(LastLoadedExtensions);
731 
733  vtkGetStringMacro(Version);
734  vtkSetStringMacro(Version);
735 
738  vtkGetStringMacro(Extensions);
739  vtkSetStringMacro(Extensions);
740 
743  static bool ParseVersion(const char* versionString, std::string& application, int& major, int& minor, int& patch, int& revision);
744 
746  void CopyRegisteredNodesToScene(vtkMRMLScene *scene);
747 
749  void CopySingletonNodesToScene(vtkMRMLScene *scene);
750 
752  void CopyDefaultNodesToScene(vtkMRMLScene *scene);
753 
757  bool GetModifiedSinceRead(vtkCollection* modifiedNodes=nullptr);
758 
760  vtkGetMacro(StoredTime, vtkMTimeType);
761 
768  bool GetStorableNodesModifiedSinceRead(vtkCollection* modifiedStorableNodes = nullptr);
769 
775  void SetStorableNodesModifiedSinceRead();
776 
779  static void SetStorableNodesModifiedSinceRead(vtkCollection* storableNodes);
780 
783  void SetMaximumNumberOfSavedUndoStates(int stackSize);
784  vtkGetMacro(MaximumNumberOfSavedUndoStates, int);
785 
791  bool WriteToMRB(const char* filename, vtkImageData* thumbnail=nullptr, vtkMRMLMessageCollection* userMessages=nullptr);
792 
796  bool ReadFromMRB(const char* fullName, bool clear=false, vtkMRMLMessageCollection* userMessages = nullptr);
797 
803  static std::string UnpackSlicerDataBundle(const char* sdbFilePath, const char* temporaryDirectory, vtkMRMLMessageCollection* userMessages=nullptr);
804 
810  bool SaveSceneToSlicerDataBundleDirectory(const char* sdbDir, vtkImageData* thumbnail=nullptr, vtkMRMLMessageCollection* userMessages=nullptr);
811 
813  void SaveSceneScreenshot(vtkImageData* thumbnail);
814 
824  static std::string PercentEncode(std::string s);
825 
831  static std::string CreateUniqueFileName(const std::string& filename, const std::string& knownExtension = "");
832 
833 protected:
834 
835  typedef std::map< std::string, std::set<std::string> > NodeReferencesType;
836 
837  vtkMRMLScene();
838  ~vtkMRMLScene() override;
839 
840  void PushIntoUndoStack();
841  void PushIntoRedoStack();
842 
843  void CopyNodeInUndoStack(vtkMRMLNode *node);
844  void CopyNodeInRedoStack(vtkMRMLNode *node);
845 
849  vtkMRMLNode* AddNodeNoNotify(vtkMRMLNode *n);
850 
854  void AddReferencedNodes(vtkMRMLNode *node, vtkCollection *refNodes, bool recursive=true);
855 
857  void RemoveInvalidNodeReferences(vtkCollection* checkNodes, const std::set<std::string> &validNodeIDs);
858 
860  static void SceneCallback(vtkObject *caller, unsigned long eid, void *clientData, void *callData);
861 
862  std::string GenerateUniqueID(vtkMRMLNode* node);
863  std::string GenerateUniqueID(const std::string& baseID);
864  int GetUniqueIDIndex(const std::string& baseID);
865  std::string BuildID(const std::string& baseID, int idIndex)const;
866 
868  std::string GenerateUniqueName(vtkMRMLNode* node);
869 
875  int GetUniqueNameIndex(const std::string& baseName);
876 
878  std::string BuildName(const std::string& baseName, int nameIndex)const;
879 
882  void UpdateNodeIDs();
883 
885  void AddNodeID(vtkMRMLNode *node);
886 
888  void RemoveNodeID(char *nodeID);
889 
891  void ClearNodeIDs();
892 
894  NodeReferencesType::iterator FindNodeReference(const char* referencedId, vtkMRMLNode* referencingNode);
895 
897  void TrimUndoStack();
898 
900  void ReserveNodeReferenceIDs(vtkMRMLNode* node);
901 
903  void GetNodeReferenceIDsFromUndoStack(std::set<std::string>& referenceIDs) const;
904 
906  bool IsNodeIDReservedByUndo(const std::string id) const;
907 
908  virtual void SetSubjectHierarchyNode(vtkMRMLSubjectHierarchyNode*);
909 
914  bool SaveStorableNodeToSlicerDataBundleDirectory(vtkMRMLStorableNode* storableNode, std::string& dataDir,
915  std::map<vtkMRMLStorageNode*, std::vector<std::string> > &originalStorageNodeFileNames, vtkMRMLMessageCollection* userMessages);
916 
917  vtkCollection* Nodes;
918 
920  vtkWeakPointer<vtkMRMLSubjectHierarchyNode> SubjectHierarchyNode;
921 
925  vtkCollection * URIHandlerCollection;
927 
928  std::vector<unsigned long> States;
929 
931  bool UndoFlag;
932 
933  std::list< vtkCollection* > UndoStack;
934  std::list< vtkCollection* > RedoStack;
935 
936  std::string URL;
937  std::string RootDirectory;
938 
939  std::map<std::string, int> UniqueIDs;
940  std::map<std::string, int> UniqueNames;
941  std::set<std::string> ReservedIDs;
942 
943  std::vector< vtkMRMLNode* > RegisteredNodeClasses;
944  std::vector< std::string > RegisteredNodeTags;
945  std::map< std::string, std::string > RegisteredAbstractNodeClassTypeDisplayNames; // map class name to type display name
946 
947  NodeReferencesType NodeReferences; // ReferencedIDs (string), ReferencingNodes (node pointer)
948  std::map< std::string, std::string > ReferencedIDChanges;
949  std::map< std::string, vtkSmartPointer<vtkMRMLNode> > NodeIDs;
950 
951  // Stores default nodes. If a class is created or reset (using CreateNodeByClass or Clear) and
952  // a default node is defined for it then the content of the default node will be used to initialize
953  // the class. It is useful for overriding default values that are set in a node's constructor.
954  std::map< std::string, vtkSmartPointer<vtkMRMLNode> > DefaultNodes;
955 
956  std::string SceneXMLString;
957 
959 
961 
963 
964  vtkMTimeType NodeIDsMTime;
965 
966  void RemoveAllNodes(bool removeSingletons);
967 
968  char* Version;
969  char* Extensions;
970 
973 
974  vtkCallbackCommand *DeleteEventCallback;
975 
976  std::default_random_engine RandomGenerator;
977 
978 private:
979 
980  vtkMRMLScene(const vtkMRMLScene&); // Not implemented
981  void operator=(const vtkMRMLScene&); // Not implemented
982 
986  int LoadIntoScene(vtkCollection* scene, vtkMRMLMessageCollection* userMessages=nullptr);
987 
989  vtkTimeStamp StoredTime;
990 };
991 
992 //------------------------------------------------------------------------------
994 {
995  return (this->GetStates() & vtkMRMLScene::BatchProcessState)
997 }
998 
999 //------------------------------------------------------------------------------
1001 {
1002  return (this->GetStates() & vtkMRMLScene::CloseState)
1004 }
1005 
1006 //------------------------------------------------------------------------------
1008 {
1009  return (this->GetStates() & vtkMRMLScene::ImportState)
1011 }
1012 
1013 //------------------------------------------------------------------------------
1015 {
1016  return (this->GetStates() & vtkMRMLScene::RestoreState)
1018 }
1019 
1020 //------------------------------------------------------------------------------
1022 {
1023  return (this->GetStates() & vtkMRMLScene::UndoState)
1025 }
1026 
1027 //------------------------------------------------------------------------------
1029 {
1030  return (this->GetStates() & vtkMRMLScene::RedoState)
1032 }
1033 
1034 #endif
int GetNodesByClass(const char *className, std::vector< vtkMRMLNode *> &nodes)
void NodeAdded()
Definition: vtkMRMLScene.h:238
char * LastLoadedVersion
Definition: vtkMRMLScene.h:971
int GetNumberOfRedoLevels()
returns number of redo steps in the history buffer
Definition: vtkMRMLScene.h:399
char * Version
Definition: vtkMRMLScene.h:968
void PrintSelf(ostream &os, vtkIndent indent) override
vtkWeakPointer< vtkMRMLSubjectHierarchyNode > SubjectHierarchyNode
subject hierarchy node
Definition: vtkMRMLScene.h:920
vtkCallbackCommand * DeleteEventCallback
Definition: vtkMRMLScene.h:974
bool IsImporting() const
Return true if the scene is in Import state, false otherwise.
std::map< std::string, vtkSmartPointer< vtkMRMLNode > > NodeIDs
Definition: vtkMRMLScene.h:949
vtkDataIOManager * DataIOManager
Definition: vtkMRMLScene.h:924
std::string URL
Definition: vtkMRMLScene.h:936
void SetUndoFlag(bool flag)
Definition: vtkMRMLScene.h:381
int MaximumNumberOfSavedUndoStates
Definition: vtkMRMLScene.h:930
vtkCollection * URIHandlerCollection
Definition: vtkMRMLScene.h:925
std::string RootDirectory
Definition: vtkMRMLScene.h:937
virtual bool GetModifiedSinceRead()
std::set< std::string > ReservedIDs
Definition: vtkMRMLScene.h:941
std::string SceneXMLString
Definition: vtkMRMLScene.h:956
int GetNumberOfUndoLevels()
returns number of undo steps in the history buffer
Definition: vtkMRMLScene.h:396
static vtkMRMLSceneViewNode * New()
bool IsRedoing() const
Return true if the scene is in Redo state (in the process of redoing node changes), false otherwise.
MRML node to represent a complete subject hierarchy tree.
void SetUndoOn()
Set undo on/off.
Definition: vtkMRMLScene.h:378
virtual void UpdateNodeReferences(const char *referenceRole=nullptr)
std::map< std::string, int > UniqueIDs
Definition: vtkMRMLScene.h:939
MRML node to represent a 3D surface model.
vtkCacheManager * CacheManager
data i/o handling members
Definition: vtkMRMLScene.h:923
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:57
char * LastLoadedExtensions
Definition: vtkMRMLScene.h:972
vtkMTimeType NodeIDsMTime
Definition: vtkMRMLScene.h:964
std::map< std::string, int > UniqueNames
Definition: vtkMRMLScene.h:940
char * Extensions
Definition: vtkMRMLScene.h:969
int GetNumberOfNodeReferences(const char *referenceRole)
Return the number of node IDs for a specific reference role (and nodes as they always have the same s...
int LoadFromXMLString
Definition: vtkMRMLScene.h:958
NodeReferencesType NodeReferences
Definition: vtkMRMLScene.h:947
std::vector< vtkMRMLNode *> RegisteredNodeClasses
Definition: vtkMRMLScene.h:943
void SetUndoOff()
Definition: vtkMRMLScene.h:379
A superclass for other storage nodes.
void operator=(const vtkMRMLSceneViewNode &)
vtkCollection * Nodes
Definition: vtkMRMLScene.h:917
std::list< vtkCollection *> UndoStack
Definition: vtkMRMLScene.h:933
friend class vtkMRMLScene
Definition: vtkMRMLNode.h:171
bool IsUndoing() const
Return true if the scene is in Undo state (in the process of undoing node changes), false otherwise.
std::map< std::string, std::string > ReferencedIDChanges
Definition: vtkMRMLScene.h:948
bool IsClosing() const
Return true if the scene is in Close state, false otherwise.
std::vector< std::string > RegisteredNodeTags
Definition: vtkMRMLScene.h:944
bool IsRestoring() const
Return true if the scene is in Restore state, false otherwise.
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
std::list< vtkCollection *> RedoStack
Definition: vtkMRMLScene.h:934
vtkTagTable * UserTagTable
Definition: vtkMRMLScene.h:926
int GetStates() const
Returns the current state of the scene.
std::vector< unsigned long > States
Definition: vtkMRMLScene.h:928
bool IsBatchProcessing() const
Return true if the scene is in BatchProcess state, false otherwise.
Definition: vtkMRMLScene.h:993
std::map< std::string, vtkSmartPointer< vtkMRMLNode > > DefaultNodes
Definition: vtkMRMLScene.h:954
std::map< std::string, std::set< std::string > > NodeReferencesType
Definition: vtkMRMLScene.h:835
std::default_random_engine RandomGenerator
Definition: vtkMRMLScene.h:976
bool GetUndoFlag()
Definition: vtkMRMLScene.h:380
std::map< std::string, std::string > RegisteredAbstractNodeClassTypeDisplayNames
Definition: vtkMRMLScene.h:945