@@ -32,6 +32,7 @@ The following styles are supported:
32
32
- kNESReal: arbitrary real number
33
33
- kNESDegree: angle in degree:minutes:seconds format
34
34
- kNESMinSec: time in minutes:seconds format
35
+ - kNESMinSecCent: time in minutes:seconds.centiseconds format
35
36
- kNESHourMin: time in hour:minutes format
36
37
- kNESHourMinSec: time in hour:minutes:seconds format
37
38
- kNESDayMYear: date in day/month/year format
@@ -184,7 +185,8 @@ static Bool_t IsGoodChar(char c, TGNumberFormat::EStyle style,
184
185
(style == TGNumberFormat::kNESRealFour ) ||
185
186
(style == TGNumberFormat::kNESReal ) ||
186
187
(style == TGNumberFormat::kNESDegree ) ||
187
- (style == TGNumberFormat::kNESMinSec )) &&
188
+ (style == TGNumberFormat::kNESMinSec ) ||
189
+ (style == TGNumberFormat::kNESMinSecCent )) &&
188
190
(attr == TGNumberFormat::kNEAAnyNumber )) {
189
191
return kTRUE ;
190
192
}
@@ -199,6 +201,7 @@ static Bool_t IsGoodChar(char c, TGNumberFormat::EStyle style,
199
201
(style == TGNumberFormat::kNESReal ) ||
200
202
(style == TGNumberFormat::kNESDegree ) ||
201
203
(style == TGNumberFormat::kNESMinSec ) ||
204
+ (style == TGNumberFormat::kNESMinSecCent ) ||
202
205
(style == TGNumberFormat::kNESHourMin ) ||
203
206
(style == TGNumberFormat::kNESHourMinSec ) ||
204
207
(style == TGNumberFormat::kNESDayMYear ) ||
@@ -208,6 +211,7 @@ static Bool_t IsGoodChar(char c, TGNumberFormat::EStyle style,
208
211
if ((c == ' :' ) &&
209
212
((style == TGNumberFormat::kNESDegree ) ||
210
213
(style == TGNumberFormat::kNESMinSec ) ||
214
+ (style == TGNumberFormat::kNESMinSecCent ) ||
211
215
(style == TGNumberFormat::kNESHourMin ) ||
212
216
(style == TGNumberFormat::kNESHourMinSec ) ||
213
217
(style == TGNumberFormat::kNESDayMYear ) ||
@@ -504,6 +508,22 @@ static char *DIntToStr(char *text, Long_t l, Bool_t Sec, char Del)
504
508
return text;
505
509
}
506
510
511
+ // //////////////////////////////////////////////////////////////////////////////
512
+ // / For kNESMinSecCent
513
+
514
+ static char *DIntToStr (char *text, Long_t l, char Del, char Del2)
515
+ {
516
+ TString s;
517
+ s = StringInt (TMath::Abs (l) / 6000 , 0 ) + Del +
518
+ StringInt ((TMath::Abs (l) % 6000 ) / 100 , 2 ) + Del2 +
519
+ StringInt (TMath::Abs (l) % 100 , 2 );
520
+ if (l < 0 ) {
521
+ s = " -" + s;
522
+ }
523
+ strlcpy (text, (const char *) s, 256 );
524
+ return text;
525
+ }
526
+
507
527
// //////////////////////////////////////////////////////////////////////////////
508
528
509
529
static void GetNumbers (const char *s, Int_t & Sign,
@@ -657,6 +677,10 @@ static Long_t TranslateToNum(const char *text,
657
677
case TGNumberFormat::kNESMinSec :
658
678
GetNumbers (text, sign, n1, 12 , n2, 2 , n3, 0 , " .,:" );
659
679
return sign * (60 * n1 + GetSignificant (n2, 60 ));
680
+ case TGNumberFormat::kNESMinSecCent :
681
+ GetNumbers (text, sign, n1, 12 , n2, 2 , n3, 2 , " .,:" );
682
+ return 6000 * n1 + 100 *GetSignificant (n2, 60 ) +
683
+ GetSignificant (n3, 100 );
660
684
case TGNumberFormat::kNESHourMin :
661
685
GetNumbers (text, sign, n1, 12 , n2, 2 , n3, 0 , " .,:" );
662
686
return 60 * n1 + GetSignificant (n2, 60 );
@@ -697,6 +721,8 @@ static char *TranslateToStr(char *text, Long_t l,
697
721
return DIntToStr (text, l % (24 * 3600 ), kTRUE , ' :' );
698
722
case TGNumberFormat::kNESMinSec :
699
723
return DIntToStr (text, l, kFALSE , ' :' );
724
+ case TGNumberFormat::kNESMinSecCent :
725
+ return DIntToStr (text, l % (60 * 6000 ), ' :' , ' .' );
700
726
case TGNumberFormat::kNESHourMin :
701
727
return DIntToStr (text, l % (24 * 60 ), kFALSE , ' :' );
702
728
case TGNumberFormat::kNESDayMYear :
@@ -1146,6 +1172,9 @@ void TGNumberEntryField::SetNumber(Double_t val, Bool_t emit)
1146
1172
case kNESMinSec :
1147
1173
SetIntNumber (Round (val), emit);
1148
1174
break ;
1175
+ case kNESMinSecCent :
1176
+ SetIntNumber (Round (val), emit);
1177
+ break ;
1149
1178
case kNESHourMin :
1150
1179
SetIntNumber (Round (val), emit);
1151
1180
break ;
@@ -1177,7 +1206,8 @@ void TGNumberEntryField::SetIntNumber(Long_t val, Bool_t emit)
1177
1206
}
1178
1207
1179
1208
// //////////////////////////////////////////////////////////////////////////////
1180
- // / Set the numeric value (time format).
1209
+ // / Set the numeric value (time format). In case of kNESMinSecCent, pass the
1210
+ // / centiseconds in the hour variable.
1181
1211
1182
1212
void TGNumberEntryField::SetTime (Int_t hour, Int_t min, Int_t sec, Bool_t emit)
1183
1213
{
@@ -1187,10 +1217,11 @@ void TGNumberEntryField::SetTime(Int_t hour, Int_t min, Int_t sec, Bool_t emit)
1187
1217
TMath::Abs (sec), emit);
1188
1218
break ;
1189
1219
case kNESMinSec :
1190
- {
1191
- SetIntNumber (60 * min + sec, emit);
1192
- break ;
1193
- }
1220
+ SetIntNumber (60 * TMath::Abs (min) + TMath::Abs (sec), emit);
1221
+ break ;
1222
+ case kNESMinSecCent :
1223
+ SetIntNumber (6000 *TMath::Abs (min) + 100 * TMath::Abs (sec) + TMath::Abs (hour), emit);
1224
+ break ;
1194
1225
case kNESHourMin :
1195
1226
SetIntNumber (60 * TMath::Abs (hour) + TMath::Abs (min), emit);
1196
1227
break ;
@@ -1267,6 +1298,8 @@ Double_t TGNumberEntryField::GetNumber() const
1267
1298
return (Double_t) GetIntNumber ();
1268
1299
case kNESMinSec :
1269
1300
return (Double_t) GetIntNumber ();
1301
+ case kNESMinSecCent :
1302
+ return (Double_t) GetIntNumber ();
1270
1303
case kNESHourMin :
1271
1304
return (Double_t) GetIntNumber ();
1272
1305
case kNESDayMYear :
@@ -1289,7 +1322,8 @@ Long_t TGNumberEntryField::GetIntNumber() const
1289
1322
}
1290
1323
1291
1324
// //////////////////////////////////////////////////////////////////////////////
1292
- // / Get the numeric value (time format).
1325
+ // / Get the numeric value (time format). In case of kNESMinSecCent, the first
1326
+ // / variable (hour) will store instead the centiseconds.
1293
1327
1294
1328
void TGNumberEntryField::GetTime (Int_t & hour, Int_t & min, Int_t & sec) const
1295
1329
{
@@ -1314,6 +1348,14 @@ void TGNumberEntryField::GetTime(Int_t & hour, Int_t & min, Int_t & sec) const
1314
1348
}
1315
1349
break ;
1316
1350
}
1351
+ case kNESMinSecCent :
1352
+ {
1353
+ Long_t l = GetIntNumber ();
1354
+ min = TMath::Abs (l) / 6000 ;
1355
+ sec = (TMath::Abs (l) % 60 ) / 100 ;
1356
+ hour = TMath::Abs (l) % 100 ;// centisec is stored in variable named hour
1357
+ break ;
1358
+ }
1317
1359
case kNESHourMin :
1318
1360
{
1319
1361
Long_t l = GetIntNumber ();
@@ -1398,7 +1440,7 @@ void TGNumberEntryField::IncreaseNumber(EStepSize step,
1398
1440
if ((fNumStyle == kNESDegree ) || (fNumStyle == kNESHourMinSec ) ||
1399
1441
(fNumStyle == kNESMinSec ) || (fNumStyle == kNESHourMin ) ||
1400
1442
(fNumStyle == kNESDayMYear ) || (fNumStyle == kNESMDayYear ) ||
1401
- (fNumStyle == kNESHex )) {
1443
+ (fNumStyle == kNESHex ) || ( fNumStyle == kNESMinSecCent ) ) {
1402
1444
logstep = kFALSE ;
1403
1445
switch (step) {
1404
1446
case kNSSSmall :
@@ -1518,6 +1560,21 @@ void TGNumberEntryField::IncreaseNumber(EStepSize step,
1518
1560
l = 1 ;
1519
1561
break ;
1520
1562
}
1563
+ case kNESMinSecCent :
1564
+ {
1565
+ if (mag > 60 )
1566
+ l += sign * 36 * mag;
1567
+ else if (mag > 6 )
1568
+ l += sign * 6 * mag;
1569
+ else
1570
+ l += sign * mag;
1571
+ CheckMinMax (l, fNumStyle , fNumLimits , fNumMin , fNumMax );
1572
+ if (l < 0 )
1573
+ l = (60 * 6000 ) - ((-l) % (60 * 6000 ));
1574
+ if (l > 0 )
1575
+ l = l % (60 * 6000 );
1576
+ break ;
1577
+ }
1521
1578
case kNESHourMin :
1522
1579
{
1523
1580
if (mag > 6 )
@@ -2185,6 +2242,11 @@ void TGNumberEntry::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
2185
2242
out << min*60 + sec << " ," << digits << " ," << WidgetId ()
2186
2243
<< " ,(TGNumberFormat::EStyle) " << GetNumStyle ();
2187
2244
break ;
2245
+ case kNESMinSecCent :
2246
+ // GetTime returns the centisecs in the hour variable
2247
+ out << min*6000 + sec*100 + hour << " ," << digits << " ," << WidgetId ()
2248
+ << " ,(TGNumberFormat::EStyle) " << GetNumStyle ();
2249
+ break ;
2188
2250
case kNESHourMin :
2189
2251
out << hour*60 + min << " ," << digits << " ," << WidgetId ()
2190
2252
<< " ,(TGNumberFormat::EStyle) " << GetNumStyle ();
@@ -2300,6 +2362,11 @@ void TGNumberEntryField::SavePrimitive(std::ostream &out, Option_t *option /*= "
2300
2362
out << min*60 + sec
2301
2363
<< " ,(TGNumberFormat::EStyle) " << GetNumStyle ();
2302
2364
break ;
2365
+ case kNESMinSecCent :
2366
+ // GetTime returns centisec in the hour variable
2367
+ out << min*6000 + sec*100 + hour
2368
+ << " ,(TGNumberFormat::EStyle) " << GetNumStyle ();
2369
+ break ;
2303
2370
case kNESHourMin :
2304
2371
out << hour*60 + min
2305
2372
<< " ,(TGNumberFormat::EStyle) " << GetNumStyle ();
0 commit comments