1 /* libs/graphics/animator/SkTime.cpp 2 ** 3 ** Copyright 2006, The Android Open Source Project 4 ** 5 ** Licensed under the Apache License, Version 2.0 (the "License"); 6 ** you may not use this file except in compliance with the License. 7 ** You may obtain a copy of the License at 8 ** 9 ** http://www.apache.org/licenses/LICENSE-2.0 10 ** 11 ** Unless required by applicable law or agreed to in writing, software 12 ** distributed under the License is distributed on an "AS IS" BASIS, 13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 ** See the License for the specific language governing permissions and 15 ** limitations under the License. 16 */ 17 18 #include "SkTime.h" 19 20 #ifdef SK_BUILD_FOR_WIN 21 22 #ifdef SK_DEBUG 23 SkMSec gForceTickCount = (SkMSec) -1; 24 #endif 25 26 void SkTime::GetDateTime(DateTime* t) 27 { 28 if (t) 29 { 30 SYSTEMTIME syst; 31 32 ::GetLocalTime(&syst); 33 t->fYear = SkToU16(syst.wYear); 34 t->fMonth = SkToU8(syst.wMonth); 35 t->fDayOfWeek = SkToU8(syst.wDayOfWeek); 36 t->fDay = SkToU8(syst.wDay); 37 t->fHour = SkToU8(syst.wHour); 38 t->fMinute = SkToU8(syst.wMinute); 39 t->fSecond = SkToU8(syst.wSecond); 40 } 41 } 42 43 SkMSec SkTime::GetMSecs() 44 { 45 #ifdef SK_DEBUG 46 if (gForceTickCount != (SkMSec) -1) 47 return gForceTickCount; 48 #endif 49 return ::GetTickCount(); 50 } 51 52 #elif defined(xSK_BUILD_FOR_MAC) 53 54 #include <time.h> 55 56 void SkTime::GetDateTime(DateTime* t) 57 { 58 if (t) 59 { 60 tm syst; 61 time_t tm; 62 63 time(&tm); 64 localtime_r(&tm, &syst); 65 t->fYear = SkToU16(syst.tm_year); 66 t->fMonth = SkToU8(syst.tm_mon + 1); 67 t->fDayOfWeek = SkToU8(syst.tm_wday); 68 t->fDay = SkToU8(syst.tm_mday); 69 t->fHour = SkToU8(syst.tm_hour); 70 t->fMinute = SkToU8(syst.tm_min); 71 t->fSecond = SkToU8(syst.tm_sec); 72 } 73 } 74 75 #include "Sk64.h" 76 77 SkMSec SkTime::GetMSecs() 78 { 79 UnsignedWide wide; 80 Sk64 s; 81 82 ::Microseconds(&wide); 83 s.set(wide.hi, wide.lo); 84 s.div(1000, Sk64::kRound_DivOption); 85 return s.get32(); 86 } 87 88 #endif 89 90