You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.8 KiB
C++
104 lines
2.8 KiB
C++
#include "PostGraphObjectPick.h"
|
|
|
|
#include "FITK_Interface/FITKVTKAlgorithm/FITKHighOrderCellFilter.h"
|
|
#include "FITK_Interface/FITKVTKAlgorithm/FITKGraphActor.h"
|
|
|
|
#include <vtkDataSet.h>
|
|
#include <vtkDataSetSurfaceFilter.h>
|
|
#include <vtkProperty.h>
|
|
#include <vtkMapper.h>
|
|
#include <vtkDataSetMapper.h>
|
|
#include <vtkPolyDataMapper.h>
|
|
#include <vtkUnstructuredGrid.h>
|
|
|
|
namespace Interface
|
|
{
|
|
PostGraphObjectPick::PostGraphObjectPick(FITKAbstractCFDPostData * postData, Comp::FITKGraph3DWindowVTK * graph3DWidget) :
|
|
PostGraphObjectBase(postData, graph3DWidget)
|
|
{
|
|
_actor = vtkActor::New();
|
|
_actor->GetProperty()->SetColor(1, 0, 0);
|
|
_actor->GetProperty()->SetPointSize(10);
|
|
_actor->GetProperty()->SetLineWidth(3);
|
|
|
|
_grid = vtkUnstructuredGrid::New();
|
|
|
|
_mapper = vtkDataSetMapper::New();
|
|
_mapper->SetInputData(_grid);
|
|
|
|
_actor->SetMapper(_mapper);
|
|
_actor->SetPickable(false);
|
|
|
|
this->addActor(_actor);
|
|
}
|
|
|
|
PostGraphObjectPick::~PostGraphObjectPick()
|
|
{
|
|
if (_actor) {
|
|
_actor->Delete();
|
|
_actor = nullptr;
|
|
}
|
|
}
|
|
|
|
void PostGraphObjectPick::setPickeData(vtkUnstructuredGrid* grid)
|
|
{
|
|
_pickGrid = grid;
|
|
}
|
|
|
|
void PostGraphObjectPick::setPickedType(int type)
|
|
{
|
|
if (_actor == nullptr)return;
|
|
if (type == 1)
|
|
{
|
|
// Points.
|
|
_actor->GetProperty()->SetRepresentation(0);
|
|
_actor->GetProperty()->SetVertexVisibility(true);
|
|
_actor->GetProperty()->SetEdgeVisibility(false);
|
|
_actor->GetProperty()->SetOpacity(1.);
|
|
}
|
|
else if (type == 2)
|
|
{
|
|
//// Cell
|
|
//_actor->GetProperty()->SetRepresentation(1);
|
|
//_actor->GetProperty()->SetVertexVisibility(false);
|
|
//_actor->GetProperty()->SetEdgeVisibility(true);
|
|
_actor->GetProperty()->SetOpacity(1.);
|
|
_actor->GetProperty()->SetRepresentationToSurface();
|
|
_actor->GetProperty()->EdgeVisibilityOff();
|
|
}
|
|
}
|
|
|
|
void PostGraphObjectPick::setVisible(bool visibility)
|
|
{
|
|
if (_actor){
|
|
_actor->SetVisibility(visibility);
|
|
}
|
|
}
|
|
|
|
void PostGraphObjectPick::setColor(QColor color)
|
|
{
|
|
// Set the actor color.
|
|
if (_actor && color.isValid()){
|
|
double color3[3]{ 0., 0., 0. };
|
|
color3[0] = color.redF();
|
|
color3[1] = color.greenF();
|
|
color3[2] = color.blueF();
|
|
_actor->GetProperty()->SetColor(color3);
|
|
}
|
|
}
|
|
|
|
void PostGraphObjectPick::update()
|
|
{
|
|
if (_mapper == nullptr || _pickGrid == nullptr || _grid == nullptr)return;
|
|
|
|
_grid->DeepCopy(_pickGrid);
|
|
_mapper->Update();
|
|
}
|
|
|
|
int PostGraphObjectPick::getRenderLayer()
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|