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;
102 bool operator==(
const CiftiMappingType& rhs)
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);
123 VolumeSpace m_volSpace;
124 bool m_haveVolumeSpace, m_ignoreVolSpace;
125 std::vector<BrainModelPriv> m_modelsInfo;
126 std::map<StructureEnum::Enum, int> m_surfUsed, m_volUsed;
127 Compact3DLookup<std::pair<int64_t, StructureEnum::Enum> > m_voxelToIndexLookup;
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);