cplusplus2x.Examples/C++20/MasterX/src/mx_abstract_control.hpp
Source: cplusplus2x.Examples/C++20/MasterX/src/mx_abstract_control.hpp
#ifndef __MX_CONTROL_H_X
#define __MX_CONTROL_H_X
#include "window.hpp"
#include <functional>
namespace mx {
class Window;
using EventCallback = bool (*)(mxApp &app, Window *window, SDL_Event &e);
using ResizeCallback = std::function<void(Window *, int, int)>;
class Control : public Screen {
public:
virtual ~Control() = default;
virtual void setWindowPos(int x, int y) = 0;
virtual void resizeWindow(int w, int h) {}
template <typename F>
void setCallback(F callb) { callback = callb; }
template <typename F>
void setResizeCallback(F callb) { rcallback = callb; }
Window *parent = nullptr;
EventCallback callback = nullptr;
ResizeCallback rcallback = nullptr;
bool show = true;
void setShow(bool s) { show = s; }
};
} // namespace mx
#endif