File: vtkValuePainter.h

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-8.1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 118,972 kB
  • sloc: cpp: 1,442,790; ansic: 113,395; python: 72,383; tcl: 46,998; xml: 8,119; yacc: 4,525; java: 4,239; perl: 3,108; lex: 1,694; sh: 1,093; asm: 154; makefile: 68; objc: 17
file content (107 lines) | stat: -rw-r--r-- 3,781 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkValuePainter.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.

=========================================================================*/
// .NAME vtkValuePainter - painter that renders arrays encoded into
// pixel colors.
// .SECTION Description
// vtkValuePainter renders polygonal geometry where data values
// are encoded into 24 bit integers and send to the screen.
// The pixel colors can then be read and converted back into values later.
//
// .SECTION See Also
// vtkValuePass, vtkValuePasses

#ifndef vtkValuePainter_h
#define vtkValuePainter_h

#include "vtkRenderingOpenGLModule.h" // For export macro
#include "vtkStandardPolyDataPainter.h"

class vtkInformationDoubleVectorKey;
class vtkInformationIntegerKey;
class vtkInformationStringKey;

class VTKRENDERINGOPENGL_EXPORT vtkValuePainter :
  public vtkStandardPolyDataPainter
{
public:
  static vtkValuePainter* New();
  vtkTypeMacro(vtkValuePainter, vtkStandardPolyDataPainter);
  void PrintSelf(ostream& os, vtkIndent indent);

  // Description:
  // Set the array to be drawn. By default point scalars are
  // used. Arguments are same as those passed to
  // vtkAlgorithm::SetInputArrayToProcess except the first 3 arguments i.e. idx,
  // port, connection.
  void SetInputArrayToProcess(int fieldAssociation, const char *name);
  void SetInputArrayToProcess(int fieldAssociation, int fieldAttributeType);

  // Description:
  // Set the component (0..numcomponents-1) of the specified array to be drawn.
  // If input array is not a multicomponent array or component is otherwise out
  // of range the painter uses the 0'th component instead.
  void SetInputComponentToProcess(int comp);

  // Description:
  // Use the provided scalar range instead of the range of the input data
  // array.
  void SetScalarRange(double min, double max);

  // Description:
  // Optionally passed down from RenderPass pipeline to
  // controls what data array to draw.
  static vtkInformationIntegerKey* SCALAR_MODE();
  static vtkInformationDoubleVectorKey* SCALAR_RANGE();
  static vtkInformationIntegerKey* ARRAY_ID();
  static vtkInformationStringKey* ARRAY_NAME();
  static vtkInformationIntegerKey* ARRAY_COMPONENT();

  // Description:
  // Internal convenience method to convert a value to a color
  // TODO: make this templated and programmable
  static void ValueToColor(double value, double min, double scale,
                           unsigned char *color);

  static void ColorToValue(unsigned char *color, double min, double scale,
                           double &value);

protected:
  vtkValuePainter();
  ~vtkValuePainter();

  // Description:
  // overridden to look for informationkeys that specify what array to draw
  virtual void ProcessInformation(vtkInformation*);

  // Description:
  // overridden to draw the chosen array value directly as color
  virtual void RenderInternal(vtkRenderer* renderer, vtkActor* actor,
    unsigned long typeflags, bool forceCompileOnly);

  // Description:
  // overridden
  // implement drawlines, points, strips
  void DrawCells(int mode, vtkCellArray *connectivity,
    vtkIdType startCellId, vtkRenderer *renderer);

private:
  vtkValuePainter(const vtkValuePainter&); // Not implemented.
  void operator=(const vtkValuePainter&); // Not implemented.

  class vtkInternals;
  vtkInternals *Internals;
};

#endif