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.

133 lines
4.4 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkStaticCellLinks.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.
=========================================================================*/
/**
* @class vtkStaticCellLinks
* @brief object represents upward pointers from points
* to list of cells using each point
*
* vtkStaticCellLinks is a supplemental object to vtkCellArray and
* vtkCellTypes, enabling access from points to the cells using the
* points. vtkStaticCellLinks is an array of links, each link represents a
* list of cell ids using a particular point. The information provided by
* this object can be used to determine cell neighbors and construct other
* local topological information. This class is a faster implementation of
* vtkCellLinks. However, it cannot be incrementally constructed; it is meant
* to be constructed once (statically) and must be rebuilt if the cells
* change.
*
* @warning
* This is a drop-in replacement for vtkCellLinks using static link
* construction. It uses the templated vtkStaticCellLinksTemplate class,
* instantiating vtkStaticCellLinksTemplate with a vtkIdType template
* parameter. Note that for best performance, the vtkStaticCellLinksTemplate
* class may be used directly, instantiating it with the appropriate id
* type. This class is also wrappable and can be used from an interpreted
* language such as Python.
*
* @sa
* vtkCellLinks vtkStaticCellLinksTemplate
*/
#ifndef vtkStaticCellLinks_h
#define vtkStaticCellLinks_h
#include "vtkAbstractCellLinks.h"
#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkStaticCellLinksTemplate.h" // For implementations
class vtkDataSet;
class vtkCellArray;
class VTKCOMMONDATAMODEL_EXPORT vtkStaticCellLinks : public vtkAbstractCellLinks
{
public:
//@{
/**
* Standard methods for instantiation, type manipulation and printing.
*/
static vtkStaticCellLinks* New();
vtkTypeMacro(vtkStaticCellLinks, vtkAbstractCellLinks);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@}
/**
* Build the link list array. Satisfy the superclass API.
*/
void BuildLinks(vtkDataSet* ds) override
{
this->Impl->SetSequentialProcessing(this->SequentialProcessing);
this->Impl->BuildLinks(ds);
}
/**
* Get the number of cells using the point specified by ptId.
*/
vtkIdType GetNumberOfCells(vtkIdType ptId) { return this->Impl->GetNumberOfCells(ptId); }
/**
* Get the number of cells using the point specified by ptId. This is an
* alias for GetNumberOfCells(); consistent with the vtkCellLinks API.
*/
vtkIdType GetNcells(vtkIdType ptId) { return this->Impl->GetNumberOfCells(ptId); }
/**
* Return a list of cell ids using the specified point.
*/
vtkIdType* GetCells(vtkIdType ptId) { return this->Impl->GetCells(ptId); }
/**
* Make sure any previously created links are cleaned up.
*/
void Initialize() override { this->Impl->Initialize(); }
/**
* Reclaim any unused memory.
*/
void Squeeze() override {}
/**
* Reset to a state of no entries without freeing the memory.
*/
void Reset() override {}
/**
* Return the memory in kibibytes (1024 bytes) consumed by this cell links array.
* Used to support streaming and reading/writing data. The value
* returned is guaranteed to be greater than or equal to the memory
* required to actually represent the data represented by this object.
* The information returned is valid only after the pipeline has
* been updated.
*/
unsigned long GetActualMemorySize() override { return this->Impl->GetActualMemorySize(); }
/**
* Standard DeepCopy method. Since this object contains no reference
* to other objects, there is no ShallowCopy.
*/
void DeepCopy(vtkAbstractCellLinks* src) override { this->Impl->DeepCopy(src); }
protected:
vtkStaticCellLinks();
~vtkStaticCellLinks() override;
vtkStaticCellLinksTemplate<vtkIdType>* Impl;
private:
vtkStaticCellLinks(const vtkStaticCellLinks&) = delete;
void operator=(const vtkStaticCellLinks&) = delete;
};
#endif