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 71