Files
ThirdParty-6/ParaView-5.0.1/VTK/Infovis/BoostGraphAlgorithms/vtkBoostBreadthFirstSearch.h

146 lines
5.0 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkBoostBreadthFirstSearch.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm 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.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2008 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
// .NAME vtkBoostBreadthFirstSearch - Boost breadth_first_search on a vtkGraph
//
// .SECTION Description
//
// This vtk class uses the Boost breadth_first_search
// generic algorithm to perform a breadth first search from a given
// a 'source' vertex on the input graph (a vtkGraph).
//
// .SECTION See Also
// vtkGraph vtkBoostGraphAdapter
#ifndef vtkBoostBreadthFirstSearch_h
#define vtkBoostBreadthFirstSearch_h
#include "vtkInfovisBoostGraphAlgorithmsModule.h" // For export macro
#include "vtkStdString.h" // For string type
#include "vtkVariant.h" // For variant type
#include "vtkGraphAlgorithm.h"
class vtkSelection;
class VTKINFOVISBOOSTGRAPHALGORITHMS_EXPORT vtkBoostBreadthFirstSearch : public vtkGraphAlgorithm
{
public:
static vtkBoostBreadthFirstSearch *New();
vtkTypeMacro(vtkBoostBreadthFirstSearch, vtkGraphAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Convenience methods for setting the origin selection input.
void SetOriginSelection(vtkSelection *s);
void SetOriginSelectionConnection(vtkAlgorithmOutput* algOutput)
{
this->SetInputConnection(1, algOutput);
}
// Description:
// Set the index (into the vertex array) of the
// breadth first search 'origin' vertex.
void SetOriginVertex(vtkIdType index);
// Description:
// Set the breadth first search 'origin' vertex.
// This method is basically the same as above
// but allows the application to simply specify
// an array name and value, instead of having to
// know the specific index of the vertex.
void SetOriginVertex(vtkStdString arrayName, vtkVariant value);
// Description:
// Convenience method for setting the origin vertex
// given an array name and string value.
// This method is primarily for the benefit of the
// VTK Parallel client/server layer, callers should
// prefer to use SetOriginVertex() whenever possible.
void SetOriginVertexString(char* arrayName, char* value);
// Description:
// Set the output array name. If no output array name is
// set then the name 'BFS' is used.
vtkSetStringMacro(OutputArrayName);
// Description:
// Use the vtkSelection from input port 1 as the origin vertex.
// The selection should be a IDS selection with field type POINTS.
// The first ID in the selection will be used for the origin vertex.
// Default is off (origin is specified by SetOriginVertex(...)).
vtkSetMacro(OriginFromSelection, bool);
vtkGetMacro(OriginFromSelection, bool);
vtkBooleanMacro(OriginFromSelection, bool);
// Description:
// Create an output selection containing the ID of a vertex based
// on the output selection type. The default is to use the
// the maximum distance from the starting vertex. Defaults to off.
vtkGetMacro(OutputSelection, bool);
vtkSetMacro(OutputSelection, bool);
vtkBooleanMacro(OutputSelection, bool);
// Description:
// Set the output selection type. The default is to use the
// the maximum distance from the starting vertex "MAX_DIST_FROM_ROOT".
// But you can also specify other things like "ROOT","2D_MAX", etc
vtkSetStringMacro(OutputSelectionType);
protected:
vtkBoostBreadthFirstSearch();
~vtkBoostBreadthFirstSearch();
virtual int RequestData(
vtkInformation *,
vtkInformationVector **,
vtkInformationVector *);
virtual int FillInputPortInformation(
int port, vtkInformation* info);
virtual int FillOutputPortInformation(
int port, vtkInformation* info);
private:
vtkIdType OriginVertexIndex;
char* InputArrayName;
char* OutputArrayName;
vtkVariant OriginValue;
bool OutputSelection;
bool OriginFromSelection;
char* OutputSelectionType;
// Description:
// Using the convenience function internally
vtkSetStringMacro(InputArrayName);
// Description:
// This method is basically a helper function to find
// the index of a specific value within a specific array
vtkIdType GetVertexIndex(
vtkAbstractArray *abstract,vtkVariant value);
vtkBoostBreadthFirstSearch(const vtkBoostBreadthFirstSearch&); // Not implemented.
void operator=(const vtkBoostBreadthFirstSearch&); // Not implemented.
};
#endif