• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
GetDateTime(DateTime * t)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 
GetMSecs()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 
GetDateTime(DateTime * t)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 
GetMSecs()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
71