SdlBFApp.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #pragma once
  2. #include "BFApp.h"
  3. #include "BFWindow.h"
  4. #include <map>
  5. #include "util/Dictionary.h"
  6. struct SDL_Window;
  7. NS_BF_BEGIN;
  8. class RenderDevice;
  9. class SdlBFWindow : public BFWindow
  10. {
  11. public:
  12. SDL_Window* mSDLWindow;
  13. bool mIsMouseInside;
  14. int mModalCount;
  15. public:
  16. SdlBFWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags);
  17. ~SdlBFWindow();
  18. virtual void* GetUnderlying() {return mSDLWindow; };
  19. virtual void Destroy() { }
  20. virtual void SetTitle(const char* title) override {}
  21. virtual void SetMinimumSize(int minWidth, int minHeight, bool clientSized) override {}
  22. virtual void GetPlacement(int* normX, int* normY, int* normWidth, int* normHeight, int* showKind) override { }
  23. virtual void Resize(int x, int y, int width, int height, int showKind) override {}
  24. virtual void SetMouseVisible(bool isMouseVisible) override {}
  25. virtual bool TryClose() override;
  26. virtual void GetPosition(int* x, int* y, int* width, int* height, int* clientX, int* clientY, int* clientWidth, int* clientHeight) override;
  27. virtual void SetClientPosition(int x, int y) override;
  28. virtual void SetAlpha(float alpha, uint32 destAlphaSrcMask, bool isMouseVisible) override;
  29. virtual BFMenu* AddMenuItem(BFMenu* parent, int insertIdx, const char* text, const char* hotKey, BFSysBitmap* bitmap, bool enabled, int checkState, bool radioCheck) override;
  30. virtual void ModifyMenuItem(BFMenu* item, const char* text, const char* hotKey, BFSysBitmap* bitmap, bool enabled, int checkState, bool radioCheck) override {}
  31. virtual void RemoveMenuItem(BFMenu* item) override;
  32. virtual void LostFocus(BFWindow* newFocus) override {};
  33. virtual void ModalsRemoved() override;
  34. virtual void SetForeground() override {};
  35. };
  36. typedef Dictionary<uint32, SdlBFWindow*> SdlWindowMap;
  37. class SdlBFApp : public BFApp
  38. {
  39. public:
  40. bool mInMsgProc;
  41. SdlWindowMap mSdlWindowMap;
  42. protected:
  43. virtual void Draw() override;
  44. virtual void PhysSetCursor() override;
  45. uint32 GetClipboardFormat(const StringImpl& format);
  46. SdlBFWindow* GetSdlWindowFromId(uint32 id);
  47. public:
  48. SdlBFApp();
  49. virtual ~SdlBFApp();
  50. virtual void Init() override;
  51. virtual void Run() override;
  52. virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override;
  53. virtual DrawLayer* CreateDrawLayer(BFWindow* window) override;
  54. virtual void* GetClipboardData(const StringImpl& format, int* size) override;
  55. virtual void ReleaseClipboardData(void* ptr) override;
  56. virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
  57. virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) override;
  58. virtual void GetDesktopResolution(int& width, int& height) override;
  59. virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height) override;
  60. };
  61. NS_BF_END;