/********************************************************************
*
* File: fsCHardware.h
*
* Purpose: bgfx (GLFW-hosted) implementation.
*
*********************************************************************/
#ifndef fsCHardwarehdr
#define fsCHardwarehdr
#include "../../fsIHardware.h"
#if defined fsDesktop
struct GLFWwindow;
struct GLFWcursor;
struct GLFWvidmode;
#endif
class fsCHardware : public fsIHardware
{
public:
#if defined fsDesktop
void hardwareCursorInit() override;
void hardwareCursorUninit() override;
void hardwareCursorChange(const fsStr& pID) override;
void windowedDisplayModesEnumerate(fsDisplayInfo*& pAvailableModeList, fsS32& pNumModesInList) override;
void appMinimize() override;
void appMaximize() override;
void appHideEnable() override;<--- Function in derived class
#endif
void hardwareCursorEnabledSet(fsBool pEnabled) const override;
void hardwareCursorSet(const fsCResourceName& pFilename, fsBool pFlipped) override;<--- Function in derived class
void timeScaleSet(fsF32 pScale) override;
void engineCacheFlush() const override;<--- Function in derived class
fsU64 utcTimeGet() const override;
ePlatform platformGet() const override;
fsBool smallDeviceGet() const override;
fsStr sdkVersionStringGet() const override;
fsStr appDataFolderGet() const override;
fsBool multipleAppInstances() const override;
fsBool processRunning(const fsStr& pProcessName) const override;
fsBool windowedModePossibleGet() const override;
void browserLaunch(const fsStr& pUrl) const override;
fsCHardware();
virtual ~fsCHardware();<--- Destructor in derived class
protected:
#if defined fsDesktop
void wallpaperApplyDo(const fsCResourceName& pWallpaper) override;
#endif
void updateDo(fsS32 pDeltaMs) override;<--- Function in derived class
void rndSeedDo() const override;
private:
#if defined fsPCStore
fsBool mCursorInClientArea;
#endif
#if defined fsDesktop
static void enterEvent(GLFWwindow* window, int entered);
void cursorApply();
void cursorCreate(fsStr const& pFilename, fsBool pFlipped);
void cursorClear();
GLFWcursor* mCursor = nullptr;
fsS32 mWindowWWidth;
fsS32 mWindowHeight;
fsBool mWindowFullscreen;
#endif
};
#endif