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