Program Listing for File PlatformWindow.hpp¶
↰ Return to documentation for file (include/ari/io/PlatformWindow.hpp
)
#pragma once
#include "../aridef.hpp"
#include <cstdint>
#include "IoEvents.hpp"
#include "../Delegate.hpp"
#include "tinystl/vector.h"
namespace ari
{
class ARI_API PlatformWindow
{
friend class Engine;
public:
enum class Type
{
Main,
Child,
Popup
};
PlatformWindow(Type _type): m_Type(_type) {}
virtual ~PlatformWindow() {}
virtual bool Init(int _posx, int _posy, int _width, int _height, uint32_t _flags,
const char* _title) = 0;
virtual bool Run() = 0;
virtual void Show(bool _show) = 0;
virtual void SetMousePos(int _x, int _y) = 0;
virtual void SetTitle(const char* _title) = 0;
virtual void SetFlags(uint32_t _flags, bool _addFlags = false) = 0;
virtual void GetPos(int& _x, int& _y) = 0;
virtual void SetPos(int _x, int _y) = 0;
virtual void GetSize(int& _width, int& _height);
virtual void SetSize(int _width, int _height) = 0;
virtual void SetAlpha(unsigned char _alpha) = 0;
virtual void SetMouseLock(bool _lock) = 0;
virtual void ToggleFrame() = 0;
virtual bool IsWindowMaximized() = 0;
virtual void SetWindowMaximized(bool _maximize) = 0;
virtual bool IsWindowMinimized() = 0;
virtual void SetWindowMinimized(bool _minimize) = 0;
virtual void* GetHandle() = 0;
void AddOnKeyDelegate(DelegateTwoParam<void, Key::Enum, bool>* _pDelegate);
void RemoveOnKeyDelegate(DelegateTwoParam<void, Key::Enum, bool>* _pDelegate);
void AddOnCharDelegate(DelegateTwoParam<void, uint8_t, uint8_t*>* _pDelegate);
void RemoveOnCharDelegate(DelegateTwoParam<void, uint8_t, uint8_t*>* _pDelegate);
void AddOnMouseButtonDelegate(DelegateTwoParam<void, MouseButton::Enum, bool>* _pDelegate);
void RemoveOnMouseButtonDelegate(DelegateTwoParam<void, MouseButton::Enum, bool>* _pDelegate);
void AddOnMouseMoveDelegate(DelegateTwoParam<void, int, int>* _pDelegate);
void RemoveOnMouseMoveDelegate(DelegateTwoParam<void, int, int>* _pDelegate);
void AddOnMouseWheelDelegate(DelegateOneParam<void, int>* _pDelegate);
void RemoveOnMouseWheelDelegate(DelegateOneParam<void, int>* _pDelegate);
void AddOnSizeDelegate(DelegateTwoParam<void, int, int>* _pDelegate);
void RemoveOnSizeDelegate(DelegateTwoParam<void, int, int>* _pDelegate);
bool ProcessEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset,
MouseState* _mouse);
protected:
Type m_Type;
uint32_t m_width;
uint32_t m_height;
uint32_t m_oldWidth;
uint32_t m_oldHeight;
uint32_t m_frameWidth;
uint32_t m_frameHeight;
float m_aspectRatio;
EventQueue m_eventQueue;
tinystl::vector<DelegateTwoParam<void, Key::Enum, bool>*>
m_vOnKeys;
tinystl::vector<DelegateTwoParam<void, uint8_t, uint8_t*>*>
m_vOnChar;
tinystl::vector<DelegateTwoParam<void, MouseButton::Enum, bool>*>
m_vOnMouseButtons;
tinystl::vector<DelegateTwoParam<void, int, int>*>
m_vOnMouseMove;
tinystl::vector<DelegateOneParam<void, int>*>
m_vOnMouseWheel;
tinystl::vector<DelegateTwoParam<void, int, int>*>
m_vOnSize;
}; // Window
} // ari