Ejemplo n.º 1
0
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);
}