mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
181 lines
6.8 KiB
C++
181 lines
6.8 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkPointGaussianRepresentation.h
|
|
|
|
Copyright (c) Kitware, Inc.
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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 vtkPointGaussianRepresentation
|
|
// .SECTION Description
|
|
// Representation for showing point data as sprites, including gaussian
|
|
// splats, spheres, or some custom shaded representation.
|
|
|
|
#ifndef vtkPointGaussianRepresentation_h
|
|
#define vtkPointGaussianRepresentation_h
|
|
|
|
#include "vtkPVDataRepresentation.h"
|
|
#include "vtkSmartPointer.h" // needed for smart pointer
|
|
#include "vtkPVClientServerCoreRenderingModule.h" // needed for exports
|
|
|
|
class vtkActor;
|
|
class vtkPointGaussianMapper;
|
|
class vtkScalarsToColors;
|
|
class vtkPolyData;
|
|
class vtkPiecewiseFunction;
|
|
|
|
class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkPointGaussianRepresentation : public vtkPVDataRepresentation
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkPointGaussianRepresentation, vtkPVDataRepresentation)
|
|
static vtkPointGaussianRepresentation* New();
|
|
virtual void PrintSelf(ostream &os, vtkIndent indent);
|
|
|
|
virtual int ProcessViewRequest(vtkInformationRequestKey *request_type,
|
|
vtkInformation *inInfo,
|
|
vtkInformation *outInfo);
|
|
|
|
// Description:
|
|
// Use to set the color map for the data in this representation
|
|
void SetLookupTable(vtkScalarsToColors* lut);
|
|
|
|
// Description:
|
|
// Use to set whether the data in this representation is visible or not
|
|
virtual void SetVisibility(bool val);
|
|
|
|
// Description:
|
|
// Use to set whether the splat emits light
|
|
virtual void SetEmissive(bool val);
|
|
|
|
// Description:
|
|
// Use to make sure scalars will be mapped through lookup table, and not
|
|
// inadvertently used as colors by themselves.
|
|
virtual void SetMapScalars(int val);
|
|
|
|
//***************************************************************************
|
|
// Forwarded to Actor.
|
|
virtual void SetOrientation(double, double, double);
|
|
virtual void SetOrigin(double, double, double);
|
|
virtual void SetPickable(int val);
|
|
virtual void SetPosition(double, double, double);
|
|
virtual void SetScale(double, double, double);
|
|
|
|
//***************************************************************************
|
|
// Forwarded to Actor->GetProperty()
|
|
virtual void SetAmbientColor(double r, double g, double b);
|
|
virtual void SetColor(double r, double g, double b);
|
|
virtual void SetDiffuseColor(double r, double g, double b);
|
|
virtual void SetEdgeColor(double r, double g, double b);
|
|
virtual void SetInterpolation(int val);
|
|
virtual void SetLineWidth(double val);
|
|
virtual void SetOpacity(double val);
|
|
virtual void SetPointSize(double val);
|
|
virtual void SetSpecularColor(double r, double g, double b);
|
|
virtual void SetSpecularPower(double val);
|
|
|
|
// Description:
|
|
// Sets the radius of the gaussian splats if there is no scale array or if
|
|
// the scale array is disabled. Defaults to 1.
|
|
virtual void SetSplatSize(double radius);
|
|
|
|
// Description:
|
|
// An enum specifying some preset fragment shaders
|
|
enum ShaderPresets
|
|
{
|
|
GAUSSIAN_BLUR, // This is the default
|
|
SPHERE, // Points shaded to look (something) like a sphere lit from the view direction
|
|
BLACK_EDGED_CIRCLE, // Camera facing, flat circle, rimmed in black
|
|
PLAIN_CIRCLE, // Same as above, but without the black edge
|
|
TRIANGLE, // Camera facing, flat triangle
|
|
SQUARE_OUTLINE, // Camera facing, flat square, with empty center
|
|
NUMBER_OF_PRESETS // !!! THIS MUST ALWAYS BE THE LAST PRESET ENUM !!!
|
|
};
|
|
|
|
// Description:
|
|
// Allows to select one of several preset options for shading the points
|
|
void SelectShaderPreset(int preset);
|
|
|
|
// Description:
|
|
// Sets the snippet of fragment shader code used to color the sprites.
|
|
void SetCustomShader(const char* shaderString);
|
|
|
|
// Description:
|
|
// Sets the point array to scale the guassians by. The array should be a
|
|
// float array. The first four parameters are unused and only needed for
|
|
// the ParaView GUI's signature recognition.
|
|
void SelectScaleArray(int, int, int, int, const char* name);
|
|
|
|
// Description:
|
|
// Sets a vtkPiecewiseFunction to use in mapping array values to sprite
|
|
// sizes. Performance decreases (along with understandability) when
|
|
// large values are used for sprite sizes. This is only used when
|
|
// "SetScaleArray" is also set.
|
|
void SetScaleTransferFunction(vtkPiecewiseFunction* pwf);
|
|
|
|
// Description:
|
|
// Sets a vtkPiecewiseFunction to use in mapping array values to sprite
|
|
// opacities. Only used when "Opacity Array" is set.
|
|
void SetOpacityTransferFunction(vtkPiecewiseFunction* pwf);
|
|
|
|
// Description:
|
|
// Sets the point array to use in calculating point sprite opacities.
|
|
// The array should be a float or double array. The first four
|
|
// parameters are unused and only needed for the ParaView GUI's
|
|
// signature recognition.
|
|
void SelectOpacityArray(int, int, int, int, const char* name);
|
|
|
|
// Description:
|
|
// Enables or disables setting opacity by an array. Set which array
|
|
// should be used for opacity with SelectOpacityArray, and set an
|
|
// opacity transfer function with SetOpacityTransferFunction.
|
|
void SetOpacityByArray(bool newVal);
|
|
vtkGetMacro(OpacityByArray, bool);
|
|
vtkBooleanMacro(OpacityByArray, bool);
|
|
|
|
// Description:
|
|
// Enables or disables scaling by a data array vs. a constant factor. Set
|
|
// which data array with SelectScaleArray and SetSplatSize.
|
|
void SetScaleByArray(bool newVal);
|
|
vtkGetMacro(ScaleByArray, bool);
|
|
vtkBooleanMacro(ScaleByArray, bool);
|
|
|
|
protected:
|
|
vtkPointGaussianRepresentation();
|
|
virtual ~vtkPointGaussianRepresentation();
|
|
|
|
virtual bool AddToView(vtkView *view);
|
|
virtual bool RemoveFromView(vtkView *view);
|
|
|
|
virtual int FillInputPortInformation(int port, vtkInformation* info);
|
|
virtual int RequestData(vtkInformation *, vtkInformationVector **,
|
|
vtkInformationVector *);
|
|
|
|
vtkSmartPointer< vtkActor > Actor;
|
|
vtkSmartPointer< vtkPointGaussianMapper > Mapper;
|
|
vtkSmartPointer< vtkPolyData > ProcessedData;
|
|
|
|
void UpdateColoringParameters();
|
|
|
|
bool ScaleByArray;
|
|
char* LastScaleArray;
|
|
|
|
vtkSetStringMacro(LastScaleArray);
|
|
|
|
bool OpacityByArray;
|
|
char* LastOpacityArray;
|
|
|
|
vtkSetStringMacro(LastOpacityArray);
|
|
|
|
private:
|
|
vtkPointGaussianRepresentation(const vtkPointGaussianRepresentation&); // Not implemented
|
|
void operator=(const vtkPointGaussianRepresentation&); // Not implemented
|
|
};
|
|
|
|
#endif // vtkPointGaussianRepresentation_h
|