Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkImageDataItem.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkImageDataItem_h
14 #define mitkImageDataItem_h
15 
16 #include <mitkCommon.h>
17 #include <MitkCoreExports.h>
18 #include <mitkImageDescriptor.h>
19 
20 class vtkImageData;
21 
22 namespace mitk
23 {
24  class PixelType;
25  class ImageVtkReadAccessor;
26  class ImageVtkWriteAccessor;
27 
28  class Image;
29 
44  class MITKCORE_EXPORT ImageDataItem : public itk::LightObject
45  {
46  friend class ImageAccessorBase;
47  friend class ImageWriteAccessor;
48  friend class ImageReadAccessor;
49 
50  template <class TPixel, unsigned int VDimension>
51  friend class ImagePixelAccessor;
52 
53  friend class Image;
54 
55  // template<class TOutputImage>
56  // friend class ImageToItk;
57 
58  public:
61 
63 
79  ImageDataItem(const ImageDataItem &aParent,
80  const mitk::ImageDescriptor::Pointer desc,
81  int timestep,
82  unsigned int dimension,
83  void *data = nullptr,
84  bool manageMemory = false,
85  size_t offset = 0);
86 
88  ~ImageDataItem() override;
89 
100  ImageDataItem(const mitk::ImageDescriptor::Pointer desc, int timestep, void *data, bool manageMemory);
101 
115  int timestep,
116  unsigned int dimension,
117  unsigned int *dimensions,
118  void *data,
119  bool manageMemory);
120 
121  ImageDataItem(const ImageDataItem &other) = delete;
122  ImageDataItem &operator=(const ImageDataItem &other) = delete;
123 
128  bool IsComplete() const { return m_IsComplete; }
129 
134  void SetComplete(bool complete) { m_IsComplete = complete; }
135 
140  int GetOffset() const { return m_Offset; }
141 
146  PixelType GetPixelType() const { return *m_PixelType; }
147 
152  void SetTimestep(int t) { m_Timestep = t; }
153 
158  void SetManageMemory(bool b) { m_ManageMemory = b; }
159 
164  int GetDimension() const { return m_Dimension; }
165 
171  int GetDimension(int i) const
172  {
173  int returnValue = 0;
174 
175  // return the true size if dimension available
176  if (i < (int)m_Dimension)
177  returnValue = m_Dimensions[i];
178 
179  return returnValue;
180  }
181 
186  ImageDataItem::ConstPointer GetParent() const { return m_Parent; }
187 
199 
206 
211  bool GetManageMemory() const { return m_ManageMemory; }
212 
221  virtual void ConstructVtkImageData(ImageConstPointer iP) const;
222 
227  size_t GetSize() const { return m_Size; }
228 
235  virtual void Modified() const;
236 
237  protected:
242  void* GetData() const { return m_Data; }
243 
244  unsigned char *m_Data;
245 
247 
249 
250  mutable vtkImageData *m_VtkImageData;
253  int m_Offset;
254 
256 
257  size_t m_Size;
258 
259  private:
260  void ComputeItemSize(const unsigned int *dimensions, unsigned int dimension);
261 
262  ImageDataItem::ConstPointer m_Parent;
263 
264  unsigned int m_Dimension;
265 
266  unsigned int m_Dimensions[MAX_IMAGE_DIMENSIONS];
267 
268  int m_Timestep;
269  };
270 
271 } // namespace mitk
272 
273 #endif
#define MITKCORE_EXPORT
Internal container for image data used by mitk::Image.
ImageVtkWriteAccessor * GetVtkImageAccessor(ImagePointer iP)
Get or create a VTK write accessor for this data item.
~ImageDataItem() override
Destructor. Frees managed memory and VTK resources.
int GetDimension() const
Get the number of spatial dimensions.
void * GetData() const
vtkImageData * m_VtkImageData
itk::SmartPointer< mitk::Image > ImagePointer
Smart pointer to Image.
bool GetManageMemory() const
Query whether this item will delete its data buffer on destruction.
ImageDataItem(const ImageDataItem &other)=delete
void SetComplete(bool complete)
Set the completion status of this data item.
ImageDataItem(const mitk::PixelType &type, int timestep, unsigned int dimension, unsigned int *dimensions, void *data, bool manageMemory)
Construct a data item from explicit pixel type and dimension information.
virtual void ConstructVtkImageData(ImageConstPointer iP) const
Build a vtkImageData representation from the raw pixel buffer.
int GetOffset() const
Get the byte offset of this item within its parent's buffer.
void SetManageMemory(bool b)
Set whether this item owns (and will delete) its data buffer.
int GetDimension(int i) const
Get the size along a specific dimension.
bool IsComplete() const
Check whether all sub-items of this data item have been filled.
ImageDataItem::ConstPointer GetParent() const
Get the parent data item, if any.
PixelType GetPixelType() const
Get the pixel type of this data item.
size_t GetSize() const
Get the total size of this data item in bytes.
ImageDataItem & operator=(const ImageDataItem &other)=delete
mitkClassMacroItkParent(ImageDataItem, itk::LightObject)
ImageDataItem(const ImageDataItem &aParent, const mitk::ImageDescriptor::Pointer desc, int timestep, unsigned int dimension, void *data=nullptr, bool manageMemory=false, size_t offset=0)
Construct a sub-image data item as a child of an existing item.
unsigned char * m_Data
ImageVtkReadAccessor * m_VtkImageReadAccessor
ImageDataItem(const mitk::ImageDescriptor::Pointer desc, int timestep, void *data, bool manageMemory)
Construct a top-level data item from an image descriptor.
itk::SmartPointer< const mitk::Image > ImageConstPointer
Smart pointer to const Image.
void SetTimestep(int t)
Set the time step index for this data item.
ImageVtkReadAccessor * GetVtkImageAccessor(ImageConstPointer iP) const
Get or create a VTK read accessor for this data item.
ImageVtkWriteAccessor * m_VtkImageWriteAccessor
virtual void Modified() const
Mark the internal vtkImageData as modified.
Provides templated image access for all inheriting classes.
Provides locked read-only access to a particular region of image data.
Provides read access to image data in the form required by VTK methods.
Provides write access to image data in the form required by VTK methods.
Provides locked write access to a particular region of image data.
Image class for storing multi-dimensional medical image data.
Definition: mitkImage.h:76
Describes the data type of image pixels.
Definition: mitkPixelType.h:75
#define MAX_IMAGE_DIMENSIONS
Maximum number of dimensions supported per image channel.
class ITK_EXPORT Image
Find image slices visible on a given plane.