ENH: improve handling of font sizes for scalarBar

This commit is contained in:
Mark Olesen 2019-06-05 15:31:49 +02:00 committed by Andrew Heather
parent 4c25755202
commit a2906d4302
5 changed files with 43 additions and 17 deletions

View File

@ -173,8 +173,8 @@ surfaces
visible no; visible no;
position (0.8 0.1); position (0.8 0.1);
vertical yes; vertical yes;
fontSize 16; // fontSize 0; // automatic sizing
titleSize 18; // titleSize 0; // automatic sizing
title "velocity [m/s]"; title "velocity [m/s]";
labelFormat "%6.2f"; labelFormat "%6.2f";
numberOfLabels 5; numberOfLabels 5;

View File

@ -80,7 +80,7 @@ scalarBar
vertical true; vertical true;
position (0.8 0.1); position (0.8 0.1);
size (0.1 0.75); size (0.1 0.75);
fontSize 16; fontSize 0; // auto
labelFormat "%f"; labelFormat "%f";
numberOfLabels 5; numberOfLabels 5;
bold yes; bold yes;
@ -94,7 +94,7 @@ scalarBar
vertical false; vertical false;
position (0.2 0.1); position (0.2 0.1);
size (0.6 0.1); size (0.6 0.1);
fontSize 16; fontSize 0; // auto
labelFormat "%f"; labelFormat "%f";
numberOfLabels 5; numberOfLabels 5;
bold yes; bold yes;

View File

@ -57,8 +57,8 @@ void Foam::functionObjects::runTimePostPro::scalarBar::clear()
position_ = {0.8, 0.1}; position_ = {0.8, 0.1};
size_ = {0.1, 0.5}; size_ = {0.1, 0.5};
title_ = ""; title_ = "";
fontSize_ = 12; fontSize_ = 0; // 0 == Auto-sizing (defaultFontSize)
titleSize_ = 0; // 0 == Auto-sizing (factor 3) titleSize_ = 0; // 0 == Auto-sizing (defaultTitleSizeFactor)
nLabels_ = 5; nLabels_ = 5;
labelFormat_ = "%f"; labelFormat_ = "%f";
} }
@ -121,6 +121,8 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add
return false; return false;
} }
const label fontSizeValue = (fontSize_ ? fontSize_ : defaultFontSize);
auto sbar = vtkSmartPointer<vtkScalarBarActor>::New(); auto sbar = vtkSmartPointer<vtkScalarBarActor>::New();
sbar->SetLookupTable(lut); sbar->SetLookupTable(lut);
sbar->SetNumberOfLabels(nLabels_); sbar->SetNumberOfLabels(nLabels_);
@ -139,6 +141,8 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add
if (titleHack_) if (titleHack_)
{ {
// Place the scalar bar title ourselves // Place the scalar bar title ourselves
sbar->SetUnconstrainedFontSize(true);
titleActor = vtkSmartPointer<vtkTextActor>::New(); titleActor = vtkSmartPointer<vtkTextActor>::New();
titleActor->SetInput(title_.c_str()); titleActor->SetInput(title_.c_str());
@ -148,6 +152,7 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add
else else
{ {
// Use the standard scalar bar title // Use the standard scalar bar title
sbar->SetUnconstrainedFontSize(fontSize_ != 0);
sbar->SetTitle(title_.c_str()); sbar->SetTitle(title_.c_str());
titleProp = sbar->GetTitleTextProperty(); titleProp = sbar->GetTitleTextProperty();
} }
@ -163,11 +168,11 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add
} }
else else
{ {
// Auto = Factor 3 of fontSize // Auto
titleProp->SetFontSize(3*fontSize_); titleProp->SetFontSize(defaultTitleSizeFactor*fontSizeValue);
// Or this?? // Or this??
// if (!titleHack_) titleProp->SetFontSize(fontSize_); // if (!titleHack_) titleProp->SetFontSize(fontSizeValue);
} }
titleProp->SetJustificationToCentered(); titleProp->SetJustificationToCentered();
@ -178,14 +183,16 @@ bool Foam::functionObjects::runTimePostPro::scalarBar::add
titleProp->SetColor(textColour[0], textColour[1], textColour[2]); titleProp->SetColor(textColour[0], textColour[1], textColour[2]);
auto labProp = sbar->GetLabelTextProperty(); auto labProp = sbar->GetLabelTextProperty();
labProp->SetColor(textColour[0], textColour[1], textColour[2]); labProp->SetColor(textColour[0], textColour[1], textColour[2]);
labProp->SetFontSize(fontSize_); if (titleHack_ || fontSize_)
{
labProp->SetFontSize(fontSizeValue);
}
labProp->ShadowOff(); labProp->ShadowOff();
labProp->BoldOff(); labProp->BoldOff(); // or: labProp->SetBold(bold_);
labProp->ItalicOff(); labProp->ItalicOff();
// Positioning // Positioning

View File

@ -35,7 +35,7 @@ Description
position | Viewport position (x y) of scalar bar | yes | position | Viewport position (x y) of scalar bar | yes |
vertical | Vertical scalar bar | no | true vertical | Vertical scalar bar | no | true
size | Viewport size (x y) of scalar bar | no | auto 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 titleSize | Title font size | no | 0 == auto
labelFormat | Label format string (eg, "%f") | no | "%f" labelFormat | Label format string (eg, "%f") | no | "%f"
numberOfLabels | Total number of labels | no | 5 numberOfLabels | Total number of labels | no | 5
@ -45,6 +45,19 @@ Description
titleHack | Alternative placement strategy | no | yes titleHack | Alternative placement strategy | no | yes
\endtable \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 SourceFiles
scalarBar.C scalarBar.C
@ -77,6 +90,12 @@ namespace runTimePostPro
class scalarBar 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 visible_;
bool vertical_; bool vertical_;
bool bold_; bool bold_;

View File

@ -112,11 +112,11 @@ postPro1
visible yes; visible yes;
vertical false; vertical false;
titleHack false; titleHack false;
position (0.8 0); position (0.75 0);
size (0.2 0.1); size (0.22 0.1);
fontSize 8; // fontSize 0;
titleSize 24; // titleSize 0;
title "velocity [m/s]"; title "velocity [m/s]";
labelFormat "%.0f"; labelFormat "%.0f";
numberOfLabels 5; numberOfLabels 5;