Example #1
0
/**
 * Trace a ray from clickPosition along the camera view direction and intersect
 * the image.
 * \param[in] clickPosition the click position in DISPLAY coordinates
 * \param[in] renderer the renderer from which to get the camera
 * \return the point where the ray intersects the image
 */
void PickerRep::pickLandmark(const Vector3D& clickPosition, vtkRendererPtr renderer)
{
	if (!this->mEnabled)
		return;
	vtkMultiVolumePickerPtr picker = vtkMultiVolumePickerPtr::New();
	int hit = picker->Pick(clickPosition[0], clickPosition[1], 0, renderer);
	if (!hit)
	{
		mIsDragging = false;
		return;
	}

	// search for picked data in manager, emit uid if found.
	vtkDataSetPtr data = picker->GetDataSet();
	if (data)
	{
		std::map<QString, DataPtr> allData = mDataManager->getData();
		for (std::map<QString, DataPtr>::iterator iter = allData.begin(); iter != allData.end(); ++iter)
		{
			MeshPtr mesh = boost::dynamic_pointer_cast<Mesh>(iter->second);
			if (mesh && mesh->getVtkPolyData() == data)
				emit dataPicked(iter->first);

			ImagePtr image = boost::dynamic_pointer_cast<Image>(iter->second);
			if (image && image->getBaseVtkImageData() == data)
				emit dataPicked(iter->first);
		}
	}

	Vector3D pick_w(picker->GetPickPosition());

	if ( data &&
		((mGraphicalPoint && (data == mGraphicalPoint->getPolyData() ))
	   ||(mGlyph          && (data == mGlyph->getVtkPolyData()       ))
	   ||(mTool           && (data == mTool->getGraphicsPolyData()   )))
	   )
	{
		// We have clicked the picker/tool itself.
		// Store click pos and wait for dragging.
		mClickedPoint = pick_w;
		mIsDragging = true;
		mCallbackCommand->SetAbortFlag(1); // abort this event: interactor does not receive it.
		return;
	}
	else
	{
		mIsDragging = false;
	}

	if (hit && mSnapToSurface)
	{
		mPickedPoint = pick_w;

		if (mGraphicalPoint)
			mGraphicalPoint->setValue(mPickedPoint);
		this->setGlyphCenter(mPickedPoint);

		emit pointPicked(mPickedPoint);
	}
}
Example #2
0
void PickerRep::OnMouseMove()
{
	if (mIsDragging)
	{
		mPickedPoint += this->getDisplacement();
		mClickedPoint = mPickedPoint;

		if (mGraphicalPoint)
			mGraphicalPoint->setValue(mPickedPoint);
		this->setGlyphCenter(mPickedPoint);
		emit pointPicked(mPickedPoint);

		mCallbackCommand->SetAbortFlag(1);
	}
}
    ui->lineEditTimeStep->setText("0.125");

    curvatureFilter = CurvatureFlowFilterType::New();
    connectedFilter = ConnectedThresholdFilterType::New();
    castToIntFilter = CastToIntFilterType::New();
}

ConnectedThresholdSegmentationDialog::~ConnectedThresholdSegmentationDialog()
{
    delete ui;
}

void ConnectedThresholdSegmentationDialog::setPickPointGraphicsScene(CustomGraphicsScene *graphicsScene)
{
    connect(ui->pushButtonPickPoint, SIGNAL(toggled(bool)), graphicsScene, SLOT(enablePick(bool)));
    connect(graphicsScene, SIGNAL(pointPicked(QPoint)), this, SLOT(updateSeedPoint(QPoint)));
}

void ConnectedThresholdSegmentationDialog::updateSeedPoint(QPoint point)
{
    ui->lineEditXSeed->setText(QString::number(point.x()));
    ui->lineEditYSeed->setText(QString::number(point.y()));
    ui->pushButtonPickPoint->setChecked(false);
}

void ConnectedThresholdSegmentationDialog::on_pushButtonApply_clicked()
{
    ImageLayer *imageLayer = ImageLayer::instance();

    int connectedLowerThreshold = ui->sliderLowerThreshold->value();
    int connectedUpperThreshold = ui->sliderUpperThreshold->value();