SaturnRingLibrary 0.9.2
SGL wrapper
Loading...
Searching...
No Matches

◆ ToClock()

ClockTime SRL::Tickstamp::ToClock ( ) const
inlinenoexcept

Converts ticks to clock display format (HH:MM:SS.mmm) using 1 DVU division.

Returns
Immutable ClockTime with hours, minutes, seconds, and milliseconds.

Performs a single DVU division via minutes divisor, then extracts seconds and milliseconds from fractional parts using pure truncation. Much cheaper than calling ToSeconds() + ToMinutes() separately.

How it works:
  1. DVU divides ticks by minutes divisor → Fxp 16.16 total minutes
  2. Integer part → total minutes → split into hours and minutes
  3. Fractional minutes × 60 → seconds + sub-second fraction
  4. Sub-second fraction × 1000 → milliseconds (0–999)
Range:
  • Maximum: ~546 hours (~22.7 days), limited by ToMinutes() Fxp range
  • Milliseconds precision: ~0.015ms (~15μs per step)
  • Updates visibly every frame at 60fps (~16ms steps)
Intended Use:
This method is designed exclusively for GUI display. Use ClockTime to show elapsed time in HH:MM:SS.mmm format. Do NOT use for timing comparisons or game logic — use ToSeconds(), ToMilliseconds(), or direct Tickstamp subtraction for precise timing operations.
Example:
Tickstamp elapsed = end - start;
ClockTime ct = elapsed.ToClock();
// Display as "02:15:30.500"
sprintf(buf, "%02u:%02u:%02u.%03u",
ct.Hours(), ct.Minutes(), ct.Seconds(), ct.Milliseconds());
ClockTime ToClock() const noexcept
Converts ticks to clock display format (HH:MM:SS.mmm) using 1 DVU division.
Definition srl_timer.hpp:599
uint16_t Hours() const noexcept
Hours component (0–546).
Definition srl_timer.hpp:102
uint16_t Milliseconds() const noexcept
Milliseconds component (0–999).
Definition srl_timer.hpp:105
uint8_t Minutes() const noexcept
Minutes component (0–59).
Definition srl_timer.hpp:103
uint8_t Seconds() const noexcept
Seconds component (0–59).
Definition srl_timer.hpp:104
Immutable clock display format (HH:MM:SS.mmm).
Definition srl_timer.hpp:81
Note
ClockTime is immutable — use ToSeconds()/ToMinutes() for comparisons.
Pure truncation means exact second boundaries may show as SS-1:999 instead of SS:000. This is consistent and visually correct for display.
See also
ToSeconds(), ToMinutes(), ToMilliseconds() for Fxp precision