2
0

BFApp.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #pragma once
  2. #include "Common.h"
  3. #include "util/CritSect.h"
  4. #include <list>
  5. NS_BF_BEGIN;
  6. typedef void (*BFApp_UpdateFunc)(bool batchStart);
  7. typedef void (*BFApp_UpdateFFunc)(float updatePct);
  8. typedef void (*BFApp_DrawFunc)(bool forceDraw);
  9. class BFApp;
  10. class BFSoundManager;
  11. class RenderDevice;
  12. class BFWindow;
  13. class FileStream;
  14. class DrawLayer;
  15. typedef std::list<BFWindow*> BFWindowList;
  16. enum
  17. {
  18. CURSOR_POINTER,
  19. CURSOR_HAND,
  20. CURSOR_DRAGGING,
  21. CURSOR_TEXT,
  22. CURSOR_CIRCLE_SLASH,
  23. CURSOR_SIZEALL,
  24. CURSOR_SIZENESW,
  25. CURSOR_SIZENS,
  26. CURSOR_SIZENWSE,
  27. CURSOR_SIZEWE,
  28. CURSOR_WAIT,
  29. CURSOR_NONE,
  30. NUM_CURSORS
  31. };
  32. class BFSysBitmap
  33. {
  34. public:
  35. };
  36. class BFInputDevice
  37. {
  38. public:
  39. virtual ~BFInputDevice() {}
  40. virtual String GetState() = 0;
  41. };
  42. class BFApp
  43. {
  44. public:
  45. CritSect mCritSect;
  46. String mTitle;
  47. String mInstallDir;
  48. String mDataDir;
  49. bool mDrawEnabled;
  50. float mRefreshRate;
  51. int mMaxUpdatesPerDraw;
  52. double mUpdateCntF;
  53. double mClientUpdateCntF;
  54. bool mInProcess;
  55. bool mRunning;
  56. RenderDevice* mRenderDevice;
  57. int mSysDialogCnt;
  58. int mUpdateCnt;
  59. int mNumPhysUpdates;
  60. SyncEvent mVSyncEvent;
  61. volatile bool mVSyncActive;
  62. bool mVSynched;
  63. bool mVSyncFailed;
  64. bool mForceNextDraw;
  65. int mUpdateSampleCount;
  66. int mUpdateSampleTimes;
  67. uint32 mLastProcessTick;
  68. float mPhysFrameTimeAcc;
  69. BFApp_UpdateFunc mUpdateFunc;
  70. BFApp_UpdateFFunc mUpdateFFunc;
  71. BFApp_DrawFunc mDrawFunc;
  72. int mCursor;
  73. BFWindowList mWindowList;
  74. BFWindowList mPendingWindowDeleteList;
  75. public:
  76. virtual void Update(bool batchStart);
  77. virtual void UpdateF(float updatePct);
  78. virtual void Draw();
  79. virtual void Process();
  80. virtual void PhysSetCursor() = 0;
  81. public:
  82. BFApp();
  83. virtual ~BFApp();
  84. virtual void Init();
  85. virtual void Run();
  86. virtual void Shutdown();
  87. virtual void SetCursor(int cursor);
  88. virtual void GetDesktopResolution(int& width, int& height) = 0;
  89. virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height) = 0;
  90. virtual void GetWorkspaceRectFrom(int fromX, int fromY, int fromWidth, int fromHeight, int& outX, int& outY, int& outWidth, int& outHeight) { GetWorkspaceRect(outX, outY, outWidth, outHeight); }
  91. virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) = 0;
  92. virtual void RemoveWindow(BFWindow* window);
  93. virtual DrawLayer* CreateDrawLayer(BFWindow* window) = 0;
  94. virtual void* GetClipboardData(const StringImpl& format, int* size) = 0;
  95. virtual void ReleaseClipboardData(void* ptr) = 0;
  96. virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) = 0;
  97. virtual void RehupMouse() {}
  98. virtual String EnumerateInputDevices() { return ""; }
  99. virtual BFInputDevice* CreateInputDevice(const StringImpl& guid) { return NULL; }
  100. virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) = 0;
  101. virtual FileStream* OpenBinaryFile(const StringImpl& fileName);
  102. virtual BFSoundManager* GetSoundManager() { return NULL; }
  103. virtual intptr GetCriticalThreadId(int idx) { return 0; }
  104. };
  105. extern BFApp* gBFApp;
  106. NS_BF_END;