1 #ifndef __CIFTI_BRAIN_MODELS_MAP_H__ 2 #define __CIFTI_BRAIN_MODELS_MAP_H__ 31 #include "CiftiMappingType.h" 33 #include "Common/Compact3DLookup.h" 34 #include "StructureEnum.h" 35 #include "VolumeSpace.h" 54 int64_t m_surfaceNode;
65 int64_t m_indexStart, m_indexCount;
71 int64_t m_surfaceNode;
74 bool hasVolumeData()
const;
78 int64_t getIndexForVoxel(
const int64_t* ijk,
StructureEnum::Enum* structureOut = NULL)
const;
79 int64_t getIndexForVoxel(
const int64_t& i,
const int64_t& j,
const int64_t& k,
StructureEnum::Enum* structureOut = NULL)
const;
80 IndexInfo getInfoForIndex(
const int64_t index)
const;
82 std::vector<VolumeMap> getFullVolumeMap()
const;
86 std::vector<StructureEnum::Enum> getSurfaceStructureList()
const;
87 std::vector<StructureEnum::Enum> getVolumeStructureList()
const;
90 std::vector<ModelInfo> getModelInfo()
const;
93 void addSurfaceModel(
const int64_t& numberOfNodes,
const StructureEnum::Enum& structure,
const float* roi = NULL);
94 void addSurfaceModel(
const int64_t& numberOfNodes,
const StructureEnum::Enum& structure,
const std::vector<int64_t>& nodeList);
95 void addVolumeModel(
const StructureEnum::Enum& structure,
const std::vector<int64_t>& ijkList);
100 MappingType getType()
const {
return BRAIN_MODELS; }
101 int64_t getLength()
const;
103 bool approximateMatch(
const CiftiMappingType& rhs, AString* explanation = NULL)
const;
104 void readXML1(XmlReader& xml);
105 void readXML2(XmlReader& xml);
106 void writeXML1(XmlWriter& xml)
const;
107 void writeXML2(XmlWriter& xml)
const;
109 struct BrainModelPriv
113 int64_t m_surfaceNumberOfNodes;
114 std::vector<int64_t> m_nodeIndices;
115 std::vector<int64_t> m_voxelIndicesIJK;
117 int64_t m_modelStart, m_modelEnd;
118 std::vector<int64_t> m_nodeToIndexLookup;
119 bool operator==(
const BrainModelPriv& rhs)
const;
120 bool operator!=(
const BrainModelPriv& rhs)
const {
return !((*this) == rhs); }
121 void setupSurface(
const int64_t& start);
124 bool m_haveVolumeSpace, m_ignoreVolSpace;
125 std::vector<BrainModelPriv> m_modelsInfo;
126 std::map<StructureEnum::Enum, int> m_surfUsed, m_volUsed;
128 int64_t getNextStart()
const;
129 struct ParseHelperModel
133 int64_t m_surfaceNumberOfNodes;
134 std::vector<int64_t> m_nodeIndices;
135 std::vector<int64_t> m_voxelIndicesIJK;
136 int64_t m_offset, m_count;
137 bool operator<(
const ParseHelperModel& rhs)
const 139 if (m_offset < rhs.m_offset)
return true;
140 if (m_offset > rhs.m_offset)
return false;
141 if (m_count < rhs.m_count)
return true;
144 void parseBrainModel1(XmlReader& xml);
145 void parseBrainModel2(XmlReader& xml);
146 static std::vector<int64_t> readIndexArray(XmlReader& xml);
151 #endif //__CIFTI_BRAIN_MODELS_MAP_H__ Definition: CiftiBrainModelsMap.h:61
namespace for all CiftiLib functionality
Definition: CiftiBrainModelsMap.h:41
Definition: CiftiBrainModelsMap.h:56
Definition: CiftiMappingType.h:38
Definition: VolumeSpace.h:41
Enum
Definition: StructureEnum.h:49
Definition: CiftiBrainModelsMap.h:67
Definition: CiftiBrainModelsMap.h:51
Definition: CiftiBrainModelsMap.h:43
Definition: Compact3DLookup.h:37