VTK
vtkScalarBarActor.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkScalarBarActor.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 =========================================================================*/
59 #ifndef vtkScalarBarActor_h
60 #define vtkScalarBarActor_h
61 
62 #include "vtkRenderingAnnotationModule.h" // For export macro
63 #include "vtkActor2D.h"
64 
65 class vtkColor3ub;
66 class vtkPolyData;
68 class vtkProperty2D;
69 class vtkScalarsToColors;
71 class vtkTextActor;
72 class vtkTextMapper;
73 class vtkTextProperty;
74 class vtkTexture;
75 class vtkTexturedActor2D;
76 
77 #define VTK_ORIENT_HORIZONTAL 0
78 #define VTK_ORIENT_VERTICAL 1
79 
80 class VTKRENDERINGANNOTATION_EXPORT vtkScalarBarActor : public vtkActor2D
81 {
82 public:
83  vtkTypeMacro(vtkScalarBarActor, vtkActor2D);
84  void PrintSelf(ostream& os, vtkIndent indent) override;
85 
91  static vtkScalarBarActor* New();
92 
94 
97  int RenderOpaqueGeometry(vtkViewport* viewport) override;
98  int RenderTranslucentPolygonalGeometry(vtkViewport*) override { return 0; };
99  int RenderOverlay(vtkViewport* viewport) override;
101 
106 
112  void ReleaseGraphicsResources(vtkWindow*) override;
113 
119  virtual void GetScalarBarRect(int rect[4], vtkViewport* viewport);
120 
122 
128  virtual void SetLookupTable(vtkScalarsToColors*);
129  vtkGetObjectMacro(LookupTable, vtkScalarsToColors);
131 
133 
140  vtkSetMacro(UseOpacity, vtkTypeBool);
141  vtkGetMacro(UseOpacity, vtkTypeBool);
142  vtkBooleanMacro(UseOpacity, vtkTypeBool);
144 
146 
151  vtkSetClampMacro(MaximumNumberOfColors, int, 2, VTK_INT_MAX);
152  vtkGetMacro(MaximumNumberOfColors, int);
154 
156 
159  vtkSetClampMacro(NumberOfLabels, int, 0, 64);
160  vtkGetMacro(NumberOfLabels, int);
162 
164 
167  vtkSetClampMacro(Orientation, int, VTK_ORIENT_HORIZONTAL, VTK_ORIENT_VERTICAL);
168  vtkGetMacro(Orientation, int);
170  {this->SetOrientation(VTK_ORIENT_HORIZONTAL);}
171  void SetOrientationToVertical() {this->SetOrientation(VTK_ORIENT_VERTICAL);}
173 
175 
178  virtual void SetTitleTextProperty(vtkTextProperty* p);
179  vtkGetObjectMacro(TitleTextProperty, vtkTextProperty);
181 
183 
186  virtual void SetLabelTextProperty(vtkTextProperty* p);
187  vtkGetObjectMacro(LabelTextProperty, vtkTextProperty);
189 
191 
194  virtual void SetAnnotationTextProperty(vtkTextProperty* p);
195  vtkGetObjectMacro(AnnotationTextProperty, vtkTextProperty);
197 
199 
203  vtkSetStringMacro(LabelFormat);
204  vtkGetStringMacro(LabelFormat);
206 
208 
211  vtkSetStringMacro(Title);
212  vtkGetStringMacro(Title);
214 
216 
219  vtkSetStringMacro(ComponentTitle);
220  vtkGetStringMacro(ComponentTitle);
222 
226  void ShallowCopy(vtkProp* prop) override;
227 
229 
232  vtkSetMacro(TextureGridWidth, double);
233  vtkGetMacro(TextureGridWidth, double);
235 
237 
240  vtkGetObjectMacro(TextureActor, vtkTexturedActor2D);
242 
243  enum { PrecedeScalarBar = 0, SucceedScalarBar };
244 
246 
254  vtkSetClampMacro(TextPosition, int, PrecedeScalarBar, SucceedScalarBar);
255  vtkGetMacro(TextPosition, int);
257  { this->SetTextPosition(vtkScalarBarActor::PrecedeScalarBar); }
259  { this->SetTextPosition(vtkScalarBarActor::SucceedScalarBar); }
261 
263 
270  vtkSetMacro(MaximumWidthInPixels, int);
271  vtkGetMacro(MaximumWidthInPixels, int);
272  vtkSetMacro(MaximumHeightInPixels, int);
273  vtkGetMacro(MaximumHeightInPixels, int);
275 
277 
282  vtkSetMacro(AnnotationLeaderPadding, double);
283  vtkGetMacro(AnnotationLeaderPadding, double);
285 
287 
292  vtkSetMacro(DrawAnnotations, vtkTypeBool);
293  vtkGetMacro(DrawAnnotations, vtkTypeBool);
294  vtkBooleanMacro(DrawAnnotations, vtkTypeBool);
296 
298 
303  vtkSetMacro(DrawNanAnnotation, vtkTypeBool);
304  vtkGetMacro(DrawNanAnnotation, vtkTypeBool);
305  vtkBooleanMacro(DrawNanAnnotation, vtkTypeBool);
307 
309 
314  vtkSetMacro(DrawBelowRangeSwatch, bool);
315  vtkGetMacro(DrawBelowRangeSwatch, bool);
316  vtkBooleanMacro(DrawBelowRangeSwatch, bool);
318 
320 
323  vtkSetStringMacro(BelowRangeAnnotation);
324  vtkGetStringMacro(BelowRangeAnnotation);
326 
328 
333  vtkSetMacro(DrawAboveRangeSwatch, bool);
334  vtkGetMacro(DrawAboveRangeSwatch, bool);
335  vtkBooleanMacro(DrawAboveRangeSwatch, bool);
337 
339 
342  vtkSetStringMacro(AboveRangeAnnotation);
343  vtkGetStringMacro(AboveRangeAnnotation);
345 
346 
354  vtkSetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
355  vtkGetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
356  vtkBooleanMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
358 
360 
363  vtkSetStringMacro(NanAnnotation);
364  vtkGetStringMacro(NanAnnotation);
366 
368 
376  vtkSetMacro(AnnotationTextScaling, vtkTypeBool);
377  vtkGetMacro(AnnotationTextScaling, vtkTypeBool);
378  vtkBooleanMacro(AnnotationTextScaling, vtkTypeBool);
380 
382 
386  vtkSetMacro(DrawBackground, vtkTypeBool);
387  vtkGetMacro(DrawBackground, vtkTypeBool);
388  vtkBooleanMacro(DrawBackground, vtkTypeBool);
390 
392 
396  vtkSetMacro(DrawFrame, vtkTypeBool);
397  vtkGetMacro(DrawFrame, vtkTypeBool);
398  vtkBooleanMacro(DrawFrame, vtkTypeBool);
400 
402 
406  vtkSetMacro(DrawColorBar, vtkTypeBool);
407  vtkGetMacro(DrawColorBar, vtkTypeBool);
408  vtkBooleanMacro(DrawColorBar, vtkTypeBool);
410 
412 
415  vtkSetMacro(DrawTickLabels, vtkTypeBool);
416  vtkGetMacro(DrawTickLabels, vtkTypeBool);
417  vtkBooleanMacro(DrawTickLabels, vtkTypeBool);
419 
421 
424  virtual void SetBackgroundProperty(vtkProperty2D* p);
425  vtkGetObjectMacro(BackgroundProperty, vtkProperty2D);
427 
429 
432  virtual void SetFrameProperty(vtkProperty2D* p);
433  vtkGetObjectMacro(FrameProperty, vtkProperty2D);
435 
437 
441  vtkGetMacro(TextPad, int);
442  vtkSetMacro(TextPad, int);
444 
446 
451  vtkGetMacro(VerticalTitleSeparation, int);
452  vtkSetMacro(VerticalTitleSeparation, int);
454 
456 
460  vtkGetMacro(BarRatio, double);
461  vtkSetClampMacro(BarRatio, double, 0., 1.);
463 
465 
471  vtkGetMacro(TitleRatio, double);
472  vtkSetClampMacro(TitleRatio, double, 0., 1.);
474 
476 
481  vtkSetMacro(UnconstrainedFontSize, bool);
482  vtkGetMacro(UnconstrainedFontSize, bool);
483  vtkBooleanMacro(UnconstrainedFontSize, bool);
485 
486 protected:
488  ~vtkScalarBarActor() override;
489 
514  virtual void RebuildLayout(vtkViewport* viewport);
515 
521  virtual int RebuildLayoutIfNeeded(vtkViewport* viewport);
522 
523 
527  virtual void FreeLayoutStorage();
528 
537  virtual void ComputeFrame();
538 
548  virtual void ComputeScalarBarThickness();
549 
553  virtual void ComputeSwatchPad();
554 
555  // This method must set this->P->NanSwatchSize and this->P->NanBox.
556  // It may depend on layout performed by ComputeScalarBarThickness.
557  virtual void LayoutNanSwatch();
558 
565  virtual void LayoutBelowRangeSwatch();
566 
573  virtual void LayoutAboveRangeSwatch();
574 
581  virtual void LayoutAboveRangeSwatchPosn();
582 
586  virtual void PrepareTitleText();
587 
598  virtual void LayoutTitle();
599 
604  virtual void LayoutForUnconstrainedFont();
605 
614  virtual void ComputeScalarBarLength();
615 
625  virtual void LayoutTicks();
626 
634  virtual void LayoutAnnotations();
635 
639  virtual void ConfigureAnnotations();
640 
644  virtual void ConfigureFrame();
645 
649  virtual void DrawBoxes();
650 
654  virtual void ConfigureScalarBar();
655 
659  virtual void ConfigureTitle();
660 
664  virtual void ConfigureTicks();
665 
672  virtual void ConfigureNanSwatch();
673 
678  virtual void ConfigureAboveBelowRangeSwatch(bool above);
679 
688  virtual void EditAnnotations() { }
689 
695  virtual void SizeTitle(double* titleSize, int* size, vtkViewport* viewport);
696 
700  int MapAnnotationLabels(
701  vtkScalarsToColors* lkup, double start, double delta, const double* range);
702 
706  int PlaceAnnotationsVertically(
707  double barX, double barY, double barWidth, double barHeight,
708  double delta, double pad);
712  int PlaceAnnotationsHorizontally(
713  double barX, double barY, double barWidth, double barHeight,
714  double delta, double pad);
715 
717 
722  vtkTypeBool DrawBackground; // off by default
723  vtkTypeBool DrawFrame; // off by default
724  vtkTypeBool DrawColorBar; // on by default
725  vtkTypeBool DrawTickLabels; // on by default
732  char* Title;
734  char* LabelFormat;
735  vtkTypeBool UseOpacity; // off by default
744  int TextPad;
746  double BarRatio;
747  double TitleRatio;
748  bool UnconstrainedFontSize; // off by default
749 
753 
755 
757  int LastSize[2];
758  int LastOrigin[2];
759 
761 
763 
768 
775 
779 
783 
784 
785 private:
786  vtkScalarBarActor(const vtkScalarBarActor&) = delete;
787  void operator=(const vtkScalarBarActor&) = delete;
788 };
789 
790 #endif
791 
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:52
int TextPad
User-changeable settings.
int MaximumWidthInPixels
User-changeable settings.
virtual void EditAnnotations()
Subclasses may override this method to alter this->P->Labels, allowing the addition and removal of an...
double TitleRatio
User-changeable settings.
int RenderOverlay(vtkViewport *viewport) override
Support the standard render methods.
vtkTypeBool FixedAnnotationLeaderLineColor
User-changeable settings.
actor that draws 2D data with texture support
vtkPolyDataMapper2D * ScalarBarMapper
Mapper for ScalarBar.
abstract specification for Viewports
Definition: vtkViewport.h:47
virtual void SetTextPositionToPrecedeScalarBar()
Should the title and tick marks precede the scalar bar or succeed it? This is measured along the view...
vtkScalarsToColors * LookupTable
The object this actor illustrates.
#define VTK_INT_MAX
Definition: vtkType.h:159
vtkPolyDataMapper2D * BackgroundMapper
Mapper for Background.
a actor that draws 2D data
Definition: vtkActor2D.h:45
record modification and/or execution time
Definition: vtkTimeStamp.h:35
Internal state for the scalar bar actor shared with subclasses.
int NumberOfLabelsBuilt
User-changeable settings.
vtkActor2D * FrameActor
Actor for Frame.
Create a scalar bar with labels.
int VerticalTitleSeparation
User-changeable settings.
char * AboveRangeAnnotation
User-changeable settings.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
double TextureGridWidth
User-changeable settings.
void ShallowCopy(vtkProp *prop) override
Shallow copy of this vtkActor2D.
vtkTexture * Texture
Color data for TexturePolyData.
vtkTypeBool AnnotationTextScaling
User-changeable settings.
vtkTypeBool DrawAnnotations
User-changeable settings.
2D text annotation
Definition: vtkTextMapper.h:53
char * BelowRangeAnnotation
User-changeable settings.
char * ComponentTitle
User-changeable settings.
#define VTK_ORIENT_VERTICAL
int MaximumHeightInPixels
User-changeable settings.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the scalar bar and annotation text to the screen.
int vtkTypeBool
Definition: vtkABI.h:69
char * Title
User-changeable settings.
Superclass for mapping scalar values to colors.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkActor2D * BackgroundActor
Actor for Background.
An actor that displays text.
Definition: vtkTextActor.h:56
#define VTK_ORIENT_HORIZONTAL
Some derived classes for the different colors commonly used.
Definition: vtkColor.h:194
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
a simple class to control print indentation
Definition: vtkIndent.h:39
char * LabelFormat
User-changeable settings.
vtkScalarBarActorInternal * P
Containers shared with subclasses.
int NumberOfLabels
User-changeable settings.
static vtkActor2D * New()
Creates an actor2D with the following defaults: position (0,0) (coordinate system is viewport); at la...
double AnnotationLeaderPadding
User-changeable settings.
handles properties associated with a texture map
Definition: vtkTexture.h:71
int Orientation
User-changeable settings.
int TextPosition
User-changeable settings.
vtkPolyData * ScalarBar
Polygon(s) colored by LookupTable.
vtkTypeBool UseOpacity
User-changeable settings.
bool DrawBelowRangeSwatch
User-changeable settings.
vtkProperty2D * BackgroundProperty
User-changeable settings.
vtkActor2D * ScalarBarActor
Actor for ScalarBar.
represent text properties.
vtkPolyData * Background
Polygon used to fill the background.
vtkTextProperty * LabelTextProperty
Font for tick labels.
vtkTimeStamp BuildTime
Internal state used for rendering.
vtkTextProperty * TitleTextProperty
Font for the legend title.
int MaximumNumberOfColors
User-changeable settings.
vtkTypeBool HasTranslucentPolygonalGeometry() override
Does this prop have some translucent polygonal geometry?
char * NanAnnotation
User-changeable settings.
vtkTypeBool DrawBackground
User-changeable settings.
vtkTypeBool DrawColorBar
User-changeable settings.
double BarRatio
User-changeable settings.
vtkTypeBool DrawFrame
User-changeable settings.
int RenderOpaqueGeometry(vtkViewport *viewport) override
Support the standard render methods.
vtkTextProperty * AnnotationTextProperty
Font for annotation labels.
vtkTextActor * TitleActor
The legend title text renderer.
vtkPolyDataMapper2D * FrameMapper
Mapper for Frame.
represent surface properties of a 2D image
Definition: vtkProperty2D.h:40
virtual void SetTextPositionToSucceedScalarBar()
Should the title and tick marks precede the scalar bar or succeed it? This is measured along the view...
void SetOrientationToVertical()
Control the orientation of the scalar bar.
bool DrawAboveRangeSwatch
User-changeable settings.
void SetOrientationToHorizontal()
Control the orientation of the scalar bar.
vtkProperty2D * FrameProperty
User-changeable settings.
bool UnconstrainedFontSize
User-changeable settings.
vtkPolyData * Frame
Polyline used to highlight frame.
vtkTypeBool DrawTickLabels
User-changeable settings.
draw vtkPolyData onto the image plane
vtkPolyData * TexturePolyData
Polygon colored when UseOpacity is true.
vtkTypeBool DrawNanAnnotation
User-changeable settings.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTexturedActor2D * TextureActor
Actor for TexturePolyData.