From 0cad21f3efa7f56b276aa2988ed112bc97fb6e3c Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Wed, 5 Jun 2019 15:31:49 +0200 Subject: [PATCH] ENH: improve handling of font sizes for scalarBar --- src/runTimePostProcessing/scalarBar.C | 23 +++++++++++++++-------- src/runTimePostProcessing/scalarBar.H | 21 ++++++++++++++++++++- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/runTimePostProcessing/scalarBar.C b/src/runTimePostProcessing/scalarBar.C index cfd2419..95a5413 100644 --- a/src/runTimePostProcessing/scalarBar.C +++ b/src/runTimePostProcessing/scalarBar.C @@ -57,8 +57,8 @@ void Foam::functionObjects::runTimePostPro::scalarBar::clear() position_ = {0.8, 0.1}; size_ = {0.1, 0.5}; title_ = ""; - fontSize_ = 12; - titleSize_ = 0; // 0 == Auto-sizing (factor 3) + fontSize_ = 0; // 0 == Auto-sizing (defaultFontSize) + titleSize_ = 0; // 0 == Auto-sizing (defaultTitleSizeFactor) nLabels_ = 5; labelFormat_ = "%f"; } @@ -121,6 +121,8 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add return false; } + const label fontSizeValue = (fontSize_ ? fontSize_ : defaultFontSize); + auto sbar = vtkSmartPointer<vtkScalarBarActor>::New(); sbar->SetLookupTable(lut); sbar->SetNumberOfLabels(nLabels_); @@ -139,6 +141,8 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add if (titleHack_) { // Place the scalar bar title ourselves + sbar->SetUnconstrainedFontSize(true); + titleActor = vtkSmartPointer<vtkTextActor>::New(); titleActor->SetInput(title_.c_str()); @@ -148,6 +152,7 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add else { // Use the standard scalar bar title + sbar->SetUnconstrainedFontSize(fontSize_ != 0); sbar->SetTitle(title_.c_str()); titleProp = sbar->GetTitleTextProperty(); } @@ -163,11 +168,11 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add } else { - // Auto = Factor 3 of fontSize - titleProp->SetFontSize(3*fontSize_); + // Auto + titleProp->SetFontSize(defaultTitleSizeFactor*fontSizeValue); // Or this?? - // if (!titleHack_) titleProp->SetFontSize(fontSize_); + // if (!titleHack_) titleProp->SetFontSize(fontSizeValue); } titleProp->SetJustificationToCentered(); @@ -178,14 +183,16 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add titleProp->SetColor(textColour[0], textColour[1], textColour[2]); - auto labProp = sbar->GetLabelTextProperty(); labProp->SetColor(textColour[0], textColour[1], textColour[2]); - labProp->SetFontSize(fontSize_); + if (titleHack_ || fontSize_) + { + labProp->SetFontSize(fontSizeValue); + } labProp->ShadowOff(); - labProp->BoldOff(); + labProp->BoldOff(); // or: labProp->SetBold(bold_); labProp->ItalicOff(); // Positioning diff --git a/src/runTimePostProcessing/scalarBar.H b/src/runTimePostProcessing/scalarBar.H index ce3280e..5507444 100644 --- a/src/runTimePostProcessing/scalarBar.H +++ b/src/runTimePostProcessing/scalarBar.H @@ -35,7 +35,7 @@ Description position | Viewport position (x y) of scalar bar | yes | vertical | Vertical scalar bar | no | true size | Viewport size (x y) of scalar bar | no | auto - fontSize | Label size | no | 12 + fontSize | Label size | no | 0 == auto titleSize | Title font size | no | 0 == auto labelFormat | Label format string (eg, "%f") | no | "%f" numberOfLabels | Total number of labels | no | 5 @@ -45,6 +45,19 @@ Description titleHack | Alternative placement strategy | no | yes \endtable +Note + The \c titleHack option is a leftover from much older VTK versions + that had poor handling of the scalar bar text. When this is active, + the normal scalar bar title is suppressed and placed manually + (with a predefined ratio of the base font-size). + + When the titleHack is off, the label and title font sizes are + automatically defined by the scalar bar size but can be overridden with + provided values. + + The effect of fontSize and titleSize is unfortunately not consistent + between titleHack on/off. + SourceFiles scalarBar.C @@ -77,6 +90,12 @@ namespace runTimePostPro class scalarBar { + //- The default font size when titleHack is on + static constexpr const label defaultFontSize = 18; + + //- The auto title/label ratio when titleHack is on + static constexpr const float defaultTitleSizeFactor = 1.5; + bool visible_; bool vertical_; bool bold_; -- GitLab