Added documentation to io files

dev
anulax1225 ago%!(EXTRA string=1 year)
parent 8cc987d5db
commit d9b7f096fd
  1. 406
      bakara/src/bakara/io/io_codes.h
  2. 79
      bakara/src/bakara/io/window.h

@ -1,197 +1,221 @@
#pragma once #pragma once
/*! \file io_codes.h
Input codes abstraction to be able to use different window api.
Can be converte in the good code for the window api by using a lookup table or defines at compilation.
*/
namespace Bk { namespace Bk {
/*! \typedef Bk::KeyCode
Unsigned integer representing a unique keyboard key
*/
using KeyCode = uint16_t; using KeyCode = uint16_t;
namespace Key {
enum : KeyCode /*! \enum Bk::KeyCodes
{ Enumerator made to bind every keyboard keys with a Bk::KeyCode
// From glfw3.h */
Space = 32, typedef enum : KeyCode
Apostrophe = 39, /* ' */ {
Comma = 44, /* , */ Space = 32, /*!< _ */
Minus = 45, /* - */ Apostrophe = 39, /*!< ' */
Period = 46, /* . */ Comma = 44, /*!< , */
Slash = 47, /* / */ Minus = 45, /*!< - */
Period = 46, /*!< . */
D0 = 48, /* 0 */ Slash = 47, /*!< / */
D1 = 49, /* 1 */
D2 = 50, /* 2 */ D0 = 48, /*!< 0 */
D3 = 51, /* 3 */ D1 = 49, /*!< 1 */
D4 = 52, /* 4 */ D2 = 50, /*!< 2 */
D5 = 53, /* 5 */ D3 = 51, /*!< 3 */
D6 = 54, /* 6 */ D4 = 52, /*!< 4 */
D7 = 55, /* 7 */ D5 = 53, /*!< 5 */
D8 = 56, /* 8 */ D6 = 54, /*!< 6 */
D9 = 57, /* 9 */ D7 = 55, /*!< 7 */
D8 = 56, /*!< 8 */
Semicolon = 59, /* ; */ D9 = 57, /*!< 9 */
Equal = 61, /* = */
Semicolon = 59, /*!< ; */
A = 65, Equal = 61, /*!< = */
B = 66,
C = 67, A = 65,
D = 68, B = 66,
E = 69, C = 67,
F = 70, D = 68,
G = 71, E = 69,
H = 72, F = 70,
I = 73, G = 71,
J = 74, H = 72,
K = 75, I = 73,
L = 76, J = 74,
M = 77, K = 75,
N = 78, L = 76,
O = 79, M = 77,
P = 80, N = 78,
Q = 81, O = 79,
R = 82, P = 80,
S = 83, Q = 81,
T = 84, R = 82,
U = 85, S = 83,
V = 86, T = 84,
W = 87, U = 85,
X = 88, V = 86,
Y = 89, W = 87,
Z = 90, X = 88,
Y = 89,
LeftBracket = 91, /* [ */ Z = 90,
Backslash = 92, /* \ */
RightBracket = 93, /* ] */ LeftBracket = 91, /*!< [ */
GraveAccent = 96, /* ` */ Backslash = 92, /*!< \ */
RightBracket = 93, /*!< ] */
World1 = 161, /* non-US #1 */ GraveAccent = 96, /*!< ` */
World2 = 162, /* non-US #2 */
World1 = 161, /*!< non-US #1 */
/* Function keys */ World2 = 162, /*!< non-US #2 */
Escape = 256,
Enter = 257, Escape = 256,
Tab = 258, Enter = 257,
Backspace = 259, Tab = 258,
Insert = 260, Backspace = 259,
Delete = 261, Insert = 260,
Right = 262, Delete = 261,
Left = 263, Right = 262,
Down = 264, Left = 263,
Up = 265, Down = 264,
PageUp = 266, Up = 265,
PageDown = 267, PageUp = 266,
Home = 268, PageDown = 267,
End = 269, Home = 268,
CapsLock = 280, End = 269,
ScrollLock = 281, CapsLock = 280,
NumLock = 282, ScrollLock = 281,
PrintScreen = 283, NumLock = 282,
Pause = 284, PrintScreen = 283,
F1 = 290, Pause = 284,
F2 = 291, F1 = 290,
F3 = 292, F2 = 291,
F4 = 293, F3 = 292,
F5 = 294, F4 = 293,
F6 = 295, F5 = 294,
F7 = 296, F6 = 295,
F8 = 297, F7 = 296,
F9 = 298, F8 = 297,
F10 = 299, F9 = 298,
F11 = 300, F10 = 299,
F12 = 301, F11 = 300,
F13 = 302, F12 = 301,
F14 = 303, F13 = 302,
F15 = 304, F14 = 303,
F16 = 305, F15 = 304,
F17 = 306, F16 = 305,
F18 = 307, F17 = 306,
F19 = 308, F18 = 307,
F20 = 309, F19 = 308,
F21 = 310, F20 = 309,
F22 = 311, F21 = 310,
F23 = 312, F22 = 311,
F24 = 313, F23 = 312,
F25 = 314, F24 = 313,
F25 = 314,
/* Keypad */
KP0 = 320, KP0 = 320,
KP1 = 321, KP1 = 321,
KP2 = 322, KP2 = 322,
KP3 = 323, KP3 = 323,
KP4 = 324, KP4 = 324,
KP5 = 325, KP5 = 325,
KP6 = 326, KP6 = 326,
KP7 = 327, KP7 = 327,
KP8 = 328, KP8 = 328,
KP9 = 329, KP9 = 329,
KPDecimal = 330, KPDecimal = 330,
KPDivide = 331, KPDivide = 331,
KPMultiply = 332, KPMultiply = 332,
KPSubtract = 333, KPSubtract = 333,
KPAdd = 334, KPAdd = 334,
KPEnter = 335, KPEnter = 335,
KPEqual = 336, KPEqual = 336,
LeftShift = 340, LeftShift = 340,
LeftControl = 341, LeftControl = 341,
LeftAlt = 342, LeftAlt = 342,
LeftSuper = 343, LeftSuper = 343,
RightShift = 344, RightShift = 344,
RightControl = 345, RightControl = 345,
RightAlt = 346, RightAlt = 346,
RightSuper = 347, RightSuper = 347,
Menu = 348 Menu = 348
}; } KeyCodes;
}
/*! \typedef Bk::MouseCode
Unsigned integer representing a unique mouse button
*/
using MouseCode = uint16_t; using MouseCode = uint16_t;
namespace Mouse {
enum : MouseCode /*! \enum Bk::MouseCodes
{ Enumerator made to bind every mouse buttons with a Bk::MouseCode
// From glfw3.h */
Button0 = 0, typedef enum : MouseCode
Button1 = 1, {
Button2 = 2, Button0 = 0, /*!< Button left */
Button3 = 3, Button1 = 1, /*!< Button right */
Button4 = 4, Button2 = 2, /*!< Button middle */
Button5 = 5, Button3 = 3, /*!< Macro1 */
Button6 = 6, Button4 = 4, /*!< Macro2 */
Button7 = 7, Button5 = 5, /*!< Macro3 */
Button6 = 6, /*!< Macro4 */
ButtonLast = Button7, Button7 = 7, /*!< Button last */
ButtonLeft = Button0,
ButtonRight = Button1, ButtonLast = Button7,
ButtonMiddle = Button2 ButtonLeft = Button0,
}; ButtonRight = Button1,
} ButtonMiddle = Button2
} MouseCodes;
namespace Controller {
enum class Button /*! \typedef Bk::ControllerCode
{ Unsigned integer representing a unique controller button
// analog input button values */
// PS | XBOX using ControllerCode = uint16_t;
BTN_DOWN = 0, // X | A /*! \typedef Bk::ControllerAxesCode
BTN_LEFT = 1, // Square | X Unsigned integer representing a unique controller axe
BTN_UP = 2, // Triangle | Y */
BTN_RIGHT = 3, // Circle | B using ControllerAxesCode = uint16_t;
SHOULDER_LEFT = 4, // L1 | LB
SHOULDER_RIGHT = 5, // R1 | RB /*! \enum Bk::ControllerButton
TRIGGER_LEFT = 6, // L2 | LT Enumerator made to bind every controller buttons with a Bk::ControllerCode
TRIGGER_RIGHT = 7, // R2 | RT */
SELECT = 8, // Share | Address typedef enum : ControllerCode
START = 9, // Options | Menu {
LEFT_STICK = 10, // L3 | LS BTN_DOWN = 0, //!< Cross, A
RIGHT_STICK = 11, // R3 | RS BTN_LEFT = 1, //!< Square, X
HOME = 12, // Home | Home BTN_UP = 2, //!< Triangle, Y
CLICK = 13, // Touch pad | n/a BTN_RIGHT = 3, //!< Circle, B
DPAD_UP = 14, // Dpad up | Dpad up SHOULDER_LEFT = 4, //!< L1, LB
DPAD_RIGHT = 15, // Dpad right | Dpad right SHOULDER_RIGHT = 5, //!< R1, RB
DPAD_DOWN = 16, // Dpad down | Dpad down TRIGGER_LEFT = 6, //!< L2, LT
DPAD_LEFT = 17, // Dpad left | Dpad left TRIGGER_RIGHT = 7, //!< R2, RT
}; SELECT = 8, //!< Share, Address
START = 9, //!< Options, Menu
enum class Joystick LEFT_STICK = 10, //!< L3, LS
{ RIGHT_STICK = 11, //!< R3, RS
AXES_LEFT_STICK_X = 0, HOME = 12, //!< Home, Home
AXES_LEFT_STICK_Y = 1, CLICK = 13, //!< Touch pad, n/a
AXES_RIGHT_STICK_X = 2, DPAD_UP = 14, //!< Dpad up, Dpad up
AXES_LEFT_TRIGGER = 3, DPAD_RIGHT = 15, //!< Dpad right, Dpad right
AXES_RIGHT_TRIGGER = 4, DPAD_DOWN = 16, //!< Dpad down, Dpad down
AXES_RIGHT_STICK_Y = 5, DPAD_LEFT = 17, //!< Dpad left, Dpad left
}; } ControllerButton;
}
/*! \enum Bk::ControllerJoystick
Enum made to bind every controller axes with a Bk::ControllerAxesCode
*/
typedef enum : ControllerAxesCode
{
AXES_LEFT_STICK_X = 0,
AXES_LEFT_STICK_Y = 1,
AXES_RIGHT_STICK_X = 2,
AXES_LEFT_TRIGGER = 3,
AXES_RIGHT_TRIGGER = 4,
AXES_RIGHT_STICK_Y = 5,
} ControllerJoystick;
} }

@ -1,40 +1,103 @@
#pragma once #pragma once
/*! \file window.h
This file contiens all the interfaces to create a window.
Implementation possible with GLFW, Win32, etc.
*/
#include <bkpch.h> #include <bkpch.h>
#include <bakara/events/event.h> #include <bakara/events/event.h>
namespace Bk { namespace Bk {
struct WindowPros
/* \struct Bk::WindowProps
Structure containing the essential data to create a window.
*/
struct WindowProps
{ {
std::string title; std::string title; //!< Title at the top of the window
uint width; uint width; //!< Width of the window
uint height; uint height; //!< Height of the window
WindowPros(std::string title = "Bakara engine", uint width = 1000, uint height = 800) /*! \fn Bk::WindowProps::WindowProps
Default window is initialized with a width of 1000 and a height 800
@param title : Title of the window
@param width : Width of the window
@param height : Height of the window
*/
WindowProps(std::string title = "Bakara engine", uint width = 1000, uint height = 800)
: title(title), width(width), height(height) {} : title(title), width(width), height(height) {}
}; };
/*! \class Bk::Window
Window is an interface to abstract witch window api is used. This enable compilation with multiple api,
so that it's possible to use the native api of the platform or to implement a graphics api's with more ease.
*/
class Window class Window
{ {
public: public:
/*! \typedef Bk::Window::EventCallback
The EventCallback is a function pointer that takes a Event as parameter
and that reponses to them.
*/
using EventCallback = std::function<void(Event& e)>; using EventCallback = std::function<void(Event& e)>;
/*! \fn Bk::Window::~Window
Virtual destructor enables subclasses to cleanup on termination.
*/
virtual ~Window() {} virtual ~Window() {}
/*! \fn Bk::Window::get_width
@return The width of the window
*/
virtual uint get_width() const = 0; virtual uint get_width() const = 0;
/*! \fn Bk::Window::get_height
@return The height of the window
*/
virtual uint get_height() const = 0; virtual uint get_height() const = 0;
/*! \fn Bk::Window::on_update
Updates the frame of the window
*/
virtual void on_update() = 0; virtual void on_update() = 0;
/*! \fn Bk::Window::set_event_callback
Sets the function pointer for events of the window
@param callback : function called when a new event occures
*/
virtual void set_event_callback(const EventCallback callback) = 0; virtual void set_event_callback(const EventCallback callback) = 0;
/*! \fn Bk::Window::set_vsync
Sets the window buffer swap interval. Is enabled by default.
If set to false the frame rate should be more constant, but more slow.
*/
virtual void set_vsync(bool enable) = 0; virtual void set_vsync(bool enable) = 0;
/*! \fn Bk::Window::is_vsync
Indicates if window is vsync
@return Vsync flag
*/
virtual bool is_vsync() const = 0; virtual bool is_vsync() const = 0;
/*! \fn Bk::Window::close
Closes the window
*/
virtual void close() = 0; virtual void close() = 0;
/*! \fn Bk::Window::open
Opens and initializes the window
*/
virtual void open() = 0; virtual void open() = 0;
bool is_open() { return p_is_open; } /*! \fn Bk::Window::is_open
Indicates if the window is opened
@return Open flag
*/
bool is_open() { return h_is_open; }
static std::unique_ptr<Window> create_window(const WindowPros& props = WindowPros()); /*! \fn Bk::Window::create_window()
Static function implemented in the api window class to get a window specifique api.
If no parameter is specified, creates the window with the default settings.
@param props : Window information
*/
static std::unique_ptr<Window> create_window(const WindowProps& props = WindowProps());
protected: protected:
bool p_is_open; bool h_is_open; //!< indicaste if the window is opened or not
}; };
} }
Loading…
Cancel
Save