VTK  9.3.0
vtkScalarBarActor.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
47#ifndef vtkScalarBarActor_h
48#define vtkScalarBarActor_h
49
50#include "vtkActor2D.h"
51#include "vtkDoubleArray.h" // for ivars
52#include "vtkRenderingAnnotationModule.h" // For export macro
53
54VTK_ABI_NAMESPACE_BEGIN
55class vtkColor3ub;
56class vtkPolyData;
58class vtkProperty2D;
61class vtkTextActor;
62class vtkTextMapper;
63class vtkTextProperty;
64class vtkTexture;
66
67#define VTK_ORIENT_HORIZONTAL 0
68#define VTK_ORIENT_VERTICAL 1
69
70class VTKRENDERINGANNOTATION_EXPORT vtkScalarBarActor : public vtkActor2D
71{
72public:
74 void PrintSelf(ostream& os, vtkIndent indent) override;
75
82
84
87 int RenderOpaqueGeometry(vtkViewport* viewport) override;
89 int RenderOverlay(vtkViewport* viewport) override;
91
96
103
109 virtual void GetScalarBarRect(int rect[4], vtkViewport* viewport);
110
112
119 vtkGetObjectMacro(LookupTable, vtkScalarsToColors);
121
123
130 vtkSetMacro(UseOpacity, vtkTypeBool);
131 vtkGetMacro(UseOpacity, vtkTypeBool);
132 vtkBooleanMacro(UseOpacity, vtkTypeBool);
134
136
141 vtkSetClampMacro(MaximumNumberOfColors, int, 2, VTK_INT_MAX);
142 vtkGetMacro(MaximumNumberOfColors, int);
144
146
149 vtkSetClampMacro(NumberOfLabels, int, 0, 64);
150 vtkGetMacro(NumberOfLabels, int);
152
154
157 virtual void SetCustomLabels(vtkDoubleArray* labels);
158 vtkGetObjectMacro(CustomLabels, vtkDoubleArray);
160
162
166 vtkGetMacro(UseCustomLabels, bool);
167 vtkSetMacro(UseCustomLabels, bool);
168 vtkBooleanMacro(UseCustomLabels, bool);
170
172
175 vtkSetClampMacro(Orientation, int, VTK_ORIENT_HORIZONTAL, VTK_ORIENT_VERTICAL);
176 vtkGetMacro(Orientation, int);
177 void SetOrientationToHorizontal() { this->SetOrientation(VTK_ORIENT_HORIZONTAL); }
178 void SetOrientationToVertical() { this->SetOrientation(VTK_ORIENT_VERTICAL); }
180
182
186 vtkGetObjectMacro(TitleTextProperty, vtkTextProperty);
188
190
194 vtkGetObjectMacro(LabelTextProperty, vtkTextProperty);
196
198
202 vtkGetObjectMacro(AnnotationTextProperty, vtkTextProperty);
204
206
210 vtkSetStringMacro(LabelFormat);
211 vtkGetStringMacro(LabelFormat);
213
215
218 vtkSetStringMacro(Title);
219 vtkGetStringMacro(Title);
221
223
226 vtkSetStringMacro(ComponentTitle);
227 vtkGetStringMacro(ComponentTitle);
229
233 void ShallowCopy(vtkProp* prop) override;
234
236
239 vtkSetMacro(TextureGridWidth, double);
240 vtkGetMacro(TextureGridWidth, double);
242
244
247 vtkGetObjectMacro(TextureActor, vtkTexturedActor2D);
249
250 enum
251 {
252 PrecedeScalarBar = 0,
253 SucceedScalarBar
254 };
255
257
265 vtkSetClampMacro(TextPosition, int, PrecedeScalarBar, SucceedScalarBar);
266 vtkGetMacro(TextPosition, int);
268 {
269 this->SetTextPosition(vtkScalarBarActor::PrecedeScalarBar);
270 }
272 {
273 this->SetTextPosition(vtkScalarBarActor::SucceedScalarBar);
274 }
276
278
285 vtkSetMacro(MaximumWidthInPixels, int);
286 vtkGetMacro(MaximumWidthInPixels, int);
287 vtkSetMacro(MaximumHeightInPixels, int);
288 vtkGetMacro(MaximumHeightInPixels, int);
290
292
297 vtkSetMacro(AnnotationLeaderPadding, double);
298 vtkGetMacro(AnnotationLeaderPadding, double);
300
302
307 vtkSetMacro(DrawAnnotations, vtkTypeBool);
308 vtkGetMacro(DrawAnnotations, vtkTypeBool);
309 vtkBooleanMacro(DrawAnnotations, vtkTypeBool);
311
313
318 vtkSetMacro(DrawNanAnnotation, vtkTypeBool);
319 vtkGetMacro(DrawNanAnnotation, vtkTypeBool);
320 vtkBooleanMacro(DrawNanAnnotation, vtkTypeBool);
322
324
329 vtkSetMacro(DrawBelowRangeSwatch, bool);
330 vtkGetMacro(DrawBelowRangeSwatch, bool);
331 vtkBooleanMacro(DrawBelowRangeSwatch, bool);
333
335
338 vtkSetStringMacro(BelowRangeAnnotation);
339 vtkGetStringMacro(BelowRangeAnnotation);
341
343
348 vtkSetMacro(DrawAboveRangeSwatch, bool);
349 vtkGetMacro(DrawAboveRangeSwatch, bool);
350 vtkBooleanMacro(DrawAboveRangeSwatch, bool);
352
354
357 vtkSetStringMacro(AboveRangeAnnotation);
358 vtkGetStringMacro(AboveRangeAnnotation);
361
369 vtkSetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
370 vtkGetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
371 vtkBooleanMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
373
375
378 vtkSetStringMacro(NanAnnotation);
379 vtkGetStringMacro(NanAnnotation);
381
383
391 vtkSetMacro(AnnotationTextScaling, vtkTypeBool);
392 vtkGetMacro(AnnotationTextScaling, vtkTypeBool);
393 vtkBooleanMacro(AnnotationTextScaling, vtkTypeBool);
395
397
401 vtkSetMacro(DrawBackground, vtkTypeBool);
402 vtkGetMacro(DrawBackground, vtkTypeBool);
403 vtkBooleanMacro(DrawBackground, vtkTypeBool);
405
407
411 vtkSetMacro(DrawFrame, vtkTypeBool);
412 vtkGetMacro(DrawFrame, vtkTypeBool);
413 vtkBooleanMacro(DrawFrame, vtkTypeBool);
415
417
421 vtkSetMacro(DrawColorBar, vtkTypeBool);
422 vtkGetMacro(DrawColorBar, vtkTypeBool);
423 vtkBooleanMacro(DrawColorBar, vtkTypeBool);
425
427
430 vtkSetMacro(DrawTickLabels, vtkTypeBool);
431 vtkGetMacro(DrawTickLabels, vtkTypeBool);
432 vtkBooleanMacro(DrawTickLabels, vtkTypeBool);
434
436
440 vtkGetObjectMacro(BackgroundProperty, vtkProperty2D);
442
444
448 vtkGetObjectMacro(FrameProperty, vtkProperty2D);
450
452
456 vtkGetMacro(TextPad, int);
457 vtkSetMacro(TextPad, int);
459
461
466 vtkGetMacro(VerticalTitleSeparation, int);
467 vtkSetMacro(VerticalTitleSeparation, int);
469
471
475 vtkGetMacro(BarRatio, double);
476 vtkSetClampMacro(BarRatio, double, 0., 1.);
478
480
486 vtkGetMacro(TitleRatio, double);
487 vtkSetClampMacro(TitleRatio, double, 0., 1.);
489
491
497 vtkSetMacro(UnconstrainedFontSize, bool);
498 vtkGetMacro(UnconstrainedFontSize, bool);
499 vtkBooleanMacro(UnconstrainedFontSize, bool);
501
502protected:
505
530 virtual void RebuildLayout(vtkViewport* viewport);
531
537 virtual int RebuildLayoutIfNeeded(vtkViewport* viewport);
538
542 virtual void FreeLayoutStorage();
543
552 virtual void ComputeFrame();
553
564
568 virtual void ComputeSwatchPad();
569
570 // This method must set this->P->NanSwatchSize and this->P->NanBox.
571 // It may depend on layout performed by ComputeScalarBarThickness.
572 virtual void LayoutNanSwatch();
573
581
589
597
601 virtual void PrepareTitleText();
602
613 virtual void LayoutTitle();
614
620
630
642 virtual void LayoutTicks();
643
651 virtual void LayoutAnnotations();
652
656 virtual void ConfigureAnnotations();
657
661 virtual void ConfigureFrame();
662
666 virtual void DrawBoxes();
667
671 virtual void ConfigureScalarBar();
672
676 virtual void ConfigureTitle();
677
681 virtual void ConfigureTicks();
682
689 virtual void ConfigureNanSwatch();
690
695 virtual void ConfigureAboveBelowRangeSwatch(bool above);
696
705 virtual void EditAnnotations() {}
706
712 virtual void SizeTitle(double* titleSize, int* size, vtkViewport* viewport);
713
718 vtkScalarsToColors* lkup, double start, double delta, const double* range);
719
724 double barX, double barY, double barWidth, double barHeight, double delta, double pad);
730 double barX, double barY, double barWidth, double barHeight, double delta, double pad);
731
738 vtkDoubleArray* CustomLabels = nullptr;
739 bool UseCustomLabels = false;
740 vtkTypeBool DrawBackground; // off by default
741 vtkTypeBool DrawFrame; // off by default
742 vtkTypeBool DrawColorBar; // on by default
743 vtkTypeBool DrawTickLabels; // on by default
750 char* Title;
753 vtkTypeBool UseOpacity; // off by default
764 double BarRatio;
766 bool UnconstrainedFontSize; // off by default
767
771
775 int LastSize[2];
776 int LastOrigin[2];
777
779
781
786
793
797
802
803private:
804 vtkScalarBarActor(const vtkScalarBarActor&) = delete;
805 void operator=(const vtkScalarBarActor&) = delete;
806};
807
808VTK_ABI_NAMESPACE_END
809#endif
a actor that draws 2D data
Definition vtkActor2D.h:35
Some derived classes for the different colors commonly used.
Definition vtkColor.h:184
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition vtkIndent.h:29
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:80
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:43
represent surface properties of a 2D image
Internal state for the scalar bar actor shared with subclasses.
Create a scalar bar with labels.
virtual void LayoutNanSwatch()
vtkPolyData * Background
Polygon used to fill the background.
vtkTypeBool DrawFrame
User-changeable settings.
int RenderOverlay(vtkViewport *viewport) override
Draw the scalar bar and annotation text to the screen.
virtual void ComputeScalarBarThickness()
Determine how thick the scalar bar should be (on an axis perpendicular to the direction in which scal...
vtkTypeBool AnnotationTextScaling
User-changeable settings.
virtual void SetAnnotationTextProperty(vtkTextProperty *p)
Set/Get the annotation text property.
virtual void FreeLayoutStorage()
Free internal storage used by the previous layout.
virtual void ConfigureAnnotations()
Generate/configure the annotation labels using the laid-out geometry.
char * LabelFormat
User-changeable settings.
virtual void ComputeFrame()
If the scalar bar should be inset into a frame or rendered with a solid background,...
vtkTypeBool DrawBackground
User-changeable settings.
virtual void ComputeSwatchPad()
Compute a correct SwatchPad.
int RenderOpaqueGeometry(vtkViewport *viewport) override
Draw the scalar bar and annotation text to the screen.
vtkTextActor * TitleActor
The legend title text renderer.
~vtkScalarBarActor() override
int Orientation
User-changeable settings.
virtual void LayoutTitle()
Determine the position and size of the scalar bar title box.
char * BelowRangeAnnotation
User-changeable settings.
vtkProperty2D * BackgroundProperty
User-changeable settings.
virtual void ConfigureNanSwatch()
Generate/configure the NaN swatch using the laid-out geometry.
void SetOrientationToVertical()
Control the orientation of the scalar bar.
vtkTypeBool HasTranslucentPolygonalGeometry() override
Does this prop have some translucent polygonal geometry?
int MaximumNumberOfColors
User-changeable settings.
vtkTextProperty * AnnotationTextProperty
Font for annotation labels.
vtkTexturedActor2D * TextureActor
Actor for TexturePolyData.
virtual void LayoutBelowRangeSwatch()
Determine the size of the Below Range if it is to be rendered.
int NumberOfLabels
User-changeable settings.
double BarRatio
User-changeable settings.
void SetOrientationToHorizontal()
Control the orientation of the scalar bar.
vtkPolyData * Frame
Polyline used to highlight frame.
int PlaceAnnotationsVertically(double barX, double barY, double barWidth, double barHeight, double delta, double pad)
This method is called by ConfigureAnnotationLabels when Orientation is VTK_ORIENT_VERTICAL.
vtkPolyData * ScalarBar
Polygon(s) colored by LookupTable.
virtual void ConfigureTicks()
Generate/configure the tick-mark actors using the laid-out geometry.
vtkPolyDataMapper2D * FrameMapper
Mapper for Frame.
virtual void LayoutAnnotations()
This method must lay out annotation text and leader lines so they do not overlap.
virtual void RebuildLayout(vtkViewport *viewport)
Called from within RenderOpaqueGeometry when the internal state members need to be updated before ren...
int MapAnnotationLabels(vtkScalarsToColors *lkup, double start, double delta, const double *range)
Allocate actors for lookup table annotations and position them properly.
int TextPosition
User-changeable settings.
int MaximumHeightInPixels
User-changeable settings.
int VerticalTitleSeparation
User-changeable settings.
double AnnotationLeaderPadding
User-changeable settings.
bool UnconstrainedFontSize
User-changeable settings.
vtkTextProperty * TitleTextProperty
Font for the legend title.
virtual int RebuildLayoutIfNeeded(vtkViewport *viewport)
Calls RebuildLayout if it is needed such as when positions etc have changed.
int TextPad
User-changeable settings.
vtkActor2D * FrameActor
Actor for Frame.
vtkProperty2D * FrameProperty
User-changeable settings.
vtkPolyData * TexturePolyData
Polygon colored when UseOpacity is true.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the scalar bar and annotation text to the screen.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
virtual void SetTextPositionToPrecedeScalarBar()
Should the title and tick marks precede the scalar bar or succeed it? This is measured along the view...
virtual void SetTextPositionToSucceedScalarBar()
Should the title and tick marks precede the scalar bar or succeed it? This is measured along the view...
char * Title
User-changeable settings.
vtkTypeBool UseOpacity
User-changeable settings.
bool DrawBelowRangeSwatch
User-changeable settings.
virtual void LayoutAboveRangeSwatchPosn()
Determine the position of the Above Range if it is to be rendered.
virtual void EditAnnotations()
Subclasses may override this method to alter this->P->Labels, allowing the addition and removal of an...
vtkActor2D * BackgroundActor
Actor for Background.
virtual void DrawBoxes()
For debugging, add placement boxes to the frame polydata.
virtual void SetLookupTable(vtkScalarsToColors *)
Set/Get the lookup table to use.
char * AboveRangeAnnotation
User-changeable settings.
vtkTextProperty * LabelTextProperty
Font for tick labels.
vtkTypeBool DrawTickLabels
User-changeable settings.
virtual void ConfigureFrame()
Generate/configure the representation of the frame from laid-out geometry.
virtual void SetCustomLabels(vtkDoubleArray *labels)
Set/Get the fixed locations to use.
vtkTypeBool FixedAnnotationLeaderLineColor
User-changeable settings.
vtkTypeBool DrawColorBar
User-changeable settings.
char * NanAnnotation
User-changeable settings.
vtkPolyDataMapper2D * BackgroundMapper
Mapper for Background.
virtual void SetTitleTextProperty(vtkTextProperty *p)
Set/Get the title text property.
virtual void GetScalarBarRect(int rect[4], vtkViewport *viewport)
Fills rect with the dimensions of the scalar bar in viewport coordinates.
virtual void SizeTitle(double *titleSize, int *size, vtkViewport *viewport)
Compute the best size for the legend title.
virtual void ConfigureAboveBelowRangeSwatch(bool above)
Generate/configure the above/below range swatch using the laid-out geometry.
int PlaceAnnotationsHorizontally(double barX, double barY, double barWidth, double barHeight, double delta, double pad)
This method is called by ConfigureAnnotationLabels when Orientation is VTK_ORIENT_HORIZONTAL.
vtkTypeBool DrawNanAnnotation
User-changeable settings.
virtual void ConfigureScalarBar()
Generate/configure the scalar bar representation from laid-out geometry.
virtual void ComputeScalarBarLength()
Determine how long the scalar bar should be (on an axis parallel to the direction in which scalar val...
virtual void ConfigureTitle()
Generate/configure the title actor using the laid-out geometry.
static vtkScalarBarActor * New()
Instantiate object with 64 maximum colors; 5 labels; %%-#6.3g label format, no title,...
void ShallowCopy(vtkProp *prop) override
Shallow copy of a scalar bar actor.
char * ComponentTitle
User-changeable settings.
vtkPolyDataMapper2D * ScalarBarMapper
Mapper for ScalarBar.
vtkTexture * Texture
Color data for TexturePolyData.
vtkTypeBool DrawAnnotations
User-changeable settings.
vtkScalarBarActorInternal * P
Containers shared with subclasses.
vtkActor2D * ScalarBarActor
Actor for ScalarBar.
virtual void SetBackgroundProperty(vtkProperty2D *p)
Set/Get the background property.
double TitleRatio
User-changeable settings.
virtual void PrepareTitleText()
Set the title actor's input to the latest title (and subtitle) text.
double TextureGridWidth
User-changeable settings.
vtkTimeStamp BuildTime
Internal state used for rendering.
virtual void LayoutAboveRangeSwatch()
Determine the size of the Above Range if it is to be rendered.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetFrameProperty(vtkProperty2D *p)
Set/Get the frame property.
bool DrawAboveRangeSwatch
User-changeable settings.
int MaximumWidthInPixels
User-changeable settings.
int NumberOfLabelsBuilt
User-changeable settings.
virtual void LayoutForUnconstrainedFont()
This method sets the title and tick-box size and position for the UnconstrainedFontSize mode.
vtkScalarsToColors * LookupTable
The object this actor illustrates.
virtual void LayoutTicks()
Determine the size and placement of any tick marks to be rendered.
virtual void SetLabelTextProperty(vtkTextProperty *p)
Set/Get the labels text property.
Superclass for mapping scalar values to colors.
An actor that displays text.
2D text annotation
represent text properties.
handles properties associated with a texture map
Definition vtkTexture.h:58
actor that draws 2D data with texture support
record modification and/or execution time
abstract specification for Viewports
Definition vtkViewport.h:45
window superclass for vtkRenderWindow
Definition vtkWindow.h:25
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_ORIENT_VERTICAL
#define VTK_ORIENT_HORIZONTAL
#define VTK_INT_MAX
Definition vtkType.h:144