gfx/skia/trunk/src/animator/SkTime.cpp

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:efcb55bc8ca5
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

mercurial