/**
 * @file Container.h
 * @author apio (cloudapio.eu)
 * @brief A container widget to pad and align objects inside it.
 *
 * @copyright Copyright (c) 2023, the Luna authors.
 *
 */

#pragma once
#include <ui/Alignment.h>
#include <ui/Widget.h>

namespace ui
{
    class Container : public Widget
    {
      public:
        Container(Rect rect, VerticalAlignment valign, HorizontalAlignment halign);

        void set_widget(Widget& widget);

        Result<EventResult> handle_mouse_move(Point position) override;
        Result<EventResult> handle_mouse_leave(Point position) override;
        Result<EventResult> handle_mouse_down(Point position, int buttons) override;
        Result<EventResult> handle_mouse_up(Point position, int buttons) override;
        Result<void> draw(Canvas& canvas) override;

      private:
        Widget* m_widget;
        VerticalAlignment m_valign;
        HorizontalAlignment m_halign;
    };
}