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
vtkMRMLStreamingVolumeNode.h
Go to the documentation of this file.
1/*==============================================================================
2
3Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
4Queen's University, Kingston, ON, Canada. All Rights Reserved.
5
6See COPYRIGHT.txt
7or http://www.slicer.org/copyright/copyright.txt for details.
8
9Unless required by applicable law or agreed to in writing, software
10distributed under the License is distributed on an "AS IS" BASIS,
11WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12See the License for the specific language governing permissions and
13limitations under the License.
14
15This file was originally developed by Kyle Sunderland, PerkLab, Queen's University
16and was supported through CANARIE's Research Software Program, and Cancer
17Care Ontario.
18
19==============================================================================*/
20
21#ifndef __vtkMRMLStreamingVolumeNode_h
22#define __vtkMRMLStreamingVolumeNode_h
23
24// MRML includes
25#include "vtkMRML.h"
26#include "vtkMRMLNode.h"
27#include "vtkMRMLStorageNode.h"
31
32// vtkAddon includes
33#include "vtkStreamingVolumeCodec.h"
34
35// VTK includes
36#include <vtkImageData.h>
37#include <vtkObject.h>
38#include <vtkUnsignedCharArray.h>
39
45{
46public:
49 void PrintSelf(ostream& os, vtkIndent indent) override;
50
52
53 void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData) override;
54
56 void ReadXMLAttributes(const char** atts) override;
57
59 void WriteXML(ostream& of, int indent) override;
60
64
66 const char* GetNodeTagName() override
67 {return "StreamingVolume";}
68
71 void SetAndObserveImageData(vtkImageData* imageData) override;
72 vtkImageData* GetImageData() override;
73 vtkAlgorithmOutput* GetImageDataConnection() override;
74
77 void SetAndObserveFrame(vtkStreamingVolumeFrame* frame);
78
80 vtkStreamingVolumeFrame* GetFrame(){return this->Frame.GetPointer();};
81
84 virtual bool EncodeImageData(bool forceKeyFrame = false);
85
88 virtual bool DecodeFrame();
89
92 virtual bool IsKeyFrame();
93
96 static void FrameModifiedCallback(vtkObject *caller, unsigned long eid, void* clientData, void* callData);
97 enum
98 {
100 };
101
103 vtkSetMacro(Codec, vtkStreamingVolumeCodec*);
104 vtkStreamingVolumeCodec* GetCodec();
105
108 vtkGetMacro(CodecFourCC, std::string);
109 vtkSetMacro(CodecFourCC, std::string);
110
113 void SetCodecParameterString(std::string parameterString);
115
116protected:
121
123 void AllocateImageForFrame(vtkImageData* imageData);
124
127
128protected:
129 vtkSmartPointer<vtkStreamingVolumeCodec> Codec;
130 std::string CodecFourCC;
131 vtkSmartPointer<vtkStreamingVolumeFrame> Frame;
132 bool FrameDecoded{false};
134 vtkSmartPointer<vtkCallbackCommand> FrameModifiedCallbackCommand;
135
136};
137
138#endif
Abstract Superclass for all specific types of MRML nodes.
void operator=(const vtkMRMLStreamingVolumeNode &)
virtual bool DecodeFrame()
vtkStreamingVolumeCodec * GetCodec()
void AllocateImageForFrame(vtkImageData *imageData)
Allocates the vtkImageData so that the compressed image data can be decoded.
std::string GetCodecParameterString()
virtual bool EncodeImageData(bool forceKeyFrame=false)
vtkAlgorithmOutput * GetImageDataConnection() override
Return the input image data pipeline.
vtkMRMLStreamingVolumeNode(const vtkMRMLStreamingVolumeNode &)
vtkStreamingVolumeFrame * GetFrame()
Returns a pointer to the current frame.
void SetCodecParameterString(std::string parameterString)
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
vtkSmartPointer< vtkStreamingVolumeCodec > Codec
~vtkMRMLStreamingVolumeNode() override
vtkMRMLNode * CreateNodeInstance() override
MRMLNode methods.
static vtkMRMLStreamingVolumeNode * New()
void SetAndObserveFrame(vtkStreamingVolumeFrame *frame)
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
static void FrameModifiedCallback(vtkObject *caller, unsigned long eid, void *clientData, void *callData)
void PrintSelf(ostream &os, vtkIndent indent) override
vtkSmartPointer< vtkStreamingVolumeFrame > Frame
void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData) override
alternative method to propagate events generated in Display nodes
void ReadXMLAttributes(const char **atts) override
Set node attributes.
void SetAndObserveImageData(vtkImageData *imageData) override
vtkImageData * GetImageData() override
vtkMRMLCopyContentMacro(vtkMRMLStreamingVolumeNode)
bool HasExternalImageObserver()
Returns true if the number of observers on the ImageData or ImageDataConnection is greater than the d...
vtkSmartPointer< vtkCallbackCommand > FrameModifiedCallbackCommand