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
220 {
221 return (int)this->FileNameList.size();
222 };
223
227 int FileNameIsInList(const char *fileName);
228
231 unsigned int AddURI(const char *uri);
232
235 const char *GetNthURI(int n);
236
240
244 {
245 return (int)this->URIList.size();
246 }
247
250 void SetDataDirectory(const char* dataDirName);
253 void SetURIPrefix(const char *uriPrefix);
254
258 virtual const char* GetDefaultWriteFileExtension();
259
264 virtual void SetDefaultWriteFileExtension(const char* ext);
265
268 void ResetNthFileName(int n, const char *fileName);
271 void ResetNthURI(int n, const char *uri);
272
277 int IsFilePathRelative(const char * filepath);
278
283 const char *GetAbsoluteFilePath(const char *inputPath);
284
287 vtkSetStringMacro(TempFileName);
288 vtkGetStringMacro(TempFileName);
289
294
297 vtkTimeStamp GetStoredTime();
298
305 virtual bool CanReadInReferenceNode(vtkMRMLNode* refNode) = 0;
312
317 virtual void ConfigureForDataExchange() {};
318
321 static std::string GetLowercaseExtensionFromFileName(const std::string& filename);
322
325 std::string GetFileNameWithoutExtension(const char* fileName = nullptr);
326
328 vtkSetMacro(CompressionParameter, std::string);
329 vtkGetMacro(CompressionParameter, std::string);
330
332 virtual std::vector<std::string> GetCompressionPresetDisplayNames();
333
335 virtual std::string GetCompressionParameterFromDisplayName(const std::string& name);
336
338 virtual std::string GetDisplayNameFromCompressionParameter(const std::string& preset);
339
342
346 {
347 CompressionPreset() = default;
348
349 CompressionPreset(const std::string &parameter, const std::string &name)
350 : CompressionParameter(parameter)
351 , DisplayName(name)
352 {
353 }
354
356 std::string DisplayName;
357 };
358
360 virtual const std::vector<CompressionPreset> GetCompressionPresets();
361
368 enum
369 {
371 RAS = 0,
373 LPS = 1,
375 };
376
379 static const char *GetCoordinateSystemTypeAsString(int id);
380 static int GetCoordinateSystemTypeFromString(const char *name);
381
384
386
393 static std::string ClampFileName(const std::string& filename, int extensionLength, int maxFileNameLength, int hashLength = 4);
395
410
411protected:
416
420 virtual int ReadDataInternal(vtkMRMLNode* refNode);
421
425 virtual int WriteDataInternal(vtkMRMLNode* refNode);
426
430 void StageReadData ( vtkMRMLNode *refNode );
431
435 void StageWriteData ( vtkMRMLNode *refNode );
436
437 char *FileName;
439 char *URI;
445 std::vector<CompressionPreset> CompressionPresets;
446
449 std::vector<std::string> FileNameList;
452 std::vector<std::string> URIList;
454 vtkStringArray* SupportedReadFileTypes;
455
458 vtkStringArray* SupportedWriteFileTypes;
460
473
478 vtkTimeStamp* StoredTime;
479
480 vtkWeakPointer<vtkMRMLStorableNode> LastFoundStorableNode;
481
482 // Record warnings and errors associated with this
483 // vtkMRMLStorableNode.
485};
486
487#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)