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
vtkMRMLStorageNode.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: vtkMRMLStorageNode.h,v $
10  Date: $Date: 2006/03/19 17:12:29 $
11  Version: $Revision: 1.3 $
12 
13 =========================================================================auto=*/
14 
15 #ifndef __vtkMRMLStorageNode_h
16 #define __vtkMRMLStorageNode_h
17 
18 // MRML includes
19 #include "vtkMRMLNode.h"
20 #include "vtkCommand.h"
23 
24 class vtkURIHandler;
25 
26 // VTK includes
27 class vtkStringArray;
28 
29 // STD includes
30 #include <vector>
31 
35 class VTK_MRML_EXPORT vtkMRMLStorageNode : public vtkMRMLNode
36 {
37 public:
39  void PrintSelf(ostream& os, vtkIndent indent) override;
40 
41  vtkMRMLNode* CreateNodeInstance() override = 0;
42 
45  virtual vtkMRMLStorableNode* GetStorableNode();
46 
49  void ReadXMLAttributes( const char** atts) override;
50 
60  virtual int ReadData(vtkMRMLNode *refNode, bool temporaryFile = false);
61 
67  virtual int WriteData(vtkMRMLNode *refNode);
68 
71  void WriteXML(ostream& of, int indent) override;
72 
75  void Copy(vtkMRMLNode *node) override;
76 
79  const char* GetNodeTagName() override = 0;
80 
83  vtkSetStringMacro(FileName);
84  vtkGetStringMacro(FileName);
85 
91  virtual std::string GetSupportedFileExtension(const char* fileName = nullptr, bool includeReadable = true, bool includeWriteable = true);
92 
95  const char *GetNthFileName(int n) const;
96 
99  vtkBooleanMacro(UseCompression, int);
100  vtkGetMacro(UseCompression, int);
101  vtkSetMacro(UseCompression, int);
102 
105  vtkSetStringMacro(URI);
106  vtkGetStringMacro(URI);
107 
108  vtkGetObjectMacro (URIHandler, vtkURIHandler);
109  virtual void SetURIHandler(vtkURIHandler* uriHandler);
110 
113  void ProcessMRMLEvents ( vtkObject *caller, unsigned long event, void *callData ) override;
114 
126  enum
127  {
134  SkippedNoData
135  };
136 
138  vtkGetMacro(ReadState,int);
139  vtkSetMacro(ReadState,int);
140  void SetReadStatePending() { this->SetReadState(this->Pending); };
141  void SetReadStateIdle() { this->SetReadState(this->Idle); };
142  void SetReadStateScheduled() { this->SetReadState(this->Scheduled); };
143  void SetReadStateTransferring() { this->SetReadState(this->Transferring); };
144  void SetReadStateTransferDone() { this->SetReadState(this->TransferDone); };
145  void SetReadStateCancelled() { this->SetReadState(this->Cancelled); };
146  void SetReadStateSkippedNoData() { this->SetReadState(this->SkippedNoData); };
147  const char *GetStateAsString(int state);
148  const char *GetReadStateAsString() { return this->GetStateAsString(this->ReadState); };
149 
152  vtkGetMacro(WriteState,int);
153  vtkSetMacro(WriteState,int);
154  void SetWriteStatePending() { this->SetWriteState(this->Pending); };
155  void SetWriteStateIdle() { this->SetWriteState(this->Idle); };
156  void SetWriteStateScheduled() { this->SetWriteState(this->Scheduled); };
157  void SetWriteStateTransferring() { this->SetWriteState(this->Transferring); };
158  void SetWriteStateTransferDone() { this->SetWriteState(this->TransferDone); };
159  void SetWriteStateCancelled() { this->SetWriteState(this->Cancelled); };
160  void SetWriteStateSkippedNoData() { this->SetWriteState(this->SkippedNoData); };
161  const char *GetWriteStateAsString() { return this->GetStateAsString(this->WriteState); };
162 
166  std::string GetFullNameFromFileName();
167  std::string GetFullNameFromNthFileName(int n);
168 
180  virtual int SupportedFileType(const char *fileName);
181 
185  virtual vtkStringArray* GetSupportedReadFileTypes();
186 
190  virtual vtkStringArray* GetSupportedWriteFileTypes();
191 
197  virtual void GetFileExtensionsFromFileTypes(vtkStringArray* inputFileTypes, vtkStringArray* outputFileExtensions);
198 
201  vtkSetStringMacro(WriteFileFormat);
202  vtkGetStringMacro(WriteFileFormat);
203 
206  unsigned int AddFileName (const char *fileName);
209  void ResetFileNameList();
210 
214  {
215  return (int)this->FileNameList.size();
216  };
217 
221  int FileNameIsInList(const char *fileName);
222 
225  unsigned int AddURI(const char *uri);
226 
229  const char *GetNthURI(int n);
230 
233  void ResetURIList();
234 
238  {
239  return (int)this->URIList.size();
240  }
241 
244  void SetDataDirectory(const char* dataDirName);
247  void SetURIPrefix(const char *uriPrefix);
248 
251  virtual const char* GetDefaultWriteFileExtension();
252 
257  virtual void SetDefaultWriteFileExtension(const char* ext);
258 
261  void ResetNthFileName(int n, const char *fileName);
264  void ResetNthURI(int n, const char *uri);
265 
270  int IsFilePathRelative(const char * filepath);
271 
276  const char *GetAbsoluteFilePath(const char *inputPath);
277 
280  vtkSetStringMacro(TempFileName);
281  vtkGetStringMacro(TempFileName);
282 
286  void InvalidateFile();
287 
290  vtkTimeStamp GetStoredTime();
291 
298  virtual bool CanReadInReferenceNode(vtkMRMLNode* refNode) = 0;
304  virtual bool CanWriteFromReferenceNode(vtkMRMLNode* refNode);
305 
310  virtual void ConfigureForDataExchange() {};
311 
314  static std::string GetLowercaseExtensionFromFileName(const std::string& filename);
315 
318  std::string GetFileNameWithoutExtension(const char* fileName = nullptr);
319 
321  vtkSetMacro(CompressionParameter, std::string);
322  vtkGetMacro(CompressionParameter, std::string);
323 
325  virtual std::vector<std::string> GetCompressionPresetDisplayNames();
326 
328  virtual std::string GetCompressionParameterFromDisplayName(const std::string& name);
329 
331  virtual std::string GetDisplayNameFromCompressionParameter(const std::string& preset);
332 
334  virtual int GetNumberOfCompressionPresets();
335 
339  {
340  CompressionPreset() = default;
341 
342  CompressionPreset(const std::string &parameter, const std::string &name)
343  : CompressionParameter(parameter)
344  , DisplayName(name)
345  {
346  }
347 
348  std::string CompressionParameter;
349  std::string DisplayName;
350  };
351 
353  virtual const std::vector<CompressionPreset> GetCompressionPresets();
354 
361  enum
362  {
363  CoordinateSystemRAS = 0,
364  RAS = 0,
365  CoordinateSystemLPS = 1,
366  LPS = 1,
367  CoordinateSystemType_Last
368  };
369 
372  static const char *GetCoordinateSystemTypeAsString(int id);
373  static int GetCoordinateSystemTypeFromString(const char *name);
374 
375  const vtkMRMLMessageCollection *GetUserMessages() const { return this->UserMessages; }
376  vtkMRMLMessageCollection *GetUserMessages() { return this->UserMessages; }
377 
378 protected:
380  ~vtkMRMLStorageNode() override;
382  void operator=(const vtkMRMLStorageNode&);
383 
387  virtual int ReadDataInternal(vtkMRMLNode* refNode);
388 
392  virtual int WriteDataInternal(vtkMRMLNode* refNode);
393 
397  void StageReadData ( vtkMRMLNode *refNode );
398 
402  void StageWriteData ( vtkMRMLNode *refNode );
403 
404  char *FileName;
406  char *URI;
411  std::string CompressionParameter;
412  std::vector<CompressionPreset> CompressionPresets;
413 
416  std::vector<std::string> FileNameList;
419  std::vector<std::string> URIList;
421  vtkStringArray* SupportedReadFileTypes;
422 
425  vtkStringArray* SupportedWriteFileTypes;
427 
430  virtual void InitializeSupportedReadFileTypes();
434  virtual void InitializeSupportedWriteFileTypes();
439  virtual void UpdateCompressionPresets();
440 
445  vtkTimeStamp* StoredTime;
446 
447  vtkWeakPointer<vtkMRMLStorableNode> LastFoundStorableNode;
448 
449  // Record warnings and errors associated with this
450  // vtkMRMLStorableNode.
452 };
453 
454 #endif
const vtkMRMLMessageCollection * GetUserMessages() const
vtkWeakPointer< vtkMRMLStorableNode > LastFoundStorableNode
std::vector< std::string > FileNameList
An array of file names, should contain the FileName but may not
vtkMRMLMessageCollection * GetUserMessages()
virtual void ConfigureForDataExchange()
std::string CompressionParameter
int GetNumberOfFileNames() const
See how many file names were generated during ExecuteInformation
vtkMRMLMessageCollection * UserMessages
virtual void ReadXMLAttributes(const char **atts)
void operator=(const vtkMRMLNode &)
virtual vtkMRMLNode * CreateNodeInstance()=0
Create instance of the default node. Like New only virtual.
virtual void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData)
Propagate events generated in mrml.
vtkStringArray * SupportedReadFileTypes
List of supported extensions to read in.
virtual void Copy(vtkMRMLNode *node)
Copy node contents from another node of the same type. Does not copy node ID and Scene. Performs deep copy - an independent copy is created from all data, including bulk data.
MRML node to represent a 3D surface model.
vtkStringArray * SupportedWriteFileTypes
A superclass for other storage nodes.
virtual void WriteXML(ostream &of, int indent)
vtkURIHandler * URIHandler
std::string DefaultWriteFileExtension
List of supported extensions to write in.
const char * GetWriteStateAsString()
vtkTimeStamp * StoredTime
std::vector< std::string > URIList
An array of URI&#39;s, should contain the URI but may not
void PrintSelf(ostream &os, vtkIndent indent) override
CompressionPreset(const std::string &parameter, const std::string &name)
virtual const char * GetNodeTagName()=0
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
std::vector< CompressionPreset > CompressionPresets
const char * GetReadStateAsString()
int GetNumberOfURIs()
Return how many uri names this storage node holds in it&#39;s list