VolumeBase* AnalyzeVolumeReader::read(const VolumeURL& origin) throw (tgt::FileException, std::bad_alloc) { VolumeBase* result = 0; int volumeId = -1; std::string tmp = origin.getSearchParameter("volumeId"); if (! tmp.empty()) volumeId = stoi(tmp); VolumeCollection* collection = read(origin.getPath(), volumeId); if (collection && collection->size() == 1) { result = collection->first(); } else if (collection && collection->size() > 1) { while(!collection->empty()) { VolumeBase* vh = collection->first(); collection->remove(vh); delete vh; } delete collection; throw tgt::FileException("Only one volume expected", origin.getPath()); } delete collection; return result; }
void VolumeCollectionModalityFilter::adjustFilteredCollection() { VolumeCollection* collection = inport_.getData(); if ((collection == 0) || (collection->empty() == true)) { filteredCollection_.clear(); outport_.setData(0); return; } if (currentModality_.getName() != modalityProp_.get()) { currentModality_ = *(modalityProp_.getValue()); filteredCollection_.clear(); if (currentModality_ != Modality::MODALITY_ANY) { for (size_t i = 0; i < collection->size(); ++i) { if (collection->at(i)->getModality() == currentModality_) filteredCollection_.add(collection->at(i)); } outport_.setData(&filteredCollection_); } else outport_.setData(inport_.getData()); } }