VTK  9.0.1
vtkSurfaceLICInterface.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSurfaceLICMapper.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
56 #ifndef vtkSurfaceLICInterface_h
57 #define vtkSurfaceLICInterface_h
58 
60 #include "vtkRenderingLICOpenGL2Module.h" // For export macro
61 
62 class vtkRenderWindow;
63 class vtkRenderer;
64 class vtkActor;
65 class vtkImageData;
66 class vtkDataObject;
67 class vtkDataArray;
70 
71 class VTKRENDERINGLICOPENGL2_EXPORT vtkSurfaceLICInterface : public vtkObject
72 {
73 public:
74  static vtkSurfaceLICInterface* New();
76  void PrintSelf(ostream& os, vtkIndent indent) override;
77 
79 
82  void SetNumberOfSteps(int val);
83  vtkGetMacro(NumberOfSteps, int);
85 
87 
90  void SetStepSize(double val);
91  vtkGetMacro(StepSize, double);
93 
95 
106  void SetNormalizeVectors(int val);
107  vtkBooleanMacro(NormalizeVectors, int);
108  vtkGetMacro(NormalizeVectors, int);
110 
112 
117  void SetMaskOnSurface(int val);
118  vtkBooleanMacro(MaskOnSurface, int);
119  vtkGetMacro(MaskOnSurface, int);
121 
123 
139  void SetMaskThreshold(double val);
140  vtkGetMacro(MaskThreshold, double);
142 
144 
149  void SetMaskColor(double* val);
150  void SetMaskColor(double r, double g, double b)
151  {
152  double rgb[3] = { r, g, b };
153  this->SetMaskColor(rgb);
154  }
155  vtkGetVector3Macro(MaskColor, double);
157 
159 
167  void SetMaskIntensity(double val);
168  vtkGetMacro(MaskIntensity, double);
170 
172 
177  void SetEnhancedLIC(int val);
178  vtkGetMacro(EnhancedLIC, int);
179  vtkBooleanMacro(EnhancedLIC, int);
181 
183 
216  enum
217  {
218  ENHANCE_CONTRAST_OFF = 0,
219  ENHANCE_CONTRAST_LIC = 1,
220  ENHANCE_CONTRAST_COLOR = 3,
221  ENHANCE_CONTRAST_BOTH = 4
222  };
223  void SetEnhanceContrast(int val);
224  vtkGetMacro(EnhanceContrast, int);
226 
228 
244  vtkGetMacro(LowLICContrastEnhancementFactor, double);
245  vtkGetMacro(HighLICContrastEnhancementFactor, double);
246  void SetLowLICContrastEnhancementFactor(double val);
247  void SetHighLICContrastEnhancementFactor(double val);
248  //
249  vtkGetMacro(LowColorContrastEnhancementFactor, double);
250  vtkGetMacro(HighColorContrastEnhancementFactor, double);
251  void SetLowColorContrastEnhancementFactor(double val);
252  void SetHighColorContrastEnhancementFactor(double val);
254 
256 
262  void SetAntiAlias(int val);
263  vtkBooleanMacro(AntiAlias, int);
264  vtkGetMacro(AntiAlias, int);
266 
268 
277  enum
278  {
279  COLOR_MODE_BLEND = 0,
280  COLOR_MODE_MAP
281  };
282  void SetColorMode(int val);
283  vtkGetMacro(ColorMode, int);
285 
287 
296  void SetLICIntensity(double val);
297  vtkGetMacro(LICIntensity, double);
299 
301 
308  void SetMapModeBias(double val);
309  vtkGetMacro(MapModeBias, double);
311 
313 
318  void SetNoiseDataSet(vtkImageData* data);
319  vtkImageData* GetNoiseDataSet();
321 
323 
342  void SetGenerateNoiseTexture(int shouldGenerate);
343  vtkGetMacro(GenerateNoiseTexture, int);
345 
347 
352  enum
353  {
354  NOISE_TYPE_UNIFORM = 0,
355  NOISE_TYPE_GAUSSIAN = 1,
356  NOISE_TYPE_PERLIN = 2
357  };
358  void SetNoiseType(int type);
359  vtkGetMacro(NoiseType, int);
361 
363 
367  void SetNoiseTextureSize(int length);
368  vtkGetMacro(NoiseTextureSize, int);
370 
372 
375  void SetNoiseGrainSize(int val);
376  vtkGetMacro(NoiseGrainSize, int);
378 
380 
386  void SetMinNoiseValue(double val);
387  void SetMaxNoiseValue(double val);
388  vtkGetMacro(MinNoiseValue, double);
389  vtkGetMacro(MaxNoiseValue, double);
391 
393 
397  void SetNumberOfNoiseLevels(int val);
398  vtkGetMacro(NumberOfNoiseLevels, int);
400 
402 
406  void SetImpulseNoiseProbability(double val);
407  vtkGetMacro(ImpulseNoiseProbability, double);
409 
411 
414  void SetImpulseNoiseBackgroundValue(double val);
415  vtkGetMacro(ImpulseNoiseBackgroundValue, double);
417 
419 
422  void SetNoiseGeneratorSeed(int val);
423  vtkGetMacro(NoiseGeneratorSeed, int);
425 
427 
430  enum
431  {
432  COMPOSITE_INPLACE = 0,
433  COMPOSITE_INPLACE_DISJOINT = 1,
434  COMPOSITE_BALANCED = 2,
435  COMPOSITE_AUTO = 3
436  };
437  void SetCompositeStrategy(int val);
438  vtkGetMacro(CompositeStrategy, int);
440 
445  static bool IsSupported(vtkRenderWindow* context);
446 
453  virtual void WriteTimerLog(const char*) {}
454 
458  void ShallowCopy(vtkSurfaceLICInterface* m);
459 
465  virtual void ReleaseGraphicsResources(vtkWindow* win);
466 
470  bool CanRenderSurfaceLIC(vtkActor* actor);
471 
475  void ValidateContext(vtkRenderer* renderer);
476 
483  virtual vtkPainterCommunicator* CreateCommunicator(int);
484 
489  void CreateCommunicator(vtkRenderer*, vtkActor*, vtkDataObject* data);
490 
491  vtkPainterCommunicator* GetCommunicator();
492 
497  void UpdateCommunicator(vtkRenderer* renderer, vtkActor* actor, vtkDataObject* data);
498 
500 
503  void SetHasVectors(bool val);
504  bool GetHasVectors();
506 
510  void InitializeResources();
511 
512  void PrepareForGeometry();
513  void CompletedGeometry();
514  void GatherVectors();
515  void ApplyLIC();
516  void CombineColorsAndLIC();
517  void CopyToScreen();
518 
524  virtual void GetGlobalMinMax(vtkPainterCommunicator*, float&, float&) {}
525 
527 
530  vtkSetMacro(Enable, int);
531  vtkGetMacro(Enable, int);
532  vtkBooleanMacro(Enable, int);
534 
535 protected:
537  ~vtkSurfaceLICInterface() override;
538 
542  void UpdateNoiseImage(vtkRenderWindow* renWin);
543 
545 
548  virtual bool NeedToUpdateCommunicator();
549  bool NeedToRenderGeometry(vtkRenderer* renderer, vtkActor* actor);
550  bool NeedToGatherVectors();
551  bool NeedToComputeLIC();
552  bool NeedToColorLIC();
553  void SetUpdateAll();
555 
556  int Enable;
557 
558  // Unit is a pixel length.
560  double StepSize;
562 
570 
574  double MaskColor[3];
575 
577  double LICIntensity;
578  double MapModeBias;
579 
590 
593 
595 
596 private:
598  void operator=(const vtkSurfaceLICInterface&) = delete;
599 };
600 
601 #endif
602 // VTK-HeaderTest-Exclude: vtkSurfaceLICInterface.h
void SetMaskColor(double r, double g, double b)
The MaskColor is used on masked fragments.
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
abstract base class for most VTK objects
Definition: vtkObject.h:62
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
abstract specification for renderers
Definition: vtkRenderer.h:67
vtkSurfaceLICHelper * Internals
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
a simple class to control print indentation
Definition: vtkIndent.h:33
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
virtual void WriteTimerLog(const char *)
Methods used for parallel benchmarks.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:49
virtual void GetGlobalMinMax(vtkPainterCommunicator *, float &, float &)
Get the min/max across all ranks.
create a window for renderers to draw into
public API for surface lic parameters arbitrary geometry.
A communicator that can safely be used inside a painter.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
general representation of visualization data
Definition: vtkDataObject.h:59
A small collection of noise routines for LIC.