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=========================================================================*/
165#ifndef vtkScalarBarActor_h
166#define vtkScalarBarActor_h
167
168#include "vtkActor2D.h"
169#include "vtkDoubleArray.h" // for ivars
170#include "vtkRenderingAnnotationModule.h" // For export macro
171
172class vtkColor3ub;
173class vtkPolyData;
175class vtkProperty2D;
178class vtkTextActor;
179class vtkTextMapper;
180class vtkTextProperty;
181class vtkTexture;
183
184#define VTK_ORIENT_HORIZONTAL 0
185#define VTK_ORIENT_VERTICAL 1
186
187class VTKRENDERINGANNOTATION_EXPORT vtkScalarBarActor : public vtkActor2D
188{
189public:
191 void PrintSelf(ostream& os, vtkIndent indent) override;
192
199
201
204 int RenderOpaqueGeometry(vtkViewport* viewport) override;
206 int RenderOverlay(vtkViewport* viewport) override;
208
213
220
226 virtual void GetScalarBarRect(int rect[4], vtkViewport* viewport);
227
229
236 vtkGetObjectMacro(LookupTable, vtkScalarsToColors);
238
240
247 vtkSetMacro(UseOpacity, vtkTypeBool);
248 vtkGetMacro(UseOpacity, vtkTypeBool);
249 vtkBooleanMacro(UseOpacity, vtkTypeBool);
251
253
258 vtkSetClampMacro(MaximumNumberOfColors, int, 2, VTK_INT_MAX);
259 vtkGetMacro(MaximumNumberOfColors, int);
261
263
266 vtkSetClampMacro(NumberOfLabels, int, 0, 64);
267 vtkGetMacro(NumberOfLabels, int);
269
271
274 virtual void SetCustomLabels(vtkDoubleArray* labels);
275 vtkGetObjectMacro(CustomLabels, vtkDoubleArray);
277
279
283 vtkGetMacro(UseCustomLabels, bool);
284 vtkSetMacro(UseCustomLabels, bool);
285 vtkBooleanMacro(UseCustomLabels, bool);
287
289
292 vtkSetClampMacro(Orientation, int, VTK_ORIENT_HORIZONTAL, VTK_ORIENT_VERTICAL);
293 vtkGetMacro(Orientation, int);
294 void SetOrientationToHorizontal() { this->SetOrientation(VTK_ORIENT_HORIZONTAL); }
295 void SetOrientationToVertical() { this->SetOrientation(VTK_ORIENT_VERTICAL); }
297
299
303 vtkGetObjectMacro(TitleTextProperty, vtkTextProperty);
305
307
311 vtkGetObjectMacro(LabelTextProperty, vtkTextProperty);
313
315
319 vtkGetObjectMacro(AnnotationTextProperty, vtkTextProperty);
321
323
327 vtkSetStringMacro(LabelFormat);
328 vtkGetStringMacro(LabelFormat);
330
332
335 vtkSetStringMacro(Title);
336 vtkGetStringMacro(Title);
338
340
343 vtkSetStringMacro(ComponentTitle);
344 vtkGetStringMacro(ComponentTitle);
346
350 void ShallowCopy(vtkProp* prop) override;
351
353
356 vtkSetMacro(TextureGridWidth, double);
357 vtkGetMacro(TextureGridWidth, double);
359
361
364 vtkGetObjectMacro(TextureActor, vtkTexturedActor2D);
366
367 enum
368 {
369 PrecedeScalarBar = 0,
370 SucceedScalarBar
371 };
372
374
382 vtkSetClampMacro(TextPosition, int, PrecedeScalarBar, SucceedScalarBar);
383 vtkGetMacro(TextPosition, int);
385 {
386 this->SetTextPosition(vtkScalarBarActor::PrecedeScalarBar);
387 }
389 {
390 this->SetTextPosition(vtkScalarBarActor::SucceedScalarBar);
391 }
393
395
402 vtkSetMacro(MaximumWidthInPixels, int);
403 vtkGetMacro(MaximumWidthInPixels, int);
404 vtkSetMacro(MaximumHeightInPixels, int);
405 vtkGetMacro(MaximumHeightInPixels, int);
407
409
414 vtkSetMacro(AnnotationLeaderPadding, double);
415 vtkGetMacro(AnnotationLeaderPadding, double);
417
419
424 vtkSetMacro(DrawAnnotations, vtkTypeBool);
425 vtkGetMacro(DrawAnnotations, vtkTypeBool);
426 vtkBooleanMacro(DrawAnnotations, vtkTypeBool);
428
430
435 vtkSetMacro(DrawNanAnnotation, vtkTypeBool);
436 vtkGetMacro(DrawNanAnnotation, vtkTypeBool);
437 vtkBooleanMacro(DrawNanAnnotation, vtkTypeBool);
439
441
446 vtkSetMacro(DrawBelowRangeSwatch, bool);
447 vtkGetMacro(DrawBelowRangeSwatch, bool);
448 vtkBooleanMacro(DrawBelowRangeSwatch, bool);
450
452
455 vtkSetStringMacro(BelowRangeAnnotation);
456 vtkGetStringMacro(BelowRangeAnnotation);
458
460
465 vtkSetMacro(DrawAboveRangeSwatch, bool);
466 vtkGetMacro(DrawAboveRangeSwatch, bool);
467 vtkBooleanMacro(DrawAboveRangeSwatch, bool);
469
471
474 vtkSetStringMacro(AboveRangeAnnotation);
475 vtkGetStringMacro(AboveRangeAnnotation);
478
486 vtkSetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
487 vtkGetMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
488 vtkBooleanMacro(FixedAnnotationLeaderLineColor, vtkTypeBool);
490
492
495 vtkSetStringMacro(NanAnnotation);
496 vtkGetStringMacro(NanAnnotation);
498
500
508 vtkSetMacro(AnnotationTextScaling, vtkTypeBool);
509 vtkGetMacro(AnnotationTextScaling, vtkTypeBool);
510 vtkBooleanMacro(AnnotationTextScaling, vtkTypeBool);
512
514
518 vtkSetMacro(DrawBackground, vtkTypeBool);
519 vtkGetMacro(DrawBackground, vtkTypeBool);
520 vtkBooleanMacro(DrawBackground, vtkTypeBool);
522
524
528 vtkSetMacro(DrawFrame, vtkTypeBool);
529 vtkGetMacro(DrawFrame, vtkTypeBool);
530 vtkBooleanMacro(DrawFrame, vtkTypeBool);
532
534
538 vtkSetMacro(DrawColorBar, vtkTypeBool);
539 vtkGetMacro(DrawColorBar, vtkTypeBool);
540 vtkBooleanMacro(DrawColorBar, vtkTypeBool);
542
544
547 vtkSetMacro(DrawTickLabels, vtkTypeBool);
548 vtkGetMacro(DrawTickLabels, vtkTypeBool);
549 vtkBooleanMacro(DrawTickLabels, vtkTypeBool);
551
553
557 vtkGetObjectMacro(BackgroundProperty, vtkProperty2D);
559
561
565 vtkGetObjectMacro(FrameProperty, vtkProperty2D);
567
569
573 vtkGetMacro(TextPad, int);
574 vtkSetMacro(TextPad, int);
576
578
583 vtkGetMacro(VerticalTitleSeparation, int);
584 vtkSetMacro(VerticalTitleSeparation, int);
586
588
592 vtkGetMacro(BarRatio, double);
593 vtkSetClampMacro(BarRatio, double, 0., 1.);
595
597
603 vtkGetMacro(TitleRatio, double);
604 vtkSetClampMacro(TitleRatio, double, 0., 1.);
606
608
614 vtkSetMacro(UnconstrainedFontSize, bool);
615 vtkGetMacro(UnconstrainedFontSize, bool);
616 vtkBooleanMacro(UnconstrainedFontSize, bool);
618
619protected:
622
647 virtual void RebuildLayout(vtkViewport* viewport);
648
654 virtual int RebuildLayoutIfNeeded(vtkViewport* viewport);
655
659 virtual void FreeLayoutStorage();
660
669 virtual void ComputeFrame();
670
681
685 virtual void ComputeSwatchPad();
686
687 // This method must set this->P->NanSwatchSize and this->P->NanBox.
688 // It may depend on layout performed by ComputeScalarBarThickness.
689 virtual void LayoutNanSwatch();
690
698
706
714
718 virtual void PrepareTitleText();
719
730 virtual void LayoutTitle();
731
737
747
759 virtual void LayoutTicks();
760
768 virtual void LayoutAnnotations();
769
773 virtual void ConfigureAnnotations();
774
778 virtual void ConfigureFrame();
779
783 virtual void DrawBoxes();
784
788 virtual void ConfigureScalarBar();
789
793 virtual void ConfigureTitle();
794
798 virtual void ConfigureTicks();
799
806 virtual void ConfigureNanSwatch();
807
812 virtual void ConfigureAboveBelowRangeSwatch(bool above);
813
822 virtual void EditAnnotations() {}
823
829 virtual void SizeTitle(double* titleSize, int* size, vtkViewport* viewport);
830
835 vtkScalarsToColors* lkup, double start, double delta, const double* range);
836
841 double barX, double barY, double barWidth, double barHeight, double delta, double pad);
847 double barX, double barY, double barWidth, double barHeight, double delta, double pad);
848
855 vtkDoubleArray* CustomLabels = nullptr;
856 bool UseCustomLabels = false;
857 vtkTypeBool DrawBackground; // off by default
858 vtkTypeBool DrawFrame; // off by default
859 vtkTypeBool DrawColorBar; // on by default
860 vtkTypeBool DrawTickLabels; // on by default
867 char* Title;
870 vtkTypeBool UseOpacity; // off by default
881 double BarRatio;
883 bool UnconstrainedFontSize; // off by default
884
888
892 int LastSize[2];
893 int LastOrigin[2];
894
896
898
903
910
914
919
920private:
921 vtkScalarBarActor(const vtkScalarBarActor&) = delete;
922 void operator=(const vtkScalarBarActor&) = delete;
923};
924
925#endif
a actor that draws 2D data
Definition: vtkActor2D.h:149
Some derived classes for the different colors commonly used.
Definition: vtkColor.h:304
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition: vtkIndent.h:113
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:67
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.
Definition: vtkTextActor.h:160
2D text annotation
represent text properties.
handles properties associated with a texture map
Definition: vtkTexture.h:175
actor that draws 2D data with texture support
record modification and/or execution time
Definition: vtkTimeStamp.h:52
abstract specification for Viewports
Definition: vtkViewport.h:47
window superclass for vtkRenderWindow
Definition: vtkWindow.h:36
@ 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