Slicer 5.4
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
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
24class vtkURIHandler;
25
26// VTK includes
27class vtkStringArray;
28
29// STD includes
30#include <vector>
31
35class VTK_MRML_EXPORT vtkMRMLStorageNode : public vtkMRMLNode
36{
37public:
39 void PrintSelf(ostream& os, vtkIndent indent) override;
40
42
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
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);
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
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
287
290 vtkTimeStamp GetStoredTime();
291
298 virtual bool CanReadInReferenceNode(vtkMRMLNode* refNode) = 0;
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
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
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
378protected:
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;
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
440
445 vtkTimeStamp* StoredTime;
446
447 vtkWeakPointer<vtkMRMLStorableNode> LastFoundStorableNode;
448
449 // Record warnings and errors associated with this
450 // vtkMRMLStorableNode.
452};
453
454#endif
Abstract Superclass for all specific types of MRML nodes.
MRML node to represent a 3D surface model.
A superclass for other storage nodes.
static const char * GetCoordinateSystemTypeAsString(int id)
Convert between coordinate system ID and name.
vtkStringArray * SupportedWriteFileTypes
void Copy(vtkMRMLNode *node) override
Copy the node's attributes to this object.
const char * GetNodeTagName() override=0
Get node XML tag name (like Storage, Model)
const char * GetNthURI(int n)
Get the nth URI from the list of URI's.
virtual int WriteData(vtkMRMLNode *refNode)
void ResetNthFileName(int n, const char *fileName)
Set the nth file in FileNameList, checks that it is already defined.
virtual std::string GetSupportedFileExtension(const char *fileName=nullptr, bool includeReadable=true, bool includeWriteable=true)
void SetURIPrefix(const char *uriPrefix)
Set a new URI base for all URI's.
vtkMRMLMessageCollection * GetUserMessages()
virtual vtkStringArray * GetSupportedWriteFileTypes()
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file.
virtual void UpdateCompressionPresets()
void ResetURIList()
Clear the array of URIs.
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
virtual int GetNumberOfCompressionPresets()
Get the number of compression presets.
std::vector< std::string > URIList
An array of URI's, should contain the URI but may not.
static std::string GetLowercaseExtensionFromFileName(const std::string &filename)
virtual void SetURIHandler(vtkURIHandler *uriHandler)
~vtkMRMLStorageNode() override
std::string GetFileNameWithoutExtension(const char *fileName=nullptr)
virtual int ReadDataInternal(vtkMRMLNode *refNode)
vtkTimeStamp * StoredTime
const char * GetNthFileName(int n) const
return the nth file name, null if doesn't exist
virtual std::string GetDisplayNameFromCompressionParameter(const std::string &preset)
Returns the name of the specified preset.
unsigned int AddURI(const char *uri)
Add in another URI to the list of URI's.
std::string CompressionParameter
virtual vtkStringArray * GetSupportedReadFileTypes()
void PrintSelf(ostream &os, vtkIndent indent) override
virtual int WriteDataInternal(vtkMRMLNode *refNode)
const vtkMRMLMessageCollection * GetUserMessages() const
std::vector< CompressionPreset > CompressionPresets
virtual void ConfigureForDataExchange()
std::string GetFullNameFromFileName()
vtkMRMLMessageCollection * UserMessages
const char * GetStateAsString(int state)
vtkTimeStamp GetStoredTime()
virtual std::vector< std::string > GetCompressionPresetDisplayNames()
Returns a list of displayable names of the supported compression presets.
vtkMRMLStorageNode(const vtkMRMLStorageNode &)
vtkStringArray * SupportedReadFileTypes
List of supported extensions to read in.
unsigned int AddFileName(const char *fileName)
Add in another file name to the list of file names.
std::vector< std::string > FileNameList
An array of file names, should contain the FileName but may not.
vtkWeakPointer< vtkMRMLStorableNode > LastFoundStorableNode
int FileNameIsInList(const char *fileName)
void ResetNthURI(int n, const char *uri)
Set the nth URI in URIList, checks that it is already defined.
std::string GetFullNameFromNthFileName(int n)
void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData) override
Propagate Progress Event generated in ReadData.
virtual int SupportedFileType(const char *fileName)
int GetNumberOfFileNames() const
See how many file names were generated during ExecuteInformation.
virtual bool CanWriteFromReferenceNode(vtkMRMLNode *refNode)
virtual void InitializeSupportedWriteFileTypes()
const char * GetWriteStateAsString()
void ResetFileNameList()
Clear the array of file names.
virtual vtkMRMLStorableNode * GetStorableNode()
std::string DefaultWriteFileExtension
List of supported extensions to write in.
virtual std::string GetCompressionParameterFromDisplayName(const std::string &name)
Returns a string representing the specified preset.
vtkURIHandler * URIHandler
void SetDataDirectory(const char *dataDirName)
Set a new data directory for all files.
const char * GetReadStateAsString()
vtkMRMLNode * CreateNodeInstance() override=0
Create instance of the default node. Like New only virtual.
virtual const char * GetDefaultWriteFileExtension()
Return default file extension for writing.
static int GetCoordinateSystemTypeFromString(const char *name)
virtual const std::vector< CompressionPreset > GetCompressionPresets()
Get a list of all supported compression presets.
int GetNumberOfURIs()
Return how many URI names this storage node holds in it's list.
virtual void GetFileExtensionsFromFileTypes(vtkStringArray *inputFileTypes, vtkStringArray *outputFileExtensions)
int IsFilePathRelative(const char *filepath)
void StageWriteData(vtkMRMLNode *refNode)
virtual bool CanReadInReferenceNode(vtkMRMLNode *refNode)=0
void operator=(const vtkMRMLStorageNode &)
virtual void InitializeSupportedReadFileTypes()
void StageReadData(vtkMRMLNode *refNode)
virtual void SetDefaultWriteFileExtension(const char *ext)
virtual int ReadData(vtkMRMLNode *refNode, bool temporaryFile=false)
const char * GetAbsoluteFilePath(const char *inputPath)
CompressionPreset(const std::string &parameter, const std::string &name)