MCPcopy Create free account
hub / github.com/ImageEngine/cortex / metadata

Method metadata

src/IECoreVDB/VDBObject.cpp:210–293  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

208}
209
210IECore::CompoundObjectPtr VDBObject::metadata( const std::string &name )
211{
212 CompoundObjectPtr metadata = new CompoundObject();
213
214 openvdb::GridBase::ConstPtr grid;
215
216 if ( unmodifiedFromFile() )
217 {
218
219 auto it = m_grids.find( name );
220 if ( it != m_grids.end() )
221 {
222 grid = it->second.metadata();
223 }
224 }
225 else
226 {
227 openvdb::GridBase::Ptr tmpGrid = findGrid ( name );
228 if ( tmpGrid )
229 {
230 tmpGrid->addStatsMetadata();
231 }
232 grid = tmpGrid;
233 }
234
235 if( !grid )
236 {
237 return metadata;
238 }
239
240 for( auto metaIt = grid->beginMeta(); metaIt != grid->endMeta(); ++metaIt )
241 {
242 if( metaIt->second->typeName() == openvdb::StringMetadata::staticTypeName() )
243 {
244 metadata->members()[metaIt->first] = new StringData(
245 static_cast<openvdb::StringMetadata *>( metaIt->second.get() )->value()
246 );
247 }
248 else if( metaIt->second->typeName() == openvdb::Int64Metadata::staticTypeName() )
249 {
250 metadata->members()[metaIt->first] = new Int64Data(
251 static_cast<openvdb::Int64Metadata *>( metaIt->second.get() )->value()
252 );
253 }
254 else if( metaIt->second->typeName() == openvdb::Int32Metadata::staticTypeName() )
255 {
256 metadata->members()[metaIt->first] = new IntData(
257 static_cast<openvdb::Int32Metadata *>( metaIt->second.get() )->value()
258 );
259 }
260 else if( metaIt->second->typeName() == openvdb::FloatMetadata::staticTypeName() )
261 {
262 metadata->members()[metaIt->first] = new FloatData(
263 static_cast<openvdb::FloatMetadata *>( metaIt->second.get() )->value()
264 );
265 }
266 else if( metaIt->second->typeName() == openvdb::DoubleMetadata::staticTypeName() )
267 {

Calls 6

findGridFunction · 0.85
typeNameMethod · 0.80
findMethod · 0.45
endMethod · 0.45
valueMethod · 0.45
getMethod · 0.45

Tested by 3