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