libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
GuiWindow.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <memory>
5#include <imgui.h>
6#include <imgui_internal.h>
8#include <stdint.h>
9
10namespace Ship {
11class ConsoleVariable;
12class Window;
39class GuiWindow : public GuiElement {
40 public:
51 GuiWindow(std::shared_ptr<ConsoleVariable> consoleVariable, std::shared_ptr<Window> window,
52 const std::string& visibilityCvar, bool isVisible, const std::string& name, ImVec2 originalSize,
53 uint32_t windowFlags);
54
62 GuiWindow(const std::string& consoleVariable, bool isVisible, const std::string& name, ImVec2 originalSize);
63
64 GuiWindow(const std::string& consoleVariable, bool isVisible, const std::string& name, ImVec2 originalSize,
65 uint32_t windowFlags);
66
73 GuiWindow(const std::string& consoleVariable, bool isVisible, const std::string& name);
74
82 GuiWindow(const std::string& consoleVariable, const std::string& name, ImVec2 originalSize, uint32_t windowFlags);
83
90 GuiWindow(const std::string& consoleVariable, const std::string& name, ImVec2 originalSize);
91
97 GuiWindow(const std::string& consoleVariable, const std::string& name);
98
104 void Draw() override;
105
106 protected:
111 void SetVisibility(bool visible) override;
112
118 void BeginGroupPanel(const char* name, const ImVec2& size);
119
124 void EndGroupPanel(float minHeight);
125
128
129 void OnInit(const nlohmann::json& initArgs = {}) override;
130
132 std::shared_ptr<Window> GetWindow() const;
133
134 private:
135 std::string mVisibilityConsoleVariable;
136 ImVector<ImRect> mGroupPanelLabelStack;
137 ImVec2 mOriginalSize;
138 uint32_t mWindowFlags;
139 std::shared_ptr<ConsoleVariable> mConsoleVariable;
140 std::shared_ptr<Window> mWindow;
141};
142} // namespace Ship
Abstract base class for all visible GUI elements (windows, menu bars, overlays).
Definition GuiElement.h:34
A floating ImGui window managed by the Ship Gui layer.
Definition GuiWindow.h:39
void BeginGroupPanel(const char *name, const ImVec2 &size)
Begins a visually grouped labelled panel.
void SyncVisibilityConsoleVariable()
Reads the CVar and updates mIsVisible accordingly.
GuiWindow(const std::string &consoleVariable, const std::string &name)
Minimal constructor deriving visibility from CVar.
void Draw() override
Calls ImGui::Begin(), invokes DrawElement(), and calls ImGui::End().
GuiWindow(const std::string &consoleVariable, bool isVisible, const std::string &name)
Minimal constructor using default size and flags.
GuiWindow(const std::string &consoleVariable, const std::string &name, ImVec2 originalSize)
Constructor deriving visibility from CVar, with default flags.
GuiWindow(std::shared_ptr< ConsoleVariable > consoleVariable, std::shared_ptr< Window > window, const std::string &visibilityCvar, bool isVisible, const std::string &name, ImVec2 originalSize, uint32_t windowFlags)
Full constructor with constructor-injected dependencies, explicit size and window flags.
void EndGroupPanel(float minHeight)
Ends the previously opened group panel, adding a bottom margin.
GuiWindow(const std::string &consoleVariable, const std::string &name, ImVec2 originalSize, uint32_t windowFlags)
Constructor deriving initial visibility from the CVar value.
GuiWindow(const std::string &consoleVariable, bool isVisible, const std::string &name, ImVec2 originalSize, uint32_t windowFlags)
void SetVisibility(bool visible) override
Overrides SetVisibility to also write the new state to the backing CVar.
std::shared_ptr< Window > GetWindow() const
Returns the Window this GuiWindow belongs to.
void OnInit(const nlohmann::json &initArgs={}) override
Component initialization hook.
GuiWindow(const std::string &consoleVariable, bool isVisible, const std::string &name, ImVec2 originalSize)
Constructor with explicit size, using default ImGui window flags.
Core namespace for the libultraship engine framework.
Definition gfx_direct3d_common.h:14