2019-08-23 11:56:54 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "BFApp.h"
|
|
|
|
#include "BFWindow.h"
|
2019-10-14 14:08:29 -07:00
|
|
|
#include <map>
|
2022-11-03 10:58:24 -07:00
|
|
|
#include "util/Dictionary.h"
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
struct SDL_Window;
|
|
|
|
|
|
|
|
NS_BF_BEGIN;
|
|
|
|
|
|
|
|
class RenderDevice;
|
|
|
|
|
|
|
|
class SdlBFWindow : public BFWindow
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
SDL_Window* mSDLWindow;
|
2022-11-03 10:58:24 -07:00
|
|
|
bool mIsMouseInside;
|
|
|
|
int mModalCount;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
public:
|
|
|
|
SdlBFWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags);
|
|
|
|
~SdlBFWindow();
|
|
|
|
|
2022-11-03 10:58:24 -07:00
|
|
|
virtual void* GetUnderlying() {return mSDLWindow; };
|
|
|
|
virtual void Destroy() { }
|
|
|
|
|
|
|
|
virtual void SetTitle(const char* title) override {}
|
|
|
|
virtual void SetMinimumSize(int minWidth, int minHeight, bool clientSized) override {}
|
|
|
|
virtual void GetPlacement(int* normX, int* normY, int* normWidth, int* normHeight, int* showKind) override { }
|
|
|
|
virtual void Resize(int x, int y, int width, int height, int showKind) override {}
|
|
|
|
virtual void SetMouseVisible(bool isMouseVisible) override {}
|
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual bool TryClose() override;
|
|
|
|
virtual void GetPosition(int* x, int* y, int* width, int* height, int* clientX, int* clientY, int* clientWidth, int* clientHeight) override;
|
|
|
|
virtual void SetClientPosition(int x, int y) override;
|
|
|
|
virtual void SetAlpha(float alpha, uint32 destAlphaSrcMask, bool isMouseVisible) override;
|
2022-11-03 10:58:24 -07:00
|
|
|
virtual BFMenu* AddMenuItem(BFMenu* parent, int insertIdx, const char* text, const char* hotKey, BFSysBitmap* bitmap, bool enabled, int checkState, bool radioCheck) override;
|
|
|
|
virtual void ModifyMenuItem(BFMenu* item, const char* text, const char* hotKey, BFSysBitmap* bitmap, bool enabled, int checkState, bool radioCheck) override {}
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void RemoveMenuItem(BFMenu* item) override;
|
2022-11-03 10:58:24 -07:00
|
|
|
|
|
|
|
virtual void LostFocus(BFWindow* newFocus) override {};
|
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void ModalsRemoved() override;
|
2022-11-03 10:58:24 -07:00
|
|
|
|
|
|
|
virtual void SetForeground() override {};
|
2019-08-23 11:56:54 -07:00
|
|
|
};
|
|
|
|
|
2022-11-03 10:58:24 -07:00
|
|
|
typedef Dictionary<uint32, SdlBFWindow*> SdlWindowMap;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
class SdlBFApp : public BFApp
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
bool mInMsgProc;
|
|
|
|
SdlWindowMap mSdlWindowMap;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual void Draw() override;
|
|
|
|
virtual void PhysSetCursor() override;
|
|
|
|
|
|
|
|
uint32 GetClipboardFormat(const StringImpl& format);
|
|
|
|
SdlBFWindow* GetSdlWindowFromId(uint32 id);
|
|
|
|
|
|
|
|
public:
|
|
|
|
SdlBFApp();
|
|
|
|
virtual ~SdlBFApp();
|
|
|
|
|
|
|
|
virtual void Init() override;
|
|
|
|
virtual void Run() override;
|
|
|
|
|
|
|
|
virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override;
|
2019-10-14 14:08:29 -07:00
|
|
|
virtual DrawLayer* CreateDrawLayer(BFWindow* window) override;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
virtual void* GetClipboardData(const StringImpl& format, int* size) override;
|
|
|
|
virtual void ReleaseClipboardData(void* ptr) override;
|
|
|
|
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
|
|
|
|
|
|
|
|
virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) override;
|
2019-10-14 14:08:29 -07:00
|
|
|
virtual void GetDesktopResolution(int& width, int& height) override;
|
|
|
|
virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height) override;
|
2019-08-23 11:56:54 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
NS_BF_END;
|