VTK  9.1.0
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=========================================================================*/
65#ifndef vtkScalarBarActor_h
66#define vtkScalarBarActor_h
67
68#include "vtkActor2D.h"
69#include "vtkDoubleArray.h" // for ivars
70#include "vtkRenderingAnnotationModule.h" // For export macro
71
72class vtkColor3ub;
73class vtkPolyData;
75class vtkProperty2D;
78class vtkTextActor;
79class vtkTextMapper;
80class vtkTextProperty;
81class vtkTexture;
83
84#define VTK_ORIENT_HORIZONTAL 0
85#define VTK_ORIENT_VERTICAL 1
86
87class VTKRENDERINGANNOTATION_EXPORT vtkScalarBarActor : public vtkActor2D
88{
89public:
91 void PrintSelf(ostream& os, vtkIndent indent) override;
92
99
101
104 int RenderOpaqueGeometry(vtkViewport* viewport) override;
106 int RenderOverlay(vtkViewport* viewport) override;
108
113
120
126 virtual void GetScalarBarRect(int rect[4], vtkViewport* viewport);
127
129
136 vtkGetObjectMacro(LookupTable, vtkScalarsToColors);
138
140
147 vtkSetMacro(UseOpacity, vtkTypeBool);
148 vtkGetMacro(UseOpacity, vtkTypeBool);
149 vtkBooleanMacro(UseOpacity, vtkTypeBool);
151
153
158 vtkSetClampMacro(MaximumNumberOfColors, int, 2, VTK_INT_MAX);
159 vtkGetMacro(MaximumNumberOfColors, int);
161
163
166 vtkSetClampMacro(NumberOfLabels, int, 0, 64);
167 vtkGetMacro(NumberOfLabels, int);
169
171
174 virtual void SetCustomLabels(vtkDoubleArray* labels);
175 vtkGetObjectMacro(CustomLabels, vtkDoubleArray);
177
179
183 vtkGetMacro(UseCustomLabels, bool);
184 vtkSetMacro(UseCustomLabels, bool);
185 vtkBooleanMacro(UseCustomLabels, bool);
187
189
192 vtkSetClampMacro(Orientation, int, VTK_ORIENT_HORIZONTAL, VTK_ORIENT_VERTICAL);
193 vtkGetMacro(Orientation, int);
194 void SetOrientationToHorizontal() { this->SetOrientation(VTK_ORIENT_HORIZONTAL); }
195 void SetOrientationToVertical() { this->SetOrientation(VTK_ORIENT_VERTICAL); }
197
199
203 vtkGetObjectMacro(TitleTextProperty, vtkTextProperty);
205
207
211 vtkGetObjectMacro(LabelTextProperty, vtkTextProperty);
213
215
219 vtkGetObjectMacro(AnnotationTextProperty, vtkTextProperty);
221
223
227 vtkSetStringMacro(LabelFormat);
228 vtkGetStringMacro(LabelFormat);
230
232
235 vtkSetStringMacro(Title);
236 vtkGetStringMacro(Title);
238
240
243 vtkSetStringMacro(ComponentTitle);
244 vtkGetStringMacro(ComponentTitle);
246
250 void ShallowCopy(vtkProp* prop) override;
251
253
256 vtkSetMacro(TextureGridWidth, double);
257 vtkGetMacro(TextureGridWidth, double);
259
261
264 vtkGetObjectMacro(TextureActor, vtkTexturedActor2D);
266
267 enum
268 {
269 PrecedeScalarBar = 0,
270 SucceedScalarBar
271 };
272
274
282 vtkSetClampMacro(TextPosition, int, PrecedeScalarBar, SucceedScalarBar);
283 vtkGetMacro(TextPosition, int);
285 {
286 this->SetTextPosition(vtkScalarBarActor::PrecedeScalarBar);
287 }
289 {
290 this->SetTextPosition(vtkScalarBarActor::SucceedScalarBar);
291 }
293
295
302 vtkSetMacro(MaximumWidthInPixels, int);
303 vtkGetMacro(MaximumWidthInPixels, int);
304 vtkSetMacro(MaximumHeightInPixels, int);
305 vtkGetMacro(MaximumHeightInPixels, int);
307
309
314 vtkSetMacro(AnnotationLeaderPadding, double);
315 vtkGetMacro(AnnotationLeaderPadding, double);
317
319
324 vtkSetMacro(DrawAnnotations, vtkTypeBool);
325 vtkGetMacro(DrawAnnotations, vtkTypeBool);
326 vtkBooleanMacro(DrawAnnotations, vtkTypeBool);
328
330
335 vtkSetMacro(DrawNanAnnotation, vtkTypeBool);
336 vtkGetMacro(DrawNanAnnotation, vtkTypeBool);
337 vtkBooleanMacro(DrawNanAnnotation, vtkTypeBool);
339
341
346 vtkSetMacro(DrawBelowRangeSwatch, bool);
347 vtkGetMacro(DrawBelowRangeSwatch, bool);
348 vtkBooleanMacro(DrawBelowRangeSwatch, bool);
350
352
355 vtkSetStringMacro(BelowRangeAnnotation);
356 vtkGetStringMacro(BelowRangeAnnotation);
358
360
365 vtkSetMacro(DrawAboveRangeSwatch, bool);
366 vtkGetMacro(DrawAboveRangeSwatch, bool);
367 vtkBooleanMacro(DrawAboveRangeSwatch, bool);
369
371
374 vtkSetStringMacro(AboveRangeAnnotation);
375 vtkGetStringMacro(AboveRangeAnnotation);
378
386 vtkSetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
387 vtkGetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
388 vtkBooleanMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
390
392
395 vtkSetStringMacro(NanAnnotation);
396 vtkGetStringMacro(NanAnnotation);
398
400
408 vtkSetMacro(AnnotationTextScaling, vtkTypeBool);
409 vtkGetMacro(AnnotationTextScaling, vtkTypeBool);
410 vtkBooleanMacro(AnnotationTextScaling, vtkTypeBool);
412
414
418 vtkSetMacro(DrawBackground, vtkTypeBool);
419 vtkGetMacro(DrawBackground, vtkTypeBool);
420 vtkBooleanMacro(DrawBackground, vtkTypeBool);
422
424
428 vtkSetMacro(DrawFrame, vtkTypeBool);
429 vtkGetMacro(DrawFrame, vtkTypeBool);
430 vtkBooleanMacro(DrawFrame, vtkTypeBool);
432
434
438 vtkSetMacro(DrawColorBar, vtkTypeBool);
439 vtkGetMacro(DrawColorBar, vtkTypeBool);
440 vtkBooleanMacro(DrawColorBar, vtkTypeBool);
442
444
447 vtkSetMacro(DrawTickLabels, vtkTypeBool);
448 vtkGetMacro(DrawTickLabels, vtkTypeBool);
449 vtkBooleanMacro(DrawTickLabels, vtkTypeBool);
451
453
457 vtkGetObjectMacro(BackgroundProperty, vtkProperty2D);
459
461
465 vtkGetObjectMacro(FrameProperty, vtkProperty2D);
467
469
473 vtkGetMacro(TextPad, int);
474 vtkSetMacro(TextPad, int);
476
478
483 vtkGetMacro(VerticalTitleSeparation, int);
484 vtkSetMacro(VerticalTitleSeparation, int);
486
488
492 vtkGetMacro(BarRatio, double);
493 vtkSetClampMacro(BarRatio, double, 0., 1.);
495
497
503 vtkGetMacro(TitleRatio, double);
504 vtkSetClampMacro(TitleRatio, double, 0., 1.);
506
508
514 vtkSetMacro(UnconstrainedFontSize, bool);
515 vtkGetMacro(UnconstrainedFontSize, bool);
516 vtkBooleanMacro(UnconstrainedFontSize, bool);
518
519protected:
522
547 virtual void RebuildLayout(vtkViewport* viewport);
548
554 virtual int RebuildLayoutIfNeeded(vtkViewport* viewport);
555
559 virtual void FreeLayoutStorage();
560
569 virtual void ComputeFrame();
570
581
585 virtual void ComputeSwatchPad();
586
587 // This method must set this->P->NanSwatchSize and this->P->NanBox.
588 // It may depend on layout performed by ComputeScalarBarThickness.
589 virtual void LayoutNanSwatch();
590
598
606
614
618 virtual void PrepareTitleText();
619
630 virtual void LayoutTitle();
631
637
647
659 virtual void LayoutTicks();
660
668 virtual void LayoutAnnotations();
669
673 virtual void ConfigureAnnotations();
674
678 virtual void ConfigureFrame();
679
683 virtual void DrawBoxes();
684
688 virtual void ConfigureScalarBar();
689
693 virtual void ConfigureTitle();
694
698 virtual void ConfigureTicks();
699
706 virtual void ConfigureNanSwatch();
707
712 virtual void ConfigureAboveBelowRangeSwatch(bool above);
713
722 virtual void EditAnnotations() {}
723
729 virtual void SizeTitle(double* titleSize, int* size, vtkViewport* viewport);
730
735 vtkScalarsToColors* lkup, double start, double delta, const double* range);
736
741 double barX, double barY, double barWidth, double barHeight, double delta, double pad);
747 double barX, double barY, double barWidth, double barHeight, double delta, double pad);
748
755 vtkDoubleArray* CustomLabels = nullptr;
756 bool UseCustomLabels = false;
757 vtkTypeBool DrawBackground; // off by default
758 vtkTypeBool DrawFrame; // off by default
759 vtkTypeBool DrawColorBar; // on by default
760 vtkTypeBool DrawTickLabels; // on by default
767 char* Title;
770 vtkTypeBool UseOpacity; // off by default
781 double BarRatio;
783 bool UnconstrainedFontSize; // off by default
784
788
792 int LastSize[2];
793 int LastOrigin[2];
794
796
798
803
810
814
819
820private:
821 vtkScalarBarActor(const vtkScalarBarActor&) = delete;
822 void operator=(const vtkScalarBarActor&) = delete;
823};
824
825#endif
a actor that draws 2D data
Definition: vtkActor2D.h:49
Some derived classes for the different colors commonly used.
Definition: vtkColor.h:204
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition: vtkIndent.h:43
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:95
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:57
represent surface properties of a 2D image
Definition: vtkProperty2D.h:47
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.
Definition: vtkTextActor.h:60
2D text annotation
Definition: vtkTextMapper.h:57
represent text properties.
handles properties associated with a texture map
Definition: vtkTexture.h:75
actor that draws 2D data with texture support
record modification and/or execution time
Definition: vtkTimeStamp.h:42
abstract specification for Viewports
Definition: vtkViewport.h:56
window superclass for vtkRenderWindow
Definition: vtkWindow.h:45
@ range
Definition: vtkX3D.h:244
@ size
Definition: vtkX3D.h:259
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_ORIENT_VERTICAL
#define VTK_ORIENT_HORIZONTAL
#define VTK_INT_MAX
Definition: vtkType.h:155