Files
ThirdParty-6/ParaView-5.0.1/VTK/IO/SQL/vtkSQLGraphReader.h

156 lines
5.2 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkSQLGraphReader.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 vtkSQLGraphReader - read a vtkGraph from a database
//
// .SECTION Description
//
// Creates a vtkGraph using one or two vtkSQLQuery's. The first (required)
// query must have one row for each arc in the graph.
// The query must have two columns which represent the source and target
// node ids.
//
// The second (optional) query has one row for each node in the graph.
// The table must have a field whose values match those in the arc table.
// If the node table is not given,
// a node will be created for each unique source or target identifier
// in the arc table.
//
// The source, target, and node ID fields must be of the same type,
// and must be either vtkStringArray or a subclass of vtkDataArray.
//
// All columns in the queries, including the source, target, and node index
// fields, are copied into the arc data and node data of the resulting
// vtkGraph. If the node query is not given, the node data will contain
// a single "id" column with the same type as the source/target id arrays.
//
// If parallel arcs are collected, not all the arc data is not copied into
// the output. Only the source and target id arrays will be transferred.
// An additional vtkIdTypeArray column called "weight" is created which
// contains the number of times each arc appeared in the input.
//
// If the node query contains positional data, the user may specify the
// names of these fields.
// These arrays must be data arrays. The z-coordinate array is optional,
// and if not given the z-coordinates are set to zero.
#ifndef vtkSQLGraphReader_h
#define vtkSQLGraphReader_h
#include "vtkIOSQLModule.h" // For export macro
#include "vtkGraphAlgorithm.h"
class vtkSQLQuery;
class VTKIOSQL_EXPORT vtkSQLGraphReader : public vtkGraphAlgorithm
{
public:
static vtkSQLGraphReader* New();
vtkTypeMacro(vtkSQLGraphReader,vtkGraphAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// When set, creates a directed graph, as opposed to an undirected graph.
vtkSetMacro(Directed, bool);
vtkGetMacro(Directed, bool);
vtkBooleanMacro(Directed, bool);
// Description:
// The query that retrieves the node information.
virtual void SetVertexQuery(vtkSQLQuery* q);
vtkGetObjectMacro(VertexQuery, vtkSQLQuery);
// Description:
// The query that retrieves the arc information.
virtual void SetEdgeQuery(vtkSQLQuery* q);
vtkGetObjectMacro(EdgeQuery, vtkSQLQuery);
// Description:
// The name of the field in the arc query for the source node of each arc.
vtkSetStringMacro(SourceField);
vtkGetStringMacro(SourceField);
// Description:
// The name of the field in the arc query for the target node of each arc.
vtkSetStringMacro(TargetField);
vtkGetStringMacro(TargetField);
// Description:
// The name of the field in the node query for the node ID.
vtkSetStringMacro(VertexIdField);
vtkGetStringMacro(VertexIdField);
// Description:
// The name of the field in the node query for the node's x coordinate.
vtkSetStringMacro(XField);
vtkGetStringMacro(XField);
// Description:
// The name of the field in the node query for the node's y coordinate.
vtkSetStringMacro(YField);
vtkGetStringMacro(YField);
// Description:
// The name of the field in the node query for the node's z coordinate.
vtkSetStringMacro(ZField);
vtkGetStringMacro(ZField);
// Description:
// When set, creates a graph with no parallel arcs.
// Parallel arcs are combined into one arc.
// No cell fields are passed to the output, except the vtkGhostType array if
// it exists, but a new field "weight" is created that holds the number of
// duplicates of that arc in the input.
vtkSetMacro(CollapseEdges, bool);
vtkGetMacro(CollapseEdges, bool);
vtkBooleanMacro(CollapseEdges, bool);
protected:
vtkSQLGraphReader();
~vtkSQLGraphReader();
bool Directed;
bool CollapseEdges;
vtkSQLQuery* EdgeQuery;
vtkSQLQuery* VertexQuery;
char* SourceField;
char* TargetField;
char* VertexIdField;
char* XField;
char* YField;
char* ZField;
virtual int RequestData(
vtkInformation*,
vtkInformationVector**,
vtkInformationVector*);
virtual int RequestDataObject(
vtkInformation*,
vtkInformationVector**,
vtkInformationVector*);
private:
vtkSQLGraphReader(const vtkSQLGraphReader&); // Not implemented
void operator=(const vtkSQLGraphReader&); // Not implemented
};
#endif