From a2906d4302f3f4f3264a2fc27d42c869487fe727 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 5 Jun 2019 15:31:49 +0200 Subject: [PATCH] ENH: improve handling of font sizes for scalarBar --- .../annotated/runTimePostProcessingDict | 4 ++-- .../visualization/runTimePostPro.cfg | 4 ++-- .../runTimePostProcessing/scalarBar.C | 23 ++++++++++++------- .../runTimePostProcessing/scalarBar.H | 21 ++++++++++++++++- .../system/runTimePostProcessing | 8 +++---- 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/etc/caseDicts/annotated/runTimePostProcessingDict b/etc/caseDicts/annotated/runTimePostProcessingDict index 92f4b2112f..d68d0570c2 100644 --- a/etc/caseDicts/annotated/runTimePostProcessingDict +++ b/etc/caseDicts/annotated/runTimePostProcessingDict @@ -173,8 +173,8 @@ surfaces visible no; position (0.8 0.1); vertical yes; - fontSize 16; - titleSize 18; + // fontSize 0; // automatic sizing + // titleSize 0; // automatic sizing title "velocity [m/s]"; labelFormat "%6.2f"; numberOfLabels 5; diff --git a/etc/caseDicts/postProcessing/visualization/runTimePostPro.cfg b/etc/caseDicts/postProcessing/visualization/runTimePostPro.cfg index cf5ab38a1c..911cee5374 100644 --- a/etc/caseDicts/postProcessing/visualization/runTimePostPro.cfg +++ b/etc/caseDicts/postProcessing/visualization/runTimePostPro.cfg @@ -80,7 +80,7 @@ scalarBar vertical true; position (0.8 0.1); size (0.1 0.75); - fontSize 16; + fontSize 0; // auto labelFormat "%f"; numberOfLabels 5; bold yes; @@ -94,7 +94,7 @@ scalarBar vertical false; position (0.2 0.1); size (0.6 0.1); - fontSize 16; + fontSize 0; // auto labelFormat "%f"; numberOfLabels 5; bold yes; diff --git a/src/functionObjects/graphics/runTimePostProcessing/scalarBar.C b/src/functionObjects/graphics/runTimePostProcessing/scalarBar.C index cfd2419530..95a5413c2d 100644 --- a/src/functionObjects/graphics/runTimePostProcessing/scalarBar.C +++ b/src/functionObjects/graphics/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::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::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/functionObjects/graphics/runTimePostProcessing/scalarBar.H b/src/functionObjects/graphics/runTimePostProcessing/scalarBar.H index ce3280e274..5507444dee 100644 --- a/src/functionObjects/graphics/runTimePostProcessing/scalarBar.H +++ b/src/functionObjects/graphics/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_; diff --git a/tutorials/incompressible/simpleFoam/windAroundBuildings/system/runTimePostProcessing b/tutorials/incompressible/simpleFoam/windAroundBuildings/system/runTimePostProcessing index 4de8c7fb65..9e758da298 100644 --- a/tutorials/incompressible/simpleFoam/windAroundBuildings/system/runTimePostProcessing +++ b/tutorials/incompressible/simpleFoam/windAroundBuildings/system/runTimePostProcessing @@ -112,11 +112,11 @@ postPro1 visible yes; vertical false; titleHack false; - position (0.8 0); - size (0.2 0.1); + position (0.75 0); + size (0.22 0.1); - fontSize 8; - titleSize 24; + // fontSize 0; + // titleSize 0; title "velocity [m/s]"; labelFormat "%.0f"; numberOfLabels 5;