+void vvToolCropImage::apply()
+{
+ if (!mCurrentSlicerManager) close();
+ QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+ // Typedef
+ typedef args_info_clitkCropImage ArgsInfoType;
+ typedef clitk::CropImageGenericFilter<ArgsInfoType> CropFilterType;
+
+ // Get options
+ ArgsInfoType mArgsInfo;
+ cmdline_parser_clitkCropImage_init(&mArgsInfo); // Initialisation to default
+ int n = mCurrentSlicerManager->GetDimension()*2; // 2D and 3D only
+ mArgsInfo.boundingBox_given = n;
+ mArgsInfo.boundingBox_arg = new int[n];
+ mArgsInfo.boundingBox_arg[0] = xminSlider->value();
+ mArgsInfo.boundingBox_arg[1] = xmaxSlider->value();
+ mArgsInfo.boundingBox_arg[2] = yminSlider->value();
+ mArgsInfo.boundingBox_arg[3] = ymaxSlider->value();
+ if (n>3) { // 3D
+ mArgsInfo.boundingBox_arg[4] = zminSlider->value();
+ mArgsInfo.boundingBox_arg[5] = zmaxSlider->value();
+ }
+
+ if (n>6) { // 4D
+ // mArgsInfo.boundingBox_arg[6] = tminSlider->value();
+ // mArgsInfo.boundingBox_arg[7] = tmaxSlider->value();
+ mArgsInfo.boundingBox_arg[6] = 0;
+ mArgsInfo.boundingBox_arg[7] = mCurrentImage->GetSize()[3]-1;
+ }
+
+ // We MUST reset initial extend to input image before using the
+ // filter to retrieve the correct image size
+ for(int i=0; i<mExtentSize; i++) {
+ mReducedExtent[i] = mInitialExtent[i];
+ // DD(mArgsInfo.boundingBox_arg[i]);
+ }
+ UpdateExtent();
+
+ // Main filter
+ CropFilterType::Pointer filter = CropFilterType::New();
+ filter->SetInputVVImage(mCurrentImage);
+ filter->SetArgsInfo(mArgsInfo);
+
+ // Go ! (not threaded)
+ try{
+ filter->Update();
+ }
+ catch(clitk::ExceptionObject & e) {
+ // DD(e.what());
+ QApplication::restoreOverrideCursor();
+ close();
+ }
+
+ // Retrieve result and display it
+ vvImage::Pointer output = filter->GetOutputVVImage();
+ std::ostringstream osstream;
+ osstream << "Croped_" << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
+ AddImage(output,osstream.str());
+
+ // End
+ QApplication::restoreOverrideCursor();
+ close();
+
+ /**
+ // OLD approach with VTK