void VolumeCrop::crop() { if (!inport_.hasData()) return; const VolumeHandleBase* inputHandle = inport_.getData(); VolumeHandle* outputVolume = 0; tgt::ivec3 start, dimensions; start.x = clipRight_.get(); start.y = clipFront_.get(); start.z = clipBottom_.get(); dimensions.x = clipLeft_.get() - clipRight_.get() + 1; dimensions.y = clipBack_.get() - clipFront_.get() + 1; dimensions.z = clipTop_.get() - clipBottom_.get() + 1; outputVolume = VolumeOperatorSubset::APPLY_OP(inport_.getData(), start, dimensions, progressBar_); outputVolume->setSpacing(inputHandle->getSpacing()); // assign computed volume to outport if (outputVolume) { if(preserveLocation_.get()) { outputVolume->setPhysicalToWorldMatrix(inputHandle->getPhysicalToWorldMatrix()); } else { oldVolumePosition(outputVolume); outputVolume->setPhysicalToWorldMatrix(tgt::mat4::identity); } outport_.setData(outputVolume); } else outport_.setData(0); }