/usr/include/paraview/vtkIntersectFragments.h is in paraview-dev 5.0.1+dfsg1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | /*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile$
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.
=========================================================================*/
// .NAME vtkIntersectFragments - Geometry intersection operations.
// .SECTION Description
// TODO
#ifndef vtkIntersectFragments_h
#define vtkIntersectFragments_h
#include "vtkPVVTKExtensionsDefaultModule.h" //needed for exports
#include "vtkMultiBlockDataSetAlgorithm.h"
#include <vector>//
#include <string>//
class vtkPolyData;
//class vtkMultiBlockDataSet;
class vtkPoints;
class vtkDoubleArray;
class vtkIntArray;
class vtkImplicitFunction;
class vtkMultiProcessController;
class vtkMaterialInterfaceCommBuffer;
class vtkCutter;
class VTKPVVTKEXTENSIONSDEFAULT_EXPORT vtkIntersectFragments : public vtkMultiBlockDataSetAlgorithm
{
public:
static vtkIntersectFragments *New();
vtkTypeMacro(vtkIntersectFragments,vtkMultiBlockDataSetAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
/// PARAVIEW interface stuff
// Description
// Specify the implicit function to perform the cutting.
virtual void SetCutFunction(vtkImplicitFunction*);
vtkGetObjectMacro(CutFunction,vtkImplicitFunction);
// Description:
// Specify the geometry Input.
void SetGeometryInputConnection(vtkAlgorithmOutput* algOutput);
// Description:
// Specify the geometry Input.
void SetStatisticsInputConnection(vtkAlgorithmOutput* algOutput);
// Description:
// Override GetMTime because we refer to vtkImplicitFunction.
unsigned long GetMTime();
protected:
vtkIntersectFragments();
~vtkIntersectFragments();
//BTX
/// pipeline
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
virtual int FillInputPortInformation(int port, vtkInformation *info);
virtual int FillOutputPortInformation(int port, vtkInformation *info);
///
// Make list of what we own
int IdentifyLocalFragments();
// Copy structure from multi block of polydata.
int CopyInputStructureStats(
vtkMultiBlockDataSet *dest,
vtkMultiBlockDataSet *src);
// Copy structure from mutli block of multi piece
int CopyInputStructureGeom(
vtkMultiBlockDataSet *dest,
vtkMultiBlockDataSet *src);
//
int PrepareToProcessRequest();
//
int Intersect();
// Build arrays that describe which fragment
// intersections are not empty.
void BuildLoadingArray(
std::vector<vtkIdType> &loadingArray,
int blockId);
int PackLoadingArray(vtkIdType *&buffer, int blockId);
int UnPackLoadingArray(
vtkIdType *buffer,
int bufSize,
std::vector<vtkIdType> &loadingArray,
int blockId);
//
void ComputeGeometricAttributes();
// Send my geometric attribuites to a single process.
int SendGeometricAttributes(const int recipientProcId);
// size buffers & new containers
int PrepareToCollectGeometricAttributes(
std::vector<vtkMaterialInterfaceCommBuffer> &buffers,
std::vector<std::vector<vtkDoubleArray *> >¢ers,
std::vector<std::vector<int *> >&ids);
// Free resources.
int CleanUpAfterCollectGeometricAttributes(
std::vector<vtkMaterialInterfaceCommBuffer> &buffers,
std::vector<std::vector<vtkDoubleArray *> >¢ers,
std::vector<std::vector<int *> >&ids);
// Recieve all geometric attributes from all other
// processes.
int CollectGeometricAttributes(
std::vector<vtkMaterialInterfaceCommBuffer> &buffers,
std::vector<std::vector<vtkDoubleArray *> >¢ers,
std::vector<std::vector<int *> >&ids);
// size local copy to hold all.
int PrepareToMergeGeometricAttributes(
std::vector<std::vector<int> >&unique);
// Gather geometric attributes on a single process.
int GatherGeometricAttributes(const int recipientProcId);
// Copy attributes from input to output
int CopyAttributesToStatsOutput(const int controllingProcId);
//
int CleanUpAfterRequest();
/// data
//
vtkMultiProcessController* Controller;
// Global ids of what we own before the intersection.
std::vector<std::vector<int> >FragmentIds;
// Centers, and global fragment ids.
// an array for each block.
std::vector<vtkDoubleArray *>IntersectionCenters;
std::vector<std::vector<int> >IntersectionIds;
//
vtkCutter *Cutter;
// data in/out
vtkMultiBlockDataSet *GeomIn;
vtkMultiBlockDataSet *GeomOut;
vtkMultiBlockDataSet *StatsIn;
vtkMultiBlockDataSet *StatsOut;
int NBlocks;
// only used on controller.
std::vector<int> NFragmentsIntersected;
/// PARAVIEW interface data
vtkImplicitFunction *CutFunction;
double Progress;
double ProgressIncrement;
private:
vtkIntersectFragments(const vtkIntersectFragments&); // Not implemented.
void operator=(const vtkIntersectFragments&); // Not implemented.
//ETX
};
#endif
|