← index
MasterX_System/system/src/mx_abstract_control.hpp
Source: MasterX_System/system/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 = std::function<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; }
    };
}



#endif