Program Listing for File windowevents.hpp

Return to documentation for file (/home/runner/work/Legion-Engine/Legion-Engine/legion/engine/application/events/windowevents.hpp)

#pragma once
#include <core/core.hpp>
#include <application/window/window.hpp>
#include <vector>


namespace legion::application
{
    struct window_close final : public events::event<window_close>
    {
        ecs::component_handle<window> windowHandle;

        window_close() = default;
        window_close(ecs::component_handle<window> windowHandle) : windowHandle(windowHandle) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_move final : public events::event<window_move>
    {
        ecs::component_handle<window> windowHandle;
        math::ivec2 position;

        window_move() = default;
        window_move(ecs::component_handle<window> windowHandle, math::ivec2 position) : windowHandle(windowHandle), position(position) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_resize final : public events::event<window_resize>
    {
        ecs::component_handle<window> windowHandle;
        math::ivec2 size;

        window_resize() = default;
        window_resize(ecs::component_handle<window> windowHandle, math::ivec2 size) : windowHandle(windowHandle), size(size) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_refresh final : public events::event<window_refresh>
    {
        ecs::component_handle<window> windowHandle;

        window_refresh() = default;
        window_refresh(ecs::component_handle<window> windowHandle) : windowHandle(windowHandle) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_focus final : public events::event<window_focus>
    {
        ecs::component_handle<window> windowHandle;
        int focused;

        window_focus() = default;
        window_focus(ecs::component_handle<window> windowHandle, int focused) : windowHandle(windowHandle), focused(focused) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_iconified final : public events::event<window_iconified>
    {
        ecs::component_handle<window> windowHandle;
        int iconified;

        window_iconified() = default;
        window_iconified(ecs::component_handle<window> windowHandle, int iconified) : windowHandle(windowHandle), iconified(iconified) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_maximized final : public events::event<window_maximized>
    {
        ecs::component_handle<window> windowHandle;
        int maximized;

        window_maximized() = default;
        window_maximized(ecs::component_handle<window> windowHandle, int maximized) : windowHandle(windowHandle), maximized(maximized) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_framebuffer_resize final : public events::event<window_framebuffer_resize>
    {
        ecs::component_handle<window> windowHandle;
        math::ivec2 size;

        window_framebuffer_resize() = default;
        window_framebuffer_resize(ecs::component_handle<window> windowHandle, math::ivec2 size) : windowHandle(windowHandle), size(size) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_content_rescale final : public events::event<window_content_rescale>
    {
        ecs::component_handle<window> windowHandle;
        math::vec2 scale;

        window_content_rescale() = default;
        window_content_rescale(ecs::component_handle<window> windowHandle, math::vec2 scale) : windowHandle(windowHandle), scale(scale) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct window_item_dropped final : public events::event<window_item_dropped>
    {
        ecs::component_handle<window> windowHandle;
        std::vector<cstring> paths;

        window_item_dropped() = default;
        window_item_dropped(ecs::component_handle<window> windowHandle, int count, cstring* cpaths) : windowHandle(windowHandle)
        {
            for (int i = 0; i < count; i++)
                paths.push_back(cpaths[i]);
        }

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };

    struct mouse_enter_window final : public events::event<mouse_enter_window>
    {
        ecs::component_handle<window> windowHandle;
        int entered;

        mouse_enter_window() = default;
        mouse_enter_window(ecs::component_handle<window> windowHandle, int entered) : windowHandle(windowHandle), entered(entered) {}

        virtual bool persistent() override { return false; }
        virtual bool unique() override { return false; }
    };
}