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 
vtkScalarBarActor::TexturePolyData
vtkPolyData * TexturePolyData
Polygon colored when UseOpacity is true.
Definition: vtkScalarBarActor.h:772
vtkActor2D::RenderOpaqueGeometry
int RenderOpaqueGeometry(vtkViewport *viewport) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
vtkScalarBarActor::FixedAnnotationLeaderLineColor
vtkTypeBool FixedAnnotationLeaderLineColor
Definition: vtkScalarBarActor.h:729
VTK_INT_MAX
#define VTK_INT_MAX
Definition: vtkType.h:159
vtkPolyDataMapper2D
draw vtkPolyData onto the image plane
Definition: vtkPolyDataMapper2D.h:51
vtkScalarBarActor::TextPad
int TextPad
Definition: vtkScalarBarActor.h:744
vtkScalarBarActor::MaximumWidthInPixels
int MaximumWidthInPixels
Definition: vtkScalarBarActor.h:742
vtkScalarBarActor::TitleRatio
double TitleRatio
Definition: vtkScalarBarActor.h:747
vtkScalarBarActorInternal
Internal state for the scalar bar actor shared with subclasses.
Definition: vtkScalarBarActorInternal.h:53
vtkScalarBarActor::SetTextPositionToPrecedeScalarBar
virtual void SetTextPositionToPrecedeScalarBar()
Definition: vtkScalarBarActor.h:256
vtkTexturedActor2D
actor that draws 2D data with texture support
Definition: vtkTexturedActor2D.h:41
vtkScalarBarActor::LookupTable
vtkScalarsToColors * LookupTable
The object this actor illustrates.
Definition: vtkScalarBarActor.h:762
vtkScalarBarActor::BackgroundMapper
vtkPolyDataMapper2D * BackgroundMapper
Mapper for Background.
Definition: vtkScalarBarActor.h:777
vtkActor2D::ShallowCopy
void ShallowCopy(vtkProp *prop) override
Shallow copy of this vtkActor2D.
VTK_ORIENT_HORIZONTAL
#define VTK_ORIENT_HORIZONTAL
Definition: vtkScalarBarActor.h:77
vtkScalarBarActor::ScalarBarMapper
vtkPolyDataMapper2D * ScalarBarMapper
Mapper for ScalarBar.
Definition: vtkScalarBarActor.h:770
vtkScalarBarActor::FrameActor
vtkActor2D * FrameActor
Actor for Frame.
Definition: vtkScalarBarActor.h:782
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkActor2D::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkX3D::range
Definition: vtkX3D.h:238
vtkScalarBarActor::AboveRangeAnnotation
char * AboveRangeAnnotation
Definition: vtkScalarBarActor.h:740
vtkScalarBarActor::TextureGridWidth
double TextureGridWidth
Definition: vtkScalarBarActor.h:736
vtkScalarBarActor::NumberOfLabelsBuilt
int NumberOfLabelsBuilt
Definition: vtkScalarBarActor.h:720
vtkScalarBarActor::AnnotationTextScaling
vtkTypeBool AnnotationTextScaling
Definition: vtkScalarBarActor.h:728
vtkScalarBarActor::VerticalTitleSeparation
int VerticalTitleSeparation
Definition: vtkScalarBarActor.h:745
vtkScalarBarActor::BelowRangeAnnotation
char * BelowRangeAnnotation
Definition: vtkScalarBarActor.h:739
vtkScalarBarActor::ComponentTitle
char * ComponentTitle
Definition: vtkScalarBarActor.h:733
vtkScalarBarActor::MaximumHeightInPixels
int MaximumHeightInPixels
Definition: vtkScalarBarActor.h:743
vtkScalarBarActor::RenderTranslucentPolygonalGeometry
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Definition: vtkScalarBarActor.h:98
vtkScalarBarActor::Title
char * Title
Definition: vtkScalarBarActor.h:732
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkScalarBarActor::BackgroundActor
vtkActor2D * BackgroundActor
Actor for Background.
Definition: vtkScalarBarActor.h:778
vtkScalarBarActor::Texture
vtkTexture * Texture
Color data for TexturePolyData.
Definition: vtkScalarBarActor.h:773
vtkScalarBarActor::DrawAnnotations
vtkTypeBool DrawAnnotations
Definition: vtkScalarBarActor.h:726
vtkActor2D::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
vtkTexture
handles properties associated with a texture map
Definition: vtkTexture.h:71
vtkTextMapper
2D text annotation
Definition: vtkTextMapper.h:53
vtkScalarBarActor::LabelFormat
char * LabelFormat
Definition: vtkScalarBarActor.h:734
vtkScalarBarActor::NumberOfLabels
int NumberOfLabels
Definition: vtkScalarBarActor.h:719
vtkActor2D::RenderOverlay
int RenderOverlay(vtkViewport *viewport) override
Support the standard render methods.
vtkTextActor
An actor that displays text. Scaled or unscaled.
Definition: vtkTextActor.h:56
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkScalarBarActor::UseOpacity
vtkTypeBool UseOpacity
Definition: vtkScalarBarActor.h:735
vtkScalarBarActor::SucceedScalarBar
Definition: vtkScalarBarActor.h:243
vtkScalarBarActor::P
vtkScalarBarActorInternal * P
Containers shared with subclasses.
Definition: vtkScalarBarActor.h:760
vtkScalarBarActor::PrecedeScalarBar
Definition: vtkScalarBarActor.h:243
vtkScalarBarActor::ScalarBarActor
vtkActor2D * ScalarBarActor
Actor for ScalarBar.
Definition: vtkScalarBarActor.h:771
vtkScalarBarActor::AnnotationLeaderPadding
double AnnotationLeaderPadding
Definition: vtkScalarBarActor.h:741
vtkX3D::size
Definition: vtkX3D.h:253
vtkScalarBarActor::LabelTextProperty
vtkTextProperty * LabelTextProperty
Font for tick labels.
Definition: vtkScalarBarActor.h:765
vtkScalarsToColors
Superclass for mapping scalar values to colors.
Definition: vtkScalarsToColors.h:66
vtkScalarBarActor::TextPosition
int TextPosition
Definition: vtkScalarBarActor.h:737
vtkScalarBarActor::Orientation
int Orientation
Definition: vtkScalarBarActor.h:721
vtkScalarBarActor::ScalarBar
vtkPolyData * ScalarBar
Polygon(s) colored by LookupTable.
Definition: vtkScalarBarActor.h:769
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:47
vtkScalarBarActor::DrawBelowRangeSwatch
bool DrawBelowRangeSwatch
Definition: vtkScalarBarActor.h:750
vtkScalarBarActor::BackgroundProperty
vtkProperty2D * BackgroundProperty
Definition: vtkScalarBarActor.h:730
vtkTextProperty
represent text properties.
Definition: vtkTextProperty.h:39
vtkScalarBarActor::DrawBackground
vtkTypeBool DrawBackground
Definition: vtkScalarBarActor.h:722
vtkScalarBarActor::Background
vtkPolyData * Background
Polygon used to fill the background.
Definition: vtkScalarBarActor.h:776
vtkScalarBarActor::DrawColorBar
vtkTypeBool DrawColorBar
Definition: vtkScalarBarActor.h:724
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:52
vtkScalarBarActor::BuildTime
vtkTimeStamp BuildTime
Internal state used for rendering.
Definition: vtkScalarBarActor.h:756
vtkProperty2D
represent surface properties of a 2D image
Definition: vtkProperty2D.h:40
vtkScalarBarActor::TitleTextProperty
vtkTextProperty * TitleTextProperty
Font for the legend title.
Definition: vtkScalarBarActor.h:764
vtkScalarBarActor::MaximumNumberOfColors
int MaximumNumberOfColors
User-changeable settings.
Definition: vtkScalarBarActor.h:718
vtkActor2D
a actor that draws 2D data
Definition: vtkActor2D.h:45
vtkActor2D.h
vtkActor2D::New
static vtkActor2D * New()
Creates an actor2D with the following defaults: position (0,0) (coordinate system is viewport); at la...
vtkScalarBarActor::TitleActor
vtkTextActor * TitleActor
The legend title text renderer.
Definition: vtkScalarBarActor.h:767
vtkScalarBarActor::FrameMapper
vtkPolyDataMapper2D * FrameMapper
Mapper for Frame.
Definition: vtkScalarBarActor.h:781
vtkScalarBarActor::NanAnnotation
char * NanAnnotation
Definition: vtkScalarBarActor.h:738
vtkScalarBarActor::SetTextPositionToSucceedScalarBar
virtual void SetTextPositionToSucceedScalarBar()
Definition: vtkScalarBarActor.h:258
vtkScalarBarActor::SetOrientationToVertical
void SetOrientationToVertical()
Definition: vtkScalarBarActor.h:171
vtkColor3ub
Some derived classes for the different colors commonly used.
Definition: vtkColor.h:194
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
vtkScalarBarActor::UnconstrainedFontSize
bool UnconstrainedFontSize
Definition: vtkScalarBarActor.h:748
vtkScalarBarActor::BarRatio
double BarRatio
Definition: vtkScalarBarActor.h:746
vtkScalarBarActor::DrawFrame
vtkTypeBool DrawFrame
Definition: vtkScalarBarActor.h:723
VTK_ORIENT_VERTICAL
#define VTK_ORIENT_VERTICAL
Definition: vtkScalarBarActor.h:78
vtkScalarBarActor::AnnotationTextProperty
vtkTextProperty * AnnotationTextProperty
Font for annotation labels.
Definition: vtkScalarBarActor.h:766
vtkScalarBarActor::Frame
vtkPolyData * Frame
Polyline used to highlight frame.
Definition: vtkScalarBarActor.h:780
vtkScalarBarActor::DrawTickLabels
vtkTypeBool DrawTickLabels
Definition: vtkScalarBarActor.h:725
vtkScalarBarActor::DrawAboveRangeSwatch
bool DrawAboveRangeSwatch
Definition: vtkScalarBarActor.h:751
vtkScalarBarActor::DrawNanAnnotation
vtkTypeBool DrawNanAnnotation
Definition: vtkScalarBarActor.h:727
vtkScalarBarActor::SetOrientationToHorizontal
void SetOrientationToHorizontal()
Definition: vtkScalarBarActor.h:169
vtkActor2D::HasTranslucentPolygonalGeometry
vtkTypeBool HasTranslucentPolygonalGeometry() override
Does this prop have some translucent polygonal geometry?
vtkScalarBarActor::FrameProperty
vtkProperty2D * FrameProperty
Definition: vtkScalarBarActor.h:731
vtkScalarBarActor
Create a scalar bar with labels.
Definition: vtkScalarBarActor.h:80
vtkScalarBarActor::TextureActor
vtkTexturedActor2D * TextureActor
Actor for TexturePolyData.
Definition: vtkScalarBarActor.h:774
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkScalarBarActor::EditAnnotations
virtual void EditAnnotations()
Subclasses may override this method to alter this->P->Labels, allowing the addition and removal of an...
Definition: vtkScalarBarActor.h:688