SDC C-Project CF Review 프로그램
LYW
2021-07-08 9cbd9e554f9956b3b945b51602f1d4a3fa0353e1
ReviewHistory/include/akCore/akTimeManager.h
»õ ÆÄÀÏ
@@ -0,0 +1,93 @@
#pragma once
#include "akCoreLinker.h"
#include <Windows.h>
namespace akCore
{
   class AKCORE_DLLSPEC CakTimeManager
   {
   public:
      enum PlayMode
      {
         Play,
         Stop,
         Pause,
         Playing,
         PlayEnd,
         SettingTime
      };
   public:
      CakTimeManager(void);
      virtual ~CakTimeManager(void);
      //시작 ì¤‘ì§€(구버전) //배속 ì ìš© ì•ˆë°›ìŒ
      inline void SetBegin();
      inline void SetEnd();
      inline double GetRunTimeSec(); //시작시간 ì €ìž¥í•˜ê³  ì¢…료시간까지의 íƒ€ìž„(초단위)
      inline double GetRunTimeMsec(); //시작시간 ì €ìž¥í•˜ê³  ì¢…료시간까지의 íƒ€ìž„(초단위)
      inline double GetFrameRate();
      //플레이바 ê¸°ëŠ¥(신버전)
      void SetInit();//초기 ì„¤ì •으로 ë˜ëŒë¦¼
      virtual inline void SetPlay();
      virtual inline void SetStop();
      virtual inline void SetTime(int msec);
      virtual inline void SetPause();
      virtual inline double GetTime(int type=0); //0=Sec, 1=MSec
      virtual inline void GetTime(int* h, int* m, int* s, int* ms);
      virtual inline PlayMode GetPlayMode();
      virtual inline void SetSpeedRate(double speedrate); //배속 ì„¤ì •(0보다 í° ì‹¤ìˆ˜ ìž…력가능)
      virtual inline double GetSpeedRate(); //배속 ì„¤ì •ê°’ ì½ê¸°
   protected:
      LARGE_INTEGER m_Frequency;
      LARGE_INTEGER m_BeginTime;
      LARGE_INTEGER m_Endtime;
      double m_PauseTime;
      double m_LastTime;
      PlayMode m_PlayState;
      double m_SpeedRate; //배속
      //콜백 ë°ì´í„° ê´€ë¦¬
   public:
      typedef void (*MsgCallbackFunc) (int msg, void*);
      void setMsgCallbackFunc(MsgCallbackFunc userFunc, void* data = NULL)
      {
         m_msgCallbackFunc = userFunc;
         m_MsgCallbackFuncData = data;
      };
   protected:
      void* m_MsgCallbackFuncData;
      MsgCallbackFunc m_msgCallbackFunc;
      int m_nSyncObject;
   };
   class AKCORE_DLLSPEC CakTimeManagerAdv : public CakTimeManager
   {
   public:
      CakTimeManagerAdv(void);
      virtual ~CakTimeManagerAdv(void);
   public:
      virtual inline void SetPlay();
      virtual inline void SetTime(int msec);
      virtual inline void SetStop();
   protected:
      void setEnd();//플레이 ì‹œê°„이 ìµœëŒ€ ì‹œê°„을 ë„˜ì—ˆì„ ê²½ìš° í˜¸ì¶œ
   public:
      double m_timeMax;
   public:
      static void threadPlayer(void* arg);
      int m_flagThreadPlayer;
   private:
      bool m_bPlaying;
   };
}