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 
172 class vtkColor3ub;
173 class vtkPolyData;
174 class vtkPolyDataMapper2D;
175 class vtkProperty2D;
176 class vtkScalarsToColors;
178 class vtkTextActor;
179 class vtkTextMapper;
180 class vtkTextProperty;
181 class vtkTexture;
182 class vtkTexturedActor2D;
183 
184 #define VTK_ORIENT_HORIZONTAL 0
185 #define VTK_ORIENT_VERTICAL 1
186 
187 class VTKRENDERINGANNOTATION_EXPORT vtkScalarBarActor : public vtkActor2D
188 {
189 public:
191  void PrintSelf(ostream& os, vtkIndent indent) override;
192 
199 
201 
204  int RenderOpaqueGeometry(vtkViewport* viewport) override;
205  int RenderTranslucentPolygonalGeometry(vtkViewport*) override { return 0; }
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 
564  virtual void SetFrameProperty(vtkProperty2D* p);
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 
619 protected:
621  ~vtkScalarBarActor() override;
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 
697  virtual void LayoutBelowRangeSwatch();
698 
705  virtual void LayoutAboveRangeSwatch();
706 
714 
718  virtual void PrepareTitleText();
719 
730  virtual void LayoutTitle();
731 
737 
746  virtual void ComputeScalarBarLength();
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;
869  char* LabelFormat;
870  vtkTypeBool UseOpacity; // off by default
879  int TextPad;
881  double BarRatio;
882  double TitleRatio;
883  bool UnconstrainedFontSize; // off by default
884 
888 
892  int LastSize[2];
893  int LastOrigin[2];
894 
896 
898 
903 
910 
914 
919 
920 private:
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.
static vtkScalarBarActor * New()
Instantiate object with 64 maximum colors; 5 labels; %%-#6.3g label format, no title,...
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.
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