Slicer 5.9
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
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
396protected:
401
405 virtual int ReadDataInternal(vtkMRMLNode* refNode);
406
410 virtual int WriteDataInternal(vtkMRMLNode* refNode);
411
415 void StageReadData ( vtkMRMLNode *refNode );
416
420 void StageWriteData ( vtkMRMLNode *refNode );
421
422 char *FileName;
424 char *URI;
430 std::vector<CompressionPreset> CompressionPresets;
431
434 std::vector<std::string> FileNameList;
437 std::vector<std::string> URIList;
439 vtkStringArray* SupportedReadFileTypes;
440
443 vtkStringArray* SupportedWriteFileTypes;
445
458
463 vtkTimeStamp* StoredTime;
464
465 vtkWeakPointer<vtkMRMLStorableNode> LastFoundStorableNode;
466
467 // Record warnings and errors associated with this
468 // vtkMRMLStorableNode.
470};
471
472#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)