#pragma once

#include "vertex_engine/utils/utils.hpp" // IWYU pragma: keep

namespace VE
{
  struct flags
  {
    flags()
    {
      if (m_no_titlebar)        m_win_flags |= ImGuiWindowFlags_NoTitleBar;
      if (m_no_scrollbar)       m_win_flags |= ImGuiWindowFlags_NoScrollbar;
      if (!m_no_menu)           m_win_flags |= ImGuiWindowFlags_MenuBar;
      if (m_no_move)            m_win_flags |= ImGuiWindowFlags_NoMove;
      if (m_no_resize)          m_win_flags |= ImGuiWindowFlags_NoResize;
      if (m_no_collapse)        m_win_flags |= ImGuiWindowFlags_NoCollapse;
      if (m_no_nav)             m_win_flags |= ImGuiWindowFlags_NoNav;
      if (m_no_background)      m_win_flags |= ImGuiWindowFlags_NoBackground;
      if (m_no_bring_to_front)  m_win_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus;
    }

    virtual ~flags() = default;

    bool m_open = false;

    bool m_no_titlebar = true;
    bool m_no_scrollbar = true;
    bool m_no_menu = true;
    bool m_no_move = true;
    bool m_no_resize = true;
    bool m_no_collapse = true;
    bool m_no_nav = false;
    bool m_no_background = false;
    bool m_no_bring_to_front = false;
    bool m_no_docking = true;

    ImGuiWindowFlags m_win_flags = 0; 
  };
}
