Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.4 KiB

2 years ago
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkImageCityBlockDistance.h,v $
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 vtkImageCityBlockDistance - 1,2 or 3D distance map.
// .SECTION Description
// vtkImageCityBlockDistance creates a distance map using the city block
// (Manhatten) distance measure. The input is a mask. Zero values are
// considered boundaries. The output pixel is the minimum of the input pixel
// and the distance to a boundary (or neighbor value + 1 unit).
// distance values are calculated in pixels.
// The filter works by taking 6 passes (for 3d distance map): 2 along each
// axis (forward and backward). Each pass keeps a running minimum distance.
// For some reason, I preserve the sign if the distance. If the input
// mask is initially negative, the output distances will be negative.
// Distances maps can have inside (negative regions)
// and outsides (positive regions).
#ifndef __vtkImageCityBlockDistance_h
#define __vtkImageCityBlockDistance_h
#include "vtkImageDecomposeFilter.h"
class VTK_IMAGING_EXPORT vtkImageCityBlockDistance : public vtkImageDecomposeFilter
{
public:
static vtkImageCityBlockDistance *New();
vtkTypeRevisionMacro(vtkImageCityBlockDistance,vtkImageDecomposeFilter);
protected:
vtkImageCityBlockDistance();
~vtkImageCityBlockDistance() {};
virtual int IterativeRequestUpdateExtent(vtkInformation* in,
vtkInformation* out);
virtual int IterativeRequestData(vtkInformation*,
vtkInformationVector**,
vtkInformationVector*);
void AllocateOutputScalars(vtkImageData *outData,
int* updateExtent,
int* wholeExtent);
private:
vtkImageCityBlockDistance(const vtkImageCityBlockDistance&); // Not implemented.
void operator=(const vtkImageCityBlockDistance&); // Not implemented.
};
#endif