File: itkIOCommon.h

package info (click to toggle)
insighttoolkit5 5.4.3-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 704,384 kB
  • sloc: cpp: 783,592; ansic: 628,724; xml: 44,704; fortran: 34,250; python: 22,874; sh: 4,078; pascal: 2,636; lisp: 2,158; makefile: 464; yacc: 328; asm: 205; perl: 203; lex: 146; tcl: 132; javascript: 98; csh: 81
file content (132 lines) | stat: -rw-r--r-- 5,186 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*=========================================================================
 *
 *  Copyright NumFOCUS
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *         https://www.apache.org/licenses/LICENSE-2.0.txt
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 *=========================================================================*/
#ifndef itkIOCommon_h
#define itkIOCommon_h
#include "ITKIOImageBaseExport.h"


#include "itkIntTypes.h"
#include "itkProcessObject.h"
#include "itkSpatialOrientation.h"

namespace itk
{
/** \class IOCommonEnums
 * \brief Contains all enum classes used by IOCommon class.
 * \ingroup ITKIOImageBase
 */
class IOCommonEnums
{
public:
  /** \class AtomicPixel
   * \ingroup IOFilters
   * \ingroup ITKIOImageBase
   * enumerated constants for the different data types
   */
  enum class AtomicPixel : uint8_t
  {
    ITK_UCHAR, // aka uint8_t
    ITK_CHAR,
    ITK_USHORT, // aka uint16_t
    ITK_SHORT,
    ITK_UINT, // aka uint32_t
    ITK_INT,
    ITK_ULONG, // aka uint64_t
    ITK_LONG,
    ITK_FLOAT,
    ITK_DOUBLE
  };
};
// Define how to print enumeration
extern ITKIOImageBase_EXPORT std::ostream &
                             operator<<(std::ostream & out, const IOCommonEnums::AtomicPixel value);
/** \class IOCommon
 * \brief Centralized functionality for IO classes.
 *
 * This class provides encapsulated functionality to support the IO classes.
 *
 * \ingroup IOFilters
 *
 * \ingroup ITKIOImageBase
 */
class ITKIOImageBase_EXPORT IOCommon
{
public:
  enum SysConstants
  {
    ITK_MAXPATHLEN = 2048, /**< Maximum length of a filename */
    MAX_FILENAMELIST_SIZE = 512
  };

  using AtomicPixelEnum = IOCommonEnums::AtomicPixel;
#if !defined(ITK_LEGACY_REMOVE)
  /**Exposes enums values for backwards compatibility*/
  static constexpr AtomicPixelEnum ITK_UCHAR = AtomicPixelEnum::ITK_UCHAR;
  static constexpr AtomicPixelEnum ITK_CHAR = AtomicPixelEnum::ITK_CHAR;
  static constexpr AtomicPixelEnum ITK_USHORT = AtomicPixelEnum::ITK_USHORT;
  static constexpr AtomicPixelEnum ITK_SHORT = AtomicPixelEnum::ITK_SHORT;
  static constexpr AtomicPixelEnum ITK_UINT = AtomicPixelEnum::ITK_UINT;
  static constexpr AtomicPixelEnum ITK_INT = AtomicPixelEnum::ITK_INT;
  static constexpr AtomicPixelEnum ITK_ULONG = AtomicPixelEnum::ITK_ULONG;
  static constexpr AtomicPixelEnum ITK_LONG = AtomicPixelEnum::ITK_LONG;
  static constexpr AtomicPixelEnum ITK_FLOAT = AtomicPixelEnum::ITK_FLOAT;
  static constexpr AtomicPixelEnum ITK_DOUBLE = AtomicPixelEnum::ITK_DOUBLE;
#endif


  /** Convert the enumerated type to a string representation. */
  static std::string
  AtomicPixelTypeToString(const AtomicPixelEnum pixelType);

  /** Calculate the size, in bytes, that the atomic pixel type occupies. */
  static unsigned int
  ComputeSizeOfAtomicPixelType(const AtomicPixelEnum pixelType);
};

extern ITKIOImageBase_EXPORT const char * const ITK_OnDiskStorageTypeName;
extern ITKIOImageBase_EXPORT const char * const ITK_ImageFileBaseName;
extern ITKIOImageBase_EXPORT const char * const ITK_VoxelUnits;
extern ITKIOImageBase_EXPORT const char * const ITK_OnDiskBitPerPixel;
extern ITKIOImageBase_EXPORT const char * const SPM_ROI_SCALE;
extern ITKIOImageBase_EXPORT const char * const ITK_FileNotes;
extern ITKIOImageBase_EXPORT const char * const ITK_Origin;
extern ITKIOImageBase_EXPORT const char * const ITK_Spacing;
extern ITKIOImageBase_EXPORT const char * const ITK_ZDirection;
extern ITKIOImageBase_EXPORT const char * const ITK_FileOriginator;
extern ITKIOImageBase_EXPORT const char * const ITK_OriginationDate;
extern ITKIOImageBase_EXPORT const char * const ITK_PatientID;
extern ITKIOImageBase_EXPORT const char * const ITK_ExperimentDate;
extern ITKIOImageBase_EXPORT const char * const ITK_ExperimentTime;
extern ITKIOImageBase_EXPORT const char * const ITK_InputFilterName;
extern ITKIOImageBase_EXPORT const char * const ITK_NumberOfDimensions;
extern ITKIOImageBase_EXPORT const char * const ITK_ImageType;
extern ITKIOImageBase_EXPORT const char * const ITK_PatientName;
extern ITKIOImageBase_EXPORT const char * const ITK_ScanID;
extern ITKIOImageBase_EXPORT const char * const ROI_NAME;
extern ITKIOImageBase_EXPORT const char * const ROI_X_SIZE;
extern ITKIOImageBase_EXPORT const char * const ROI_X_RESOLUTION;
extern ITKIOImageBase_EXPORT const char * const ROI_Y_SIZE;
extern ITKIOImageBase_EXPORT const char * const ROI_Y_RESOLUTION;
extern ITKIOImageBase_EXPORT const char * const ROI_Z_SIZE;
extern ITKIOImageBase_EXPORT const char * const ROI_Z_RESOLUTION;
extern ITKIOImageBase_EXPORT const char * const ROI_NUM_SEGMENTS;
extern ITKIOImageBase_EXPORT const char * const ROI_PLANE;
extern ITKIOImageBase_EXPORT const char * const ROI_SCAN_ID;
} // end namespace itk

#endif // itkIOCommon_h