Skip to content

Commit 5a23682

Browse files
committed
Refine narration for numbers
- Add narration for StarWrapper3 - Refine narration for planets and nebulae - also cleanup
1 parent e58b088 commit 5a23682

File tree

7 files changed

+368
-250
lines changed

7 files changed

+368
-250
lines changed

src/core/StelObject.cpp

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -363,11 +363,13 @@ QString StelObject::getMagnitudeNarration(const StelCore *core, const InfoString
363363
{
364364
if (flags&Magnitude)
365365
{
366-
float mag = getVMagnitude(core);
367-
QString str = QString("%1 %2").arg(q_("The object's visual magnitude is"), QString::number(getVMagnitude(core) + magoffset, 'f', decimals));
366+
const float mag = getVMagnitude(core);
367+
QString str = QString("%1 %2").arg(q_("The object's visual magnitude is"), StelUtils::narrateDecimal(mag + magoffset, decimals));
368368
const float airmass = getAirmass(core);
369369
if (airmass>-1.f) // Don't show extincted magnitude much below horizon where model is meaningless.
370-
str += QString(", %1 %2 %3 %4 %5. ").arg(qc_("reduced to", "object narration: reduced magnitude by extinction"), QString::number(getVMagnitudeWithExtinction(core, mag, magoffset), 'f', decimals), q_("by"), QString::number(airmass, 'f', 2), qc_("Airmasses of atmospheric extinction", "object narration"));
370+
str += QString(", %1 %2 %3 %4 %5. ").arg(qc_("reduced to", "object narration: reduced magnitude by extinction"),
371+
StelUtils::narrateDecimal(getVMagnitudeWithExtinction(core, mag, magoffset), decimals), q_("by"),
372+
StelUtils::narrateDecimal(airmass, 2), qc_("Airmasses of atmospheric extinction", "object narration"));
371373
str += getExtraInfoStrings(Magnitude).join("");
372374
return str;
373375
}
@@ -1079,8 +1081,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
10791081
dec_j2000 = M_PI_2 - dec_j2000;
10801082
if (withDecimalDegree)
10811083
{
1082-
firstCoordinate = StelUtils::radToDecDegNarration(ra_j2000,2,false,true);
1083-
secondCoordinate = StelUtils::radToDecDegNarration(dec_j2000);
1084+
firstCoordinate = StelUtils::narrateDecimal(ra_j2000*M_180_PI, 2);
1085+
secondCoordinate = StelUtils::narrateDecimal(dec_j2000*M_180_PI, 2);
10841086
}
10851087
else
10861088
{
@@ -1104,8 +1106,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
11041106
dec_equ = M_PI_2 - dec_equ;
11051107
if (withDecimalDegree)
11061108
{
1107-
firstCoordinate = StelUtils::radToDecDegNarration(ra_equ,2,false,true);
1108-
secondCoordinate = StelUtils::radToDecDegNarration(dec_equ);
1109+
firstCoordinate = StelUtils::narrateDecimal(ra_equ*M_180_PI, 2);
1110+
secondCoordinate = StelUtils::narrateDecimal(dec_equ*M_180_PI, 2);
11091111
}
11101112
else
11111113
{
@@ -1140,8 +1142,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
11401142
if (withDecimalDegree)
11411143
{
11421144
//firstCoordinate = QString("%1h").arg(ra_sidereal*12/M_PI, 0, 'f', 5); // Decimal hours
1143-
firstCoordinate = QString("%1°").arg(QString::number(ra_sidereal*M_180_PI, 'f', 2)); // Decimal degrees
1144-
secondCoordinate = StelUtils::radToDecDegNarration(dec_sidereal);
1145+
firstCoordinate = QString("%1°").arg(StelUtils::narrateDecimal(ra_sidereal*M_180_PI, 2)); // Decimal degrees
1146+
secondCoordinate = StelUtils::narrateDecimal(dec_sidereal*M_180_PI, 2);
11451147
}
11461148
else
11471149
{
@@ -1176,8 +1178,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
11761178
{
11771179
if (withDecimalDegree)
11781180
{
1179-
firstCoordinate = StelUtils::radToDecDegNarration(az);
1180-
secondCoordinate = StelUtils::radToDecDegNarration(alt_app);
1181+
firstCoordinate = StelUtils::narrateDecimal(az*M_180_PI, 2);
1182+
secondCoordinate = StelUtils::narrateDecimal(alt_app*M_180_PI, 2);
11811183
}
11821184
else
11831185
{
@@ -1189,8 +1191,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
11891191
{
11901192
if (withDecimalDegree)
11911193
{
1192-
firstCoordinate = StelUtils::radToDecDegNarration(az);
1193-
secondCoordinate = StelUtils::radToDecDegNarration(alt);
1194+
firstCoordinate = StelUtils::narrateDecimal(az*M_180_PI, 2);
1195+
secondCoordinate = StelUtils::narrateDecimal(alt*M_180_PI, 2);
11941196
}
11951197
else
11961198
{
@@ -1213,8 +1215,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
12131215
if (glong<0.) glong += 2.0*M_PI;
12141216
if (withDecimalDegree)
12151217
{
1216-
firstCoordinate = StelUtils::radToDecDegNarration(glong);
1217-
secondCoordinate = StelUtils::radToDecDegNarration(glat);
1218+
firstCoordinate = StelUtils::narrateDecimal(glong*M_180_PI, 2);
1219+
secondCoordinate = StelUtils::narrateDecimal(glat*M_180_PI, 2);
12181220
}
12191221
else
12201222
{
@@ -1236,8 +1238,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
12361238
if (sglong<0.) sglong += 2.0*M_PI;
12371239
if (withDecimalDegree)
12381240
{
1239-
firstCoordinate = StelUtils::radToDecDegNarration(sglong);
1240-
secondCoordinate = StelUtils::radToDecDegNarration(sglat);
1241+
firstCoordinate = StelUtils::narrateDecimal(sglong*M_180_PI, 2);
1242+
secondCoordinate = StelUtils::narrateDecimal(sglat*M_180_PI, 2);
12411243
}
12421244
else
12431245
{
@@ -1267,8 +1269,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
12671269
if (lambda<0) lambda+=2.0*M_PI;
12681270
if (withDecimalDegree)
12691271
{
1270-
firstCoordinate = StelUtils::radToDecDegNarration(lambda);
1271-
secondCoordinate = StelUtils::radToDecDegNarration(beta);
1272+
firstCoordinate = StelUtils::narrateDecimal(lambda*M_180_PI, 2);
1273+
secondCoordinate = StelUtils::narrateDecimal(beta*M_180_PI, 2);
12721274
}
12731275
else
12741276
{
@@ -1294,8 +1296,8 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
12941296
if (lambdaJDE<0) lambdaJDE+=2.0*M_PI;
12951297
if (withDecimalDegree)
12961298
{
1297-
firstCoordinate = StelUtils::radToDecDegNarration(lambdaJDE);
1298-
secondCoordinate = StelUtils::radToDecDegNarration(betaJDE);
1299+
firstCoordinate = StelUtils::narrateDecimal(lambdaJDE*M_180_PI, 2);
1300+
secondCoordinate = StelUtils::narrateDecimal(betaJDE*M_180_PI, 2);
12991301
}
13001302
else
13011303
{
@@ -1311,7 +1313,7 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
13111313

13121314
// report epsilon_A, angle between Earth's Axis and ecl. of date.
13131315
res += qc_("The Ecliptic obliquity of date is", "object narration") + " ";
1314-
res += withDecimalDegree ? StelUtils::radToDecDegNarration(eclJDE) : StelUtils::radToDmsNarration(eclJDE, false) + ". ";
1316+
res += withDecimalDegree ? StelUtils::narrateDecimal(eclJDE*M_180_PI, 2) : StelUtils::radToDmsNarration(eclJDE, false) + ". ";
13151317
}
13161318

13171319
// Specialized plugins (e.g. Astro Navigation or ethno-astronomical specialties) may want to provide additional types of coordinates here.
@@ -1479,34 +1481,34 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
14791481

14801482
if (withDecimalDegree)
14811483
{
1482-
firstCoordinate = StelUtils::radToDecDegStr(az,2,false,true);
1483-
secondCoordinate = StelUtils::radToDecDegStr(-theta);
1484+
firstCoordinate = StelUtils::narrateDecimal(az*M_180_PI, 2);
1485+
secondCoordinate = StelUtils::narrateDecimal(-theta*M_180_PI, 2);
14841486
}
14851487
else
14861488
{
1487-
firstCoordinate = StelUtils::radToDmsStr(az,true);
1488-
secondCoordinate = StelUtils::radToHmsStr(-theta,true);
1489+
firstCoordinate = StelUtils::radToDmsNarration(az,true);
1490+
secondCoordinate = StelUtils::radToHmsNarration(-theta,true);
14891491
}
14901492

1491-
res += QString("%1: %2 %3, %4 %5<br/>").arg(event, azStr, firstCoordinate, haStr, secondCoordinate);
1493+
res += QString("%1: %2 %3, %4 %5. ").arg(event, azStr, firstCoordinate, haStr, secondCoordinate);
14921494

14931495
// TRANSLATORS: Greatest Western Digression is the maximum western azimuth for stars with upper culmination between pole and zenith
14941496
event=qc_("Greatest Western Digression is at", "object narration");
14951497
if (withDecimalDegree)
14961498
{
1497-
firstCoordinate = StelUtils::radToDecDegStr(StelUtils::fmodpos(-az, 2.*M_PI),2,false,true);
1498-
secondCoordinate = StelUtils::radToDecDegStr(theta);
1499+
firstCoordinate = StelUtils::narrateDecimal(StelUtils::fmodpos(-az, 2.*M_PI)*M_180_PI, 2);
1500+
secondCoordinate = StelUtils::narrateDecimal(theta*M_180_PI, 2);
14991501
}
15001502
else
15011503
{
1502-
firstCoordinate = StelUtils::radToDmsStr(StelUtils::fmodpos(-az, 2.*M_PI),true);
1503-
secondCoordinate = StelUtils::radToHmsStr(theta,true);
1504+
firstCoordinate = StelUtils::radToDmsNarration(StelUtils::fmodpos(-az, 2.*M_PI),true);
1505+
secondCoordinate = StelUtils::radToHmsNarration(theta,true);
15041506
}
15051507

1506-
res += QString("%1: %2=%3, %4=%5<br/>").arg(event, azStr, firstCoordinate, haStr, secondCoordinate);
1508+
res += QString("%1: %2=%3, %4=%5. ").arg(event, azStr, firstCoordinate, haStr, secondCoordinate);
15071509
}
1508-
res += getExtraInfoStrings(flags&RTSTime).join(' ');
1509-
res += omgr->getExtraInfoStrings(flags&RTSTime).join(' ');
1510+
res += getExtraInfoStrings(flags&RTSTime).join(". ");
1511+
res += omgr->getExtraInfoStrings(flags&RTSTime).join(". ");
15101512

15111513
prevObjStr = currentObjStr;
15121514
prevYear = currentYear;
@@ -1534,7 +1536,7 @@ QString StelObject::getCommonNarration(const StelCore *core, const InfoStringGro
15341536
//res += omgr->getExtraInfoStrings(Extra).join("");
15351537
}
15361538

1537-
// Subclasses may want to exclude this by better wording sequence. For this, call with a moified flags mask that excludes what should not be repeated.
1539+
// Subclasses may want to exclude this by better wording sequence. For this, call with a modified flags mask that excludes what should not be repeated.
15381540
if (flags&IAUConstellation)
15391541
{
15401542
QString constel = (fuzzyEquals(eqNow.normSquared(),0.) ? QString() : ConstellationMgr::getIAUconstellationName(core->getIAUConstellation(eqNow)));
@@ -2015,8 +2017,8 @@ QString StelObject::getSolarLunarNarration(const StelCore *core, const InfoStrin
20152017
az = (useSouthAzimuth? 2. : 3.)*M_PI - az;
20162018
if (az > M_PI*2)
20172019
az -= M_PI*2;
2018-
azStr = (withDecimalDegree ? StelUtils::radToDecDegStr(az, 2) : StelUtils::radToDmsStr(az,false));
2019-
altStr = (withDecimalDegree ? StelUtils::radToDecDegStr(alt, 2) : StelUtils::radToDmsStr(alt,false));
2020+
azStr = (withDecimalDegree ? StelUtils::narrateDecimal(az*M_180_PI, 2) : StelUtils::radToDmsNarration(az,false));
2021+
altStr = (withDecimalDegree ? StelUtils::narrateDecimal(alt*M_180_PI, 2) : StelUtils::radToDmsNarration(alt,false));
20202022

20212023
// TRANSLATORS: Azimuth/Altitude
20222024
const QString SolarAz = (qc_("The sun's azimuth is ", "object narration"));
@@ -2029,8 +2031,8 @@ QString StelObject::getSolarLunarNarration(const StelCore *core, const InfoStrin
20292031
az = (useSouthAzimuth? 2. : 3.)*M_PI - az;
20302032
if (az > M_PI*2)
20312033
az -= M_PI*2;
2032-
azStr = (withDecimalDegree ? StelUtils::radToDecDegStr(az, 2) : StelUtils::radToDmsStr(az,false));
2033-
altStr = (withDecimalDegree ? StelUtils::radToDecDegStr(alt, 2) : StelUtils::radToDmsStr(alt,false));
2034+
azStr = (withDecimalDegree ? StelUtils::narrateDecimal(az*M_180_PI, 2) : StelUtils::radToDmsNarration(az,false));
2035+
altStr = (withDecimalDegree ? StelUtils::narrateDecimal(alt*M_180_PI, 2) : StelUtils::radToDmsNarration(alt,false));
20342036

20352037
// TRANSLATORS: Azimuth/Altitude
20362038
const QString LunarAz = (qc_("The Moon's azimuth is ", "object narration"));

src/core/StelUtils.cpp

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,25 @@ QString daysFloatToDHMS(float days)
148148

149149
return r;
150150
}
151+
QString daysFloatToDHMSnarration(float days)
152+
{
153+
float remain = days;
154+
155+
int d = static_cast<int> (remain); remain -= d;
156+
remain *= 24.0f;
157+
int h = static_cast<int> (remain); remain -= h;
158+
remain *= 60.0f;
159+
int m = static_cast<int> (remain); remain -= m;
160+
remain *= 60.0f;
151161

162+
auto r = QString("%1%2 %3%4 %5%6 %7 %8%9 ").arg(
163+
QString::number(d), qc_("days", "duration"),
164+
QString::number(h), qc_("hours", "duration"),
165+
QString::number(m), qc_("minutes", "duration"), qc_("and", "object narration"),
166+
narrateDecimal(remain, 0), qc_("seconds", "duration"));
167+
168+
return r;
169+
}
152170

153171
/*************************************************************************
154172
Convert an angle in radian to hms
@@ -209,7 +227,7 @@ QString radToDecDegNarration(const double angle, const int precision, const bool
209227
const QString degsign = qc_("degrees", "object narration");
210228
double deg = (positive ? fmodpos(angle, 2.0*M_PI) : std::fmod(angle, 2.0*M_PI)) * M_180_PI;
211229

212-
return QString("%1%2").arg(QString::number(deg, 'f', precision), degsign);
230+
return QString("%1%2").arg(narrateDecimal(deg, precision), degsign);
213231
}
214232

215233
/*************************************************************************
@@ -327,7 +345,7 @@ QString radToHmsNarration(const double angle, const bool decimal)
327345
const QString andStr=qc_("and", "object narration");
328346
const QString seconds=qc_("seconds", "object narration");
329347

330-
return QString("%1 %2, %3 %4, %5 %6 %7").arg(QString::number(h), hours, QString::number(m), minutes, andStr, QString::number(s, 'f', 1), seconds);
348+
return QString("%1 %2, %3 %4, %5 %6 %7").arg(QString::number(h), hours, QString::number(m), minutes, andStr, narrateDecimal(s, 1), seconds);
331349
}
332350

333351
/*************************************************************************
@@ -423,7 +441,7 @@ QString radToDmsPNarration(const double angle, const int precision, const bool u
423441
os << m << " " << qc_("arc minutes", "object narration") << " " << qc_("and", "object narration") << " ";
424442

425443
int width = (precision>0) ? 3 + precision : 2;
426-
os << QString::number(s, 'f', width) << " " << qc_("arc seconds", "object narration") ;
444+
os << narrateDecimal(s, width) << " " << qc_("arc seconds", "object narration") ;
427445
return str;
428446
}
429447

@@ -461,6 +479,20 @@ QString decDegToDmsStr(const double angle)
461479
decDegToDms(angle, sign, d, m, s);
462480
return QString("%1%2%3%4\'%5\"").arg(sign?'+':'-').arg(d).arg(QChar(0x00B0)).arg(m,2,10,QLatin1Char('0')).arg(static_cast<unsigned int>(s),2,10,QLatin1Char('0'));
463481
}
482+
// Convert an angle in decimal degrees to a dms formatted string for narration
483+
QString decDegToDmsNarration(const double angle, bool sayPlus)
484+
{
485+
bool sign;
486+
double s;
487+
unsigned int d, m;
488+
decDegToDms(angle, sign, d, m, s);
489+
return QString("%1 %2 %3, %4 %5, %6 %7").arg(sign ? (sayPlus ? qc_("plus", "object narration") : "") : qc_("minus", "object narration"),
490+
QString::number(d),
491+
q_("degreea"),
492+
QString::number(m),
493+
q_("minutes"), q_("and"),
494+
QString::number(static_cast<unsigned int>(s)));
495+
}
464496

465497
// Convert latitude in decimal degrees to a dms formatted string.
466498
QString decDegToLatitudeStr(const double latitude, bool dms)
@@ -490,9 +522,9 @@ QString decDegToLatitudeNarration(const double latitude, bool dms)
490522
unsigned int d, m;
491523
decDegToDms(latitude, sign, d, m, s);
492524
if (dms)
493-
return QString("%1: %2 %3, %4 %5, %6 %7 %8").arg((sign ? qc_("North", "object narration") : qc_("South", "object narration")), QString::number(d), degreesStr, QString::number(m), minutesStr, andStr, QString::number(round(s), 'f', 0), secondsStr);
525+
return QString("%1: %2 %3, %4 %5, %6 %7 %8").arg((sign ? qc_("North", "object narration") : qc_("South", "object narration")), QString::number(d), degreesStr, QString::number(m), minutesStr, andStr, narrateDecimal(round(s), 0), secondsStr);
494526
else
495-
return QString("%1: %2 %3").arg((sign ? qc_("North", "object narration") : qc_("South", "object narration")), QString::number(fabs(latitude), 'f', 2), qc_("degrees", "object narration"));
527+
return QString("%1: %2 %3").arg((sign ? qc_("North", "object narration") : qc_("South", "object narration")), narrateDecimal(fabs(latitude), 2), qc_("degrees", "object narration"));
496528
}
497529

498530

@@ -557,7 +589,7 @@ QString decDegToLongitudeNarration(const double longitude, bool eastPositive, bo
557589
if (dms)
558590
return QString("%1: %2 %3, %4 %5, %6 %7 %8").arg((sign ? positive : negative), QString::number(d), degreesStr, QString::number(m), minutesStr, andStr, QString::number(round(s)), secondsStr);
559591
else
560-
return QString("%1: %2 %3").arg((sign ? positive : negative), QString::number(fabs(longMod), 'f', 2), degreesStr);
592+
return QString("%1: %2 %3").arg((sign ? positive : negative), narrateDecimal(fabs(longMod), 2), degreesStr);
561593
}
562594

563595

@@ -1503,8 +1535,6 @@ QString hoursToHmsNarration(const double hours, const bool minutesOnly, const bo
15031535
const QString sAndStr=qc_("and", "object narration");
15041536
const QString sSeconds=qc_("seconds", "object narration");
15051537

1506-
1507-
15081538
int h = static_cast<int>(hours);
15091539
double minutes = (qAbs(hours)-qAbs(double(h)))*60.;
15101540
if (minutesOnly)
@@ -1531,7 +1561,7 @@ QString hoursToHmsNarration(const double hours, const bool minutesOnly, const bo
15311561
h += 1;
15321562
m = 0;
15331563
}
1534-
return QString("%1 %2, %3 %4, %5 %6 %7").arg(QString::number(h), sHours, QString::number(m), sMinutes, sAndStr, QString::number(s, 'f', 1), sSeconds);
1564+
return QString("%1 %2, %3 %4, %5 %6 %7").arg(QString::number(h), sHours, QString::number(m), sMinutes, sAndStr, narrateDecimal(s, 1), sSeconds);
15351565
}
15361566
}
15371567

@@ -1603,6 +1633,26 @@ QString hoursToNarration(const float hours, const bool minutesOnly)
16031633
}
16041634
*/
16051635

1636+
QString narrateDecimal(double num, int decimals)
1637+
{
1638+
bool isNegative = (num<0);
1639+
QString numStr=QString::number(fabs(num), 'f', decimals);
1640+
QStringList numList = numStr.split('.');
1641+
Q_ASSERT(numList.length()<3);
1642+
QString res;
1643+
if (isNegative)
1644+
res.append(q_("minus") + " ");
1645+
res.append(numList.constFirst());
1646+
if (numList.length()>1)
1647+
{
1648+
res.append(" " + qc_("point", "decimal separator") + " ");
1649+
for (QChar c: numList.at(1))
1650+
res.append(QString(c) + " ");
1651+
}
1652+
return res;
1653+
}
1654+
1655+
16061656
//! The method to splitting the text by substrings by some limit of string length
16071657
QString wrapText(const QString& s, const int limit)
16081658
{

src/core/StelUtils.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ namespace StelUtils
255255
//! Convert an angle in decimal degrees to a dms formatted string.
256256
//! @param angle input angle in decimal degrees
257257
QString decDegToDmsStr(const double angle);
258+
//! Convert an angle in decimal degrees to a dms formatted string for narration.
259+
//! @param sayPlus true if the positivw sign really should be spoken
260+
QString decDegToDmsNarration(const double angle, bool sayPlus=false);
258261

259262
//! Convert latitude in decimal degrees to a dms formatted string or use decimal values.
260263
//! @param latitude in decimal degrees
@@ -667,6 +670,11 @@ namespace StelUtils
667670
//QString hoursToNarration(const double hours, const bool minutesOnly = false); // OBSOLETE? TOO CONFUSE NAME.
668671
//QString hoursToNarration(const float hours, const bool minutesOnly = false);
669672

673+
//! Construct a speech-ready wording for ordinary floating point numbers.
674+
//! Accounts for
675+
//! - Minus sign
676+
//! - dot versus comma
677+
QString narrateDecimal(double num, int decimals=2);
670678

671679
//! Convert JD to hours and minutes
672680
QString getHoursMinutesFromJulianDay(const double julianDay);
@@ -676,6 +684,8 @@ namespace StelUtils
676684

677685
//! Convert days (float) to a time string
678686
QString daysFloatToDHMS(float days);
687+
//! Convert days (float) to a time string ready for speech output
688+
QString daysFloatToDHMSnarration(float days);
679689

680690
//! The method to splitting the text by substrings by some limit of string length
681691
QString wrapText(const QString& s, const int limit = 52);

src/core/modules/Nebula.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ friend class NebulaMgr;
269269
bool objectInAllowedSizeRangeLimits() const;
270270

271271
//! Return a narration text ready for synthesized speech output
272-
virtual QString getNarration(const StelCore *core, const InfoStringGroup& flags=StelObject::AllInfo) const override;
272+
QString getNarration(const StelCore *core, const InfoStringGroup& flags=StelObject::AllInfo) const override;
273273

274274
protected:
275275
//! Format the magnitude info string for the object

0 commit comments

Comments
 (0)