mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
283 lines
10 KiB
C++
283 lines
10 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkSelectionRepresentation.cxx
|
|
|
|
Copyright (c) Kitware, Inc.
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
#include "vtkSelectionRepresentation.h"
|
|
|
|
#include "vtkDataLabelRepresentation.h"
|
|
#include "vtkGeometryRepresentation.h"
|
|
#include "vtkInformation.h"
|
|
#include "vtkLabeledDataMapper.h"
|
|
#include "vtkMemberFunctionCommand.h"
|
|
#include "vtkObjectFactory.h"
|
|
#include "vtkView.h"
|
|
|
|
vtkStandardNewMacro(vtkSelectionRepresentation);
|
|
vtkCxxSetObjectMacro(vtkSelectionRepresentation, LabelRepresentation,
|
|
vtkDataLabelRepresentation);
|
|
//----------------------------------------------------------------------------
|
|
vtkSelectionRepresentation::vtkSelectionRepresentation()
|
|
{
|
|
this->GeometryRepresentation = vtkGeometryRepresentation::New();
|
|
this->GeometryRepresentation->SetPickable(0);
|
|
this->GeometryRepresentation->SetDebugString("vtkSelectionRepresentation");
|
|
this->GeometryRepresentation->RequestGhostCellsIfNeededOff();
|
|
|
|
this->LabelRepresentation = vtkDataLabelRepresentation::New();
|
|
this->LabelRepresentation->SetPointLabelMode(VTK_LABEL_FIELD_DATA);
|
|
this->LabelRepresentation->SetCellLabelMode(VTK_LABEL_FIELD_DATA);
|
|
|
|
vtkCommand* observer = vtkMakeMemberFunctionCommand(*this,
|
|
&vtkSelectionRepresentation::TriggerUpdateDataEvent);
|
|
this->GeometryRepresentation->AddObserver(vtkCommand::UpdateDataEvent,
|
|
observer);
|
|
this->LabelRepresentation->AddObserver(vtkCommand::UpdateDataEvent,
|
|
observer);
|
|
observer->Delete();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkSelectionRepresentation::~vtkSelectionRepresentation()
|
|
{
|
|
this->GeometryRepresentation->Delete();
|
|
this->LabelRepresentation->Delete();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetInputConnection(
|
|
int port, vtkAlgorithmOutput* input)
|
|
{
|
|
this->GeometryRepresentation->SetInputConnection(port, input);
|
|
this->LabelRepresentation->SetInputConnection(port, input);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetInputConnection(vtkAlgorithmOutput* input)
|
|
{
|
|
this->GeometryRepresentation->SetInputConnection(input);
|
|
this->LabelRepresentation->SetInputConnection(input);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::AddInputConnection(
|
|
int port, vtkAlgorithmOutput* input)
|
|
{
|
|
this->GeometryRepresentation->AddInputConnection(port, input);
|
|
this->LabelRepresentation->AddInputConnection(port, input);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::AddInputConnection(vtkAlgorithmOutput* input)
|
|
{
|
|
this->GeometryRepresentation->AddInputConnection(input);
|
|
this->LabelRepresentation->AddInputConnection(input);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::RemoveInputConnection(
|
|
int port, vtkAlgorithmOutput* input)
|
|
{
|
|
this->GeometryRepresentation->RemoveInputConnection(port, input);
|
|
this->LabelRepresentation->RemoveInputConnection(port, input);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::RemoveInputConnection(
|
|
int port, int idx)
|
|
{
|
|
this->GeometryRepresentation->RemoveInputConnection(port, idx);
|
|
this->LabelRepresentation->RemoveInputConnection(port, idx);
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
int vtkSelectionRepresentation::FillInputPortInformation(
|
|
int vtkNotUsed(port), vtkInformation* info)
|
|
{
|
|
info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkDataObject");
|
|
info->Set(vtkAlgorithm::INPUT_IS_OPTIONAL(), 1);
|
|
return 1;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetUpdateTime(double val)
|
|
{
|
|
this->GeometryRepresentation->SetUpdateTime(val);
|
|
this->LabelRepresentation->SetUpdateTime(val);
|
|
this->Superclass::SetUpdateTime(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetForceUseCache(bool val)
|
|
{
|
|
this->GeometryRepresentation->SetForceUseCache(val);
|
|
this->LabelRepresentation->SetForceUseCache(val);
|
|
this->Superclass::SetForceUseCache(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetForcedCacheKey(double val)
|
|
{
|
|
this->GeometryRepresentation->SetForcedCacheKey(val);
|
|
this->LabelRepresentation->SetForcedCacheKey(val);
|
|
this->Superclass::SetForcedCacheKey(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool vtkSelectionRepresentation::AddToView(vtkView* view)
|
|
{
|
|
view->AddRepresentation(this->GeometryRepresentation);
|
|
view->AddRepresentation(this->LabelRepresentation);
|
|
return this->Superclass::AddToView(view);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool vtkSelectionRepresentation::RemoveFromView(vtkView* view)
|
|
{
|
|
view->RemoveRepresentation(this->GeometryRepresentation);
|
|
view->RemoveRepresentation(this->LabelRepresentation);
|
|
return this->Superclass::RemoveFromView(view);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::MarkModified()
|
|
{
|
|
this->GeometryRepresentation->MarkModified();
|
|
this->LabelRepresentation->MarkModified();
|
|
this->Superclass::MarkModified();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::TriggerUpdateDataEvent()
|
|
{
|
|
//we need to mark the geometry as always needing to be moved. The reason
|
|
//is that in client server mode and the first interaction with the renderer
|
|
//is a selection the geometryrepr is properly marked for modification.
|
|
//this shouldn't degrade preformance as the geometryRepr in most other
|
|
//cases is already dirty ( Bug #11587)
|
|
this->GeometryRepresentation->MarkModified();
|
|
|
|
// We fire UpdateDataEvent to notify the representation proxy that the
|
|
// representation was updated. The representation proxty will then call
|
|
// PostUpdateData(). We do this since now representations are not updated at
|
|
// the proxy level.
|
|
this->InvokeEvent(vtkCommand::UpdateDataEvent);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::PrintSelf(ostream& os, vtkIndent indent)
|
|
{
|
|
this->Superclass::PrintSelf(os, indent);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetColor(double r, double g, double b)
|
|
{
|
|
this->GeometryRepresentation->SetColor(r, g, b);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetLineWidth(double val)
|
|
{
|
|
this->GeometryRepresentation->SetLineWidth(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetOpacity(double val)
|
|
{
|
|
this->GeometryRepresentation->SetOpacity(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetPointSize(double val)
|
|
{
|
|
this->GeometryRepresentation->SetPointSize(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetVisibility(bool val)
|
|
{
|
|
this->GeometryRepresentation->SetVisibility(val);
|
|
this->LabelRepresentation->SetVisibility(val);
|
|
this->Superclass::SetVisibility(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetUseOutline(int val)
|
|
{
|
|
this->GeometryRepresentation->SetUseOutline(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetRepresentation(int val)
|
|
{
|
|
this->GeometryRepresentation->SetRepresentation(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetOrientation(double x, double y, double z)
|
|
{
|
|
this->GeometryRepresentation->SetOrientation(x, y, z);
|
|
this->LabelRepresentation->SetOrientation(x, y, z);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetOrigin(double x, double y, double z)
|
|
{
|
|
this->GeometryRepresentation->SetOrigin(x, y, z);
|
|
this->LabelRepresentation->SetOrigin(x, y, z);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetPosition(double x, double y, double z)
|
|
{
|
|
this->GeometryRepresentation->SetPosition(x, y, z);
|
|
this->LabelRepresentation->SetPosition(x, y, z);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetScale(double x, double y, double z)
|
|
{
|
|
this->GeometryRepresentation->SetScale(x, y, z);
|
|
this->LabelRepresentation->SetScale(x, y, z);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetUserTransform(const double matrix[16])
|
|
{
|
|
this->GeometryRepresentation->SetUserTransform(matrix);
|
|
this->LabelRepresentation->SetUserTransform(matrix);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetPointFieldDataArrayName(const char* val)
|
|
{
|
|
this->LabelRepresentation->SetPointFieldDataArrayName(val);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkSelectionRepresentation::SetCellFieldDataArrayName(const char* val)
|
|
{
|
|
this->LabelRepresentation->SetCellFieldDataArrayName(val);
|
|
}
|
|
//----------------------------------------------------------------------------
|
|
unsigned int vtkSelectionRepresentation::Initialize(unsigned int minIdAvailable,
|
|
unsigned int maxIdAvailable)
|
|
{
|
|
unsigned int minId = minIdAvailable;
|
|
minId = this->LabelRepresentation->Initialize(minId, maxIdAvailable);
|
|
minId = this->GeometryRepresentation->Initialize(minId, maxIdAvailable);
|
|
|
|
return this->Superclass::Initialize(minId, maxIdAvailable);
|
|
}
|