Blender  V3.3
math_time.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2021 Blender Foundation. All rights reserved. */
3 
8 #include "BLI_math.h"
9 
10 void BLI_math_time_seconds_decompose(double seconds,
11  double *r_days,
12  double *r_hours,
13  double *r_minutes,
14  double *r_seconds,
15  double *r_milliseconds)
16 {
17  BLI_assert(r_days != NULL || r_hours != NULL || r_minutes != NULL || r_seconds != NULL ||
18  r_milliseconds != NULL);
19 
20  if (r_days != NULL) {
21  seconds = modf(seconds / SECONDS_IN_DAY, r_days) * SECONDS_IN_DAY;
22  }
23  if (r_hours != NULL) {
24  seconds = modf(seconds / SECONDS_IN_HOUR, r_hours) * SECONDS_IN_HOUR;
25  }
26  if (r_minutes != NULL) {
27  seconds = modf(seconds / SECONDS_IN_MINUTE, r_minutes) * SECONDS_IN_MINUTE;
28  }
29  if (r_seconds != NULL) {
30  seconds = modf(seconds, r_seconds);
31  }
32  if (r_milliseconds != NULL) {
33  *r_milliseconds = seconds / SECONDS_IN_MILLISECONDS;
34  }
35  else if (r_seconds != NULL) {
36  *r_seconds += seconds;
37  }
38  else if (r_minutes != NULL) {
39  *r_minutes += seconds / SECONDS_IN_MINUTE;
40  }
41  else if (r_hours != NULL) {
42  *r_hours += seconds / SECONDS_IN_HOUR;
43  }
44  else if (r_days != NULL) {
45  *r_days = seconds / SECONDS_IN_DAY;
46  }
47 }
#define BLI_assert(a)
Definition: BLI_assert.h:46
#define SECONDS_IN_MILLISECONDS
Definition: BLI_math_time.h:18
#define SECONDS_IN_MINUTE
Definition: BLI_math_time.h:19
#define SECONDS_IN_HOUR
Definition: BLI_math_time.h:25
#define SECONDS_IN_DAY
Definition: BLI_math_time.h:24
void BLI_math_time_seconds_decompose(double seconds, double *r_days, double *r_hours, double *r_minutes, double *r_seconds, double *r_milliseconds)
Definition: math_time.c:10