Slicer 5.9
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 {
135 };
136
138
139 vtkGetMacro(ReadState, int);
140 vtkSetMacro(ReadState, int);
141 void SetReadStatePending() { this->SetReadState(this->Pending); };
142 void SetReadStateIdle() { this->SetReadState(this->Idle); };
148 const char* GetStateAsString(int state);
149 const char* GetReadStateAsString() { return this->GetStateAsString(this->ReadState); };
151
153
155 vtkGetMacro(WriteState, int);
156 void SetWriteState(int writeState);
158 void SetWriteStateIdle() { this->SetWriteState(this->Idle); };
164 const char* GetWriteStateAsString() { return this->GetStateAsString(this->WriteState); };
166
171 std::string GetFullNameFromNthFileName(int n);
172
184 virtual int SupportedFileType(const char* fileName);
185
189 virtual vtkStringArray* GetSupportedReadFileTypes();
190
194 virtual vtkStringArray* GetSupportedWriteFileTypes();
195
201 virtual void GetFileExtensionsFromFileTypes(vtkStringArray* inputFileTypes, vtkStringArray* outputFileExtensions);
202
204
206 virtual void SetWriteFileFormat(const char* writeFileFormat);
207 vtkGetStringMacro(WriteFileFormat);
209
212 unsigned int AddFileName(const char* fileName);
216
219 int GetNumberOfFileNames() const { return (int)this->FileNameList.size(); };
220
224 int FileNameIsInList(const char* fileName);
225
228 unsigned int AddURI(const char* uri);
229
232 const char* GetNthURI(int n);
233
237
240 int GetNumberOfURIs() { return (int)this->URIList.size(); }
241
244 void SetDataDirectory(const char* dataDirName);
247 void SetURIPrefix(const char* uriPrefix);
248
252 virtual const char* GetDefaultWriteFileExtension();
253
258 virtual void SetDefaultWriteFileExtension(const char* ext);
259
262 void ResetNthFileName(int n, const char* fileName);
265 void ResetNthURI(int n, const char* uri);
266
271 int IsFilePathRelative(const char* filepath);
272
277 const char* GetAbsoluteFilePath(const char* inputPath);
278
281 vtkSetStringMacro(TempFileName);
282 vtkGetStringMacro(TempFileName);
283
288
291 vtkTimeStamp GetStoredTime();
292
299 virtual bool CanReadInReferenceNode(vtkMRMLNode* refNode) = 0;
306
311 virtual void ConfigureForDataExchange() {};
312
315 static std::string GetLowercaseExtensionFromFileName(const std::string& filename);
316
319 std::string GetFileNameWithoutExtension(const char* fileName = nullptr);
320
322 vtkSetMacro(CompressionParameter, std::string);
323 vtkGetMacro(CompressionParameter, std::string);
324
326 virtual std::vector<std::string> GetCompressionPresetDisplayNames();
327
329 virtual std::string GetCompressionParameterFromDisplayName(const std::string& name);
330
332 virtual std::string GetDisplayNameFromCompressionParameter(const std::string& preset);
333
336
340 {
341 CompressionPreset() = default;
342
343 CompressionPreset(const std::string& parameter, const std::string& name)
344 : CompressionParameter(parameter)
345 , DisplayName(name)
346 {
347 }
348
350 std::string DisplayName;
351 };
352
354 virtual const std::vector<CompressionPreset> GetCompressionPresets();
355
362 enum
363 {
365 RAS = 0,
367 LPS = 1,
369 };
370
373 static const char* GetCoordinateSystemTypeAsString(int id);
374 static int GetCoordinateSystemTypeFromString(const char* name);
375
378
380
387 static std::string ClampFileName(const std::string& filename, int extensionLength, int maxFileNameLength, int hashLength = 4);
389
404
405protected:
410
414 virtual int ReadDataInternal(vtkMRMLNode* refNode);
415
419 virtual int WriteDataInternal(vtkMRMLNode* refNode);
420
425
430
431 char* FileName;
433 char* URI;
439 std::vector<CompressionPreset> CompressionPresets;
440
443 std::vector<std::string> FileNameList;
446 std::vector<std::string> URIList;
448 vtkStringArray* SupportedReadFileTypes;
449
452 vtkStringArray* SupportedWriteFileTypes;
454
467
472 vtkTimeStamp* StoredTime;
473
474 vtkWeakPointer<vtkMRMLStorableNode> LastFoundStorableNode;
475
476 // Record warnings and errors associated with this
477 // vtkMRMLStorableNode.
479};
480
481#endif
MRML node to represent a 3D surface model.
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()
virtual void SetWriteFileFormat(const char *writeFileFormat)
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.
void SetWriteState(int writeState)
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()
static std::string ClampFileName(const std::string &filename, int extensionLength, int maxFileNameLength, int hashLength=4)
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()
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)
@ RAS
for backward compatibility
@ LPS
for backward compatibility
virtual void SetReadState(int)
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)