25 #ifndef vtkSurfaceLICComposite_h
26 #define vtkSurfaceLICComposite_h
29 #include "vtkRenderingLICOpenGL2Module.h"
55 const std::deque<vtkPixelExtent> &blockExts,
94 COMPOSITE_INPLACE_DISJOINT,
106 {
return static_cast<int>(this->CompositeExt.size()); }
113 {
return this->GuardExt[i]; }
116 {
return this->GuardExt; }
123 {
return this->DisjointGuardExt[i]; }
126 {
return this->GuardExt; }
133 {
return this->CompositeExt[i]; }
136 {
return this->CompositeExt; }
142 {
return this->DataSetExt; }
148 {
return this->WindowExt; }
204 std::deque<vtkPixelExtent> &in,
205 std::deque<vtkPixelExtent> &out);
220 const std::deque<vtkPixelExtent> &in,
221 std::deque<vtkPixelExtent> &out,
236 const std::deque<vtkPixelExtent> &exts,
238 std::vector<float> &vMax);
244 const std::deque<vtkPixelExtent> &exts,
245 std::deque<vtkPixelExtent> &guardExts,
246 std::deque<vtkPixelExtent> &disjointGuardExts,
269 std::deque<vtkPixelExtent> BlockExts;
271 std::deque<vtkPixelExtent> CompositeExt;
272 std::deque<vtkPixelExtent> GuardExt;
273 std::deque<vtkPixelExtent> DisjointGuardExt;
279 int NormalizeVectors;
280 int NumberOfGuardLevels;
281 int NumberOfEEGuardPixels;
282 int NumberOfAAGuardPixels;
ostream & operator<<(ostream &os, vtkSurfaceLICComposite &ss)
dynamic, self-adjusting array of float
a simple class to control print indentation
abstract base class for most VTK objects
A communicator that can safely be used inside a painter.
Representation of a cartesian pixel plane and common operations on it.
This class decomposes the image space and shuffles image space data onto the new decomposition with t...
float GetFudgeFactor(int nx[2])
factor for determining extra padding for guard pixels.
const vtkPixelExtent & GetGuardExtent(int i=0) const
Get the extent of the domain over which to compute the LIC.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
void SetStrategy(int val)
void GetPixelBounds(float *rgba, int ni, vtkPixelExtent &ext)
shrink pixel extent based on non-zero alpha channel values
virtual void SetContext(vtkOpenGLRenderWindow *)
Set the rendering context.
float VectorMax(const vtkPixelExtent &ext, float *vectors)
Compute max(V) on the given extent.
virtual void RestoreDefaultCommunicator()
Set the communicator to the default communicator.
static vtkSurfaceLICComposite * New()
~vtkSurfaceLICComposite()
int MakeDecompDisjoint(const std::deque< vtkPixelExtent > &in, std::deque< vtkPixelExtent > &out, float *vectors)
For serial run.
int AddGuardPixels(const std::deque< vtkPixelExtent > &exts, std::deque< vtkPixelExtent > &guardExts, std::deque< vtkPixelExtent > &disjointGuardExts, float *vectors)
Add guard pixels (Serial run)
int GetNumberOfCompositeExtents() const
Get the number of new extents assigned to this rank after the decomposition.
const std::deque< vtkPixelExtent > & GetGuardExtents() const
const vtkPixelExtent & GetWindowExtent() const
Get the whole window extent.
virtual int Gather(void *, int, int, vtkTextureObject *&)
Move a single buffer from the geometry decomp to the LIC decomp.
int VectorMax(const std::deque< vtkPixelExtent > &exts, float *vectors, std::vector< float > &vMax)
Compute max(V) on a set of extents.
const vtkPixelExtent & GetDisjointGuardExtent(int i=0) const
Get the extent of the domain over which to compute the LIC.
virtual vtkOpenGLRenderWindow * GetContext()
friend ostream & operator<<(ostream &os, vtkSurfaceLICComposite &ss)
const std::deque< vtkPixelExtent > & GetCompositeExtents() const
static int MakeDecompDisjoint(std::deque< vtkPixelExtent > &in, std::deque< vtkPixelExtent > &out)
Make a decomposition disjoint with respect to itself.
int InitializeCompositeExtents(float *vectors)
Set up for a serial run, makes the decomp disjoint and adds requisite guard pixles.
virtual void SetCommunicator(vtkPainterCommunicator *)
Set the communicator for parallel communication.
const std::deque< vtkPixelExtent > & GetDisjointGuardExtents() const
const vtkPixelExtent & GetCompositeExtent(int i=0) const
Get the extent of the domain over which to compute the LIC.
virtual int Scatter(void *, int, int, vtkTextureObject *&)
Move a single buffer from the LIC decomp to the geometry decomp In parallel THIS IS A COLLECTIVE OPER...
const vtkPixelExtent & GetDataSetExtent() const
Get the whole dataset extent (all blocks).
virtual int BuildProgram(float *)
Build programs to move data to the new decomp In parallel THIS IS A COLLECTIVE OPERATION.
void Initialize(const vtkPixelExtent &winExt, const std::deque< vtkPixelExtent > &blockExts, int strategy, double stepSize, int nSteps, int normalizeVectors, int enhancedLIC, int anitalias)
Initialize the object based on the following description of the blocks projected onto the render wind...
abstracts an OpenGL texture object.