xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
time_duration.hpp
浏览该文件的文档.
1#pragma once
2#include <string>
4
5namespace xcal::property {
6
15 private:
16 Proxy<size_t> microseconds_{this, 0};
17
18 public:
24
29 explicit TimeDuration(size_t microseconds) : MProperty() {
30 microseconds_ = microseconds;
31 }
32
37 explicit TimeDuration(float_t seconds) : MProperty() {
38 set_seconds(seconds);
39 }
40
46 static TimeDuration from_microseconds(size_t us) {
47 return TimeDuration(us);
48 }
49
55 static TimeDuration from_milliseconds(size_t ms) {
56 return TimeDuration(ms * 1000);
57 }
58
65 return TimeDuration(seconds);
66 }
67
74 return TimeDuration(minutes * 60.0f);
75 }
76
83 return TimeDuration(hours * 3600.0f);
84 }
85
90 size_t microseconds() const { return microseconds_; }
91
96 size_t milliseconds() const { return microseconds_ / 1000; }
97
102 float_t seconds() const {
103 return static_cast<float_t>(microseconds_) / 1000000.0f;
104 }
105
110 float_t minutes() const {
111 return static_cast<float_t>(microseconds_) / 60000000.0f;
112 }
113
118 float_t hours() const {
119 return static_cast<float_t>(microseconds_) / 3600000000.0f;
120 }
121
126 void set_microseconds(size_t us) { microseconds_ = us; }
127
132 void set_milliseconds(size_t ms) { microseconds_ = ms * 1000; }
133
138 void set_seconds(float_t seconds) {
139 microseconds_ = static_cast<size_t>(seconds * 1000000.0f);
140 }
141
146 void set_minutes(float_t minutes) { set_seconds(minutes * 60.0f); }
147
152 void set_hours(float_t hours) { set_seconds(hours * 3600.0f); }
153
159 TimeDuration operator+(const TimeDuration& other) const {
160 return TimeDuration(microseconds_ + other.microseconds_);
161 }
162
168 TimeDuration operator-(const TimeDuration& other) const {
169 return TimeDuration(microseconds_ - other.microseconds_);
170 }
171
177 TimeDuration operator*(size_t multiplier) const {
178 return TimeDuration(microseconds_ * multiplier);
179 }
180
186 TimeDuration operator/(size_t divisor) const {
187 return TimeDuration(microseconds_ / divisor);
188 }
189
195 bool operator==(const TimeDuration& other) const {
196 return microseconds_ == other.microseconds_;
197 }
198
204 bool operator!=(const TimeDuration& other) const {
205 return !(*this == other);
206 }
207
213 bool operator<(const TimeDuration& other) const {
214 return microseconds_ < other.microseconds_;
215 }
216
222 bool operator>(const TimeDuration& other) const {
223 return microseconds_ > other.microseconds_;
224 }
225
231 bool operator<=(const TimeDuration& other) const {
232 return microseconds_ <= other.microseconds_;
233 }
234
240 bool operator>=(const TimeDuration& other) const {
241 return microseconds_ >= other.microseconds_;
242 }
243
248 std::string to_string() const {
249 if (microseconds_ < 1000) {
250 return std::to_string(microseconds_) + "us";
251 } else if (microseconds_ < 1000000) {
252 return std::to_string(milliseconds()) + "ms";
253 } else {
254 return std::to_string(seconds()) + "s";
255 }
256 }
257};
258
259} // namespace xcal::property
void set_minutes(float_t minutes)
设置分钟数
void set_milliseconds(size_t ms)
设置毫秒值
float_t hours() const
获取小时数
static TimeDuration from_microseconds(size_t us)
从微秒创建时间段
bool operator<(const TimeDuration &other) const
时间段小于比较
bool operator>=(const TimeDuration &other) const
时间段大于等于比较
static TimeDuration from_milliseconds(size_t ms)
从毫秒创建时间段
bool operator!=(const TimeDuration &other) const
时间段不等比较
TimeDuration(float_t seconds)
从浮点数秒构造函数
TimeDuration(size_t microseconds)
从微秒值构造函数
std::string to_string() const
转换为字符串表示
static TimeDuration from_minutes(float_t minutes)
从分钟创建时间段
TimeDuration operator+(const TimeDuration &other) const
时间段加法运算
TimeDuration operator-(const TimeDuration &other) const
时间段减法运算
void set_seconds(float_t seconds)
设置秒数
TimeDuration()
默认构造函数
size_t milliseconds() const
获取毫秒值
TimeDuration operator/(size_t divisor) const
时间段除法运算
size_t microseconds() const
获取微秒值
static TimeDuration from_hours(float_t hours)
从小时创建时间段
float_t minutes() const
获取分钟数
bool operator==(const TimeDuration &other) const
时间段相等比较
float_t seconds() const
获取秒数
TimeDuration operator*(size_t multiplier) const
时间段乘法运算
static TimeDuration from_seconds(float_t seconds)
从秒创建时间段
void set_hours(float_t hours)
设置小时数
bool operator<=(const TimeDuration &other) const
时间段小于等于比较
bool operator>(const TimeDuration &other) const
时间段大于比较
void set_microseconds(size_t us)
设置微秒值
float float_t
Definition public.h:27
#define XCAL_PROPERTY_TYPE(type)
Definition property.hpp:6
#define XCAL_API
Definition public.h:69