|
1 /* |
|
2 * Copyright 2006 The Android Open Source Project |
|
3 * |
|
4 * Use of this source code is governed by a BSD-style license that can be |
|
5 * found in the LICENSE file. |
|
6 */ |
|
7 |
|
8 #include "SkTime.h" |
|
9 |
|
10 #ifdef SK_BUILD_FOR_WIN |
|
11 |
|
12 #ifdef SK_DEBUG |
|
13 SkMSec gForceTickCount = (SkMSec) -1; |
|
14 #endif |
|
15 |
|
16 void SkTime::GetDateTime(DateTime* t) { |
|
17 if (t) { |
|
18 SYSTEMTIME syst; |
|
19 |
|
20 ::GetLocalTime(&syst); |
|
21 t->fYear = SkToU16(syst.wYear); |
|
22 t->fMonth = SkToU8(syst.wMonth); |
|
23 t->fDayOfWeek = SkToU8(syst.wDayOfWeek); |
|
24 t->fDay = SkToU8(syst.wDay); |
|
25 t->fHour = SkToU8(syst.wHour); |
|
26 t->fMinute = SkToU8(syst.wMinute); |
|
27 t->fSecond = SkToU8(syst.wSecond); |
|
28 } |
|
29 } |
|
30 |
|
31 SkMSec SkTime::GetMSecs() { |
|
32 #ifdef SK_DEBUG |
|
33 if (gForceTickCount != (SkMSec) -1) { |
|
34 return gForceTickCount; |
|
35 } |
|
36 #endif |
|
37 return ::GetTickCount(); |
|
38 } |
|
39 |
|
40 #elif defined(xSK_BUILD_FOR_MAC) |
|
41 |
|
42 #include <time.h> |
|
43 |
|
44 void SkTime::GetDateTime(DateTime* t) { |
|
45 if (t) { |
|
46 tm syst; |
|
47 time_t tm; |
|
48 |
|
49 time(&tm); |
|
50 localtime_r(&tm, &syst); |
|
51 t->fYear = SkToU16(syst.tm_year); |
|
52 t->fMonth = SkToU8(syst.tm_mon + 1); |
|
53 t->fDayOfWeek = SkToU8(syst.tm_wday); |
|
54 t->fDay = SkToU8(syst.tm_mday); |
|
55 t->fHour = SkToU8(syst.tm_hour); |
|
56 t->fMinute = SkToU8(syst.tm_min); |
|
57 t->fSecond = SkToU8(syst.tm_sec); |
|
58 } |
|
59 } |
|
60 |
|
61 SkMSec SkTime::GetMSecs() { |
|
62 UnsignedWide wide; |
|
63 ::Microseconds(&wide); |
|
64 |
|
65 int64_t s = ((int64_t)wide.hi << 32) | wide.lo; |
|
66 s = (s + 500) / 1000; // rounded divide |
|
67 return (SkMSec)s; |
|
68 } |
|
69 |
|
70 #endif |