53 lines
2.2 KiB
C++
53 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
namespace Fast {
|
|
class GfxWindowBackend {
|
|
public:
|
|
virtual ~GfxWindowBackend() = default;
|
|
virtual void Init(const char* gameName, const char* apiName, bool startFullScreen, uint32_t width, uint32_t height,
|
|
int32_t posX, int32_t posY) = 0;
|
|
virtual void Close() = 0;
|
|
virtual void SetKeyboardCallbacks(bool (*mOnKeyDown)(int scancode), bool (*mOnKeyUp)(int scancode),
|
|
void (*mOnAllKeysUp)()) = 0;
|
|
virtual void SetMouseCallbacks(bool (*mOnMouseButtonDown)(int btn), bool (*mOnMouseButtonUp)(int btn)) = 0;
|
|
virtual void SetFullscreenChangedCallback(void (*mOnFullscreenChanged)(bool is_now_fullscreen)) = 0;
|
|
virtual void SetFullscreen(bool fullscreen) = 0;
|
|
virtual void GetActiveWindowRefreshRate(uint32_t* refreshRate) = 0;
|
|
virtual void SetCursorVisibility(bool visability) = 0;
|
|
virtual void SetMousePos(int32_t posX, int32_t posY) = 0;
|
|
virtual void GetMousePos(int32_t* x, int32_t* y) = 0;
|
|
virtual void GetMouseDelta(int32_t* x, int32_t* y) = 0;
|
|
virtual void GetMouseWheel(float* x, float* y) = 0;
|
|
virtual bool GetMouseState(uint32_t btn) = 0;
|
|
virtual void SetMouseCapture(bool capture) = 0;
|
|
virtual bool IsMouseCaptured() = 0;
|
|
virtual void GetDimensions(uint32_t* width, uint32_t* height, int32_t* posX, int32_t* posY) = 0;
|
|
virtual void HandleEvents() = 0;
|
|
virtual bool IsFrameReady() = 0;
|
|
virtual void SwapBuffersBegin() = 0;
|
|
virtual void SwapBuffersEnd() = 0;
|
|
virtual double GetTime() = 0;
|
|
virtual int GetTargetFps() = 0;
|
|
virtual void SetTargetFps(int fps) = 0;
|
|
virtual void SetMaxFrameLatency(int latency) = 0;
|
|
virtual const char* GetKeyName(int scancode) = 0;
|
|
virtual bool CanDisableVsync() = 0;
|
|
virtual bool IsRunning() = 0;
|
|
virtual void Destroy() = 0;
|
|
virtual bool IsFullscreen() = 0;
|
|
|
|
protected:
|
|
void (*mOnFullscreenChanged)(bool isNowFullscreen);
|
|
bool (*mOnKeyDown)(int scancode);
|
|
bool (*mOnKeyUp)(int scancode);
|
|
bool (*mOnMouseButtonDown)(int btn);
|
|
bool (*mOnMouseButtonUp)(int btn);
|
|
uint32_t mTargetFps = 60;
|
|
bool mFullScreen;
|
|
bool mIsRunning = true;
|
|
bool mVsyncEnabled = true;
|
|
};
|
|
} // namespace Fast
|