SDXFrameWork  0.10
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Time.h
1 //Copyright © 2014 SDXFramework
2 //[License]GNU Affero General Public License, version 3
3 //[Contact]http://sourceforge.jp/projects/dxframework/
4 #pragma once
5 //#include <Multimedia/Color.h>
6 #include <chrono>
7 
8 namespace SDX
9 {
13  class Time
14  {
15  private:
16  MONO_STATE(Time)
17 
18  double fps;
19  std::chrono::system_clock::time_point reset;
20  std::chrono::system_clock::time_point fpsCounter;
21  std::chrono::system_clock::time_point watch;
22 
23  static Time& Single()
24  {
25  static Time single;
26  return single;
27  }
28 
29  public:
31  static void ResetCount()
32  {
33  Single().reset = std::chrono::system_clock::now();
34  }
35 
37  static double GetNowCount()
38  {
39  auto diff = std::chrono::system_clock::now() - Single().reset;
40  return (double)std::chrono::duration_cast<std::chrono::microseconds>(diff).count() / 1000;
41  }
42 
44  static void GetDate(tm *現在時刻)
45  {
46  time_t timer;
47 
48  time(&timer);
49 
50  localtime_s(現在時刻, &timer);
51  }
52 
54  static double GetFPS()
55  {
56  return Single().fps;
57  }
58 
60  static void ResetFPS()
61  {
62  Single().fpsCounter = std::chrono::system_clock::now();
63  }
64 
66  static void CheckFPS()
67  {
68  auto diff = std::chrono::system_clock::now() - Single().fpsCounter;
69  Single().fps = 1000000.0 / (double)std::chrono::duration_cast<std::chrono::microseconds>(diff).count();
70  Single().fpsCounter = std::chrono::system_clock::now();
71  }
72 
74  static void StartWatch()
75  {
76  Single().watch = std::chrono::system_clock::now();
77  }
78 
82  static void DrawWatch(const Point &座標, const char* 描画文字列)
83  {
84  std::string buf = 描画文字列;
85  buf += " = ";
86 
87  auto diff = std::chrono::system_clock::now() - Single().watch;
88  double count = (double)std::chrono::duration_cast<std::chrono::milliseconds>(diff).count();
89  Drawing::String(座標, Color(255, 255, 255), { buf, count });
90  Single().watch = std::chrono::system_clock::now();
91  }
92  };
93 }
static double GetFPS()
FPSを取得.
Definition: Time.h:54
static void DrawWatch(const Point &座標, const char *描画文字列)
処理時間計測終了.
Definition: Time.h:82
点を表す図形クラス.
Definition: Point.h:22
static void String(const Point &座標, const Color &色, const VariadicStream &描画する文字列)
文字を描画.
Definition: Drawing.h:444
static void StartWatch()
処理時間計測開始.
Definition: Time.h:74
static double GetNowCount()
リセット後の経過時間のミリ秒で取得(小数点以下).
Definition: Time.h:37
色を表すクラス.
Definition: Color.h:11
時間と日付を取得する関数群.
Definition: Time.h:13
static void CheckFPS()
FPS計測を更新.
Definition: Time.h:66
static void ResetCount()
時間の初期化.
Definition: Time.h:31
static void ResetFPS()
FPSの計測開始.
Definition: Time.h:60
static void GetDate(tm *現在時刻)
日付を取得.
Definition: Time.h:44