Euphoria
ui.h
Go to the documentation of this file.
1#pragma once
2
3#include "dear_imgui/imgui.h"
4
5#include "eu/imgui/scurve.h"
6
7namespace eu::render
8{
9struct FrameBuffer;
10}
11
12namespace eu::imgui
13{
14
16{
17 unsigned int program_handle = 0;
20};
21
35
42
44
45void label(const char* label);
46bool button(const char* label);
47bool centered_button(const char* label);
48
49bool header(const char* label, bool* closeable = nullptr);
50
51void imgui_text(const std::string& str);
52
53bool imgui_edit(const char* label, std::string* str);
54
55void imgui_readonly(const char* label, const std::string& text);
56void imgui_readonly(const char* label, const v3& v);
57void imgui_readonly(const char* label, const Ypr& y);
58
59void imgui_image(const char* name, const render::FrameBuffer& img, ImguiShaderCache* cache, ImageShader shader);
60// bool simple_gamma_slider(const char* label, float* gamma, float curve = 1.5f, float min_gamma = 1.6f, float max_gamma = 2.8f);
61
62// bool drag(const char* label, v3* drag);
63// bool drag(const char* label, Ypr* drag);
64
65// bool gear(const char* label, v3* drag);
66// bool gear(const char* label, Rui* drag);
67// bool gear(const char* label, Ypr* drag);
68
69void transform(const m4& m);
70bool transform(m4* m);
71
73{
74 PropTable(const PropTable&) = delete;
75 void operator=(const PropTable&) = delete;
76 void operator=(const PropTable&&) = delete;
77
78 PropTable(PropTable&& r) noexcept;
79
80 constexpr operator bool() const { return started; }
81
82 static PropTable begin(const char* label = "properties");
84
85 bool check(const char* label, bool* v) const;
86 bool slider(const char* label, float* v, float min, float max) const;
87 bool slider(const char* label, float* v) const;
88 void text(const char* label, const std::string& str) const;
89 bool edit(const char* label, std::string* str) const;
90
91 void display(const char* label, bool b) const;
92 void readonly(const char* label, const std::string& text) const;
93 void readonly(const char* label, const eu::v3& v) const;
94 void readonly(const char* label, const eu::Ypr& y) const;
95 bool color(const char* label, Rgb* color) const;
96 bool simple_gamma_slider(const char* label, float* gamma, float curve = 1.5f, float min_gamma = 1.6f, float max_gamma = 2.8f) const;
97 bool drag(const char* label, eu::v3* drag) const;
98 bool drag(const char* label, eu::Ypr* drag) const;
99 bool drag(const char* label, float* drag, float speed = 1.0f) const;
100 bool drag(const char* label, int* drag) const;
101 bool gear(const char* label, eu::v3* drag) const;
102 bool gear(const char* label, eu::Rui* drag) const;
103 bool gear(const char* label, eu::Ypr* drag) const;
104 void transform(const eu::m4& m) const;
105 bool transform(eu::m4* m) const;
106 bool scurve(const char* label, eu::core::SCurve* scurve, eu::imgui::SCurveGuiState* gui, eu::imgui::FlipX flip_x, const eu::imgui::SCurveImguiSettings& settings, bool force_init_curve) const;
107
108 void image(const char* label, const render::FrameBuffer& img, ImguiShaderCache* cache, ImageShader shader) const;
109private:
110 bool started;
111
112 PropTable() = default;
113 explicit PropTable(bool b);
114};
115
116
117}
constexpr float min(float lhs, float rhs)
Definition numeric.h:78
constexpr float max(float lhs, float rhs)
Definition numeric.h:79
void imgui_readonly(const char *label, const std::string &text)
void imgui_image(const char *name, const render::FrameBuffer &img, ImguiShaderCache *cache, ImageShader shader)
bool header(const char *label, bool *closeable=nullptr)
bool imgui_edit(const char *label, std::string *str)
bool button(const char *label)
void imgui_text(const std::string &str)
void label(const char *label)
ImageShader
Definition ui.h:37
void transform(const m4 &m)
bool centered_button(const char *label)
void setup_colors()
Definition ui.h:8
Represents color in gamma (non-linear) space (aka sRGB).
Definition colors.h:14
Definition mat4.h:18
yaw + pitch + roll
Definition axisangle.h:33
Contains the parameters for an S-Curve.
Definition scurve.h:15
ImguiShaderCache(const ImguiShaderCache &)=delete
ImguiShaderCache & operator=(ImguiShaderCache &&)=delete
ImguiShaderCache(ImguiShaderCache &&)=delete
ImguiShaderProgram linear_to_gamma_shader
Definition ui.h:32
ImguiShaderProgram depth_ortho_shader
Definition ui.h:33
ImguiShaderCache & operator=(const ImguiShaderCache &)=delete
unsigned int program_handle
Definition ui.h:17
bool simple_gamma_slider(const char *label, float *gamma, float curve=1.5f, float min_gamma=1.6f, float max_gamma=2.8f) const
bool slider(const char *label, float *v) const
bool gear(const char *label, eu::Ypr *drag) const
void readonly(const char *label, const eu::v3 &v) const
bool transform(eu::m4 *m) const
PropTable(const PropTable &)=delete
void transform(const eu::m4 &m) const
bool check(const char *label, bool *v) const
void text(const char *label, const std::string &str) const
bool gear(const char *label, eu::Rui *drag) const
void readonly(const char *label, const eu::Ypr &y) const
bool scurve(const char *label, eu::core::SCurve *scurve, eu::imgui::SCurveGuiState *gui, eu::imgui::FlipX flip_x, const eu::imgui::SCurveImguiSettings &settings, bool force_init_curve) const
bool drag(const char *label, eu::Ypr *drag) const
void operator=(const PropTable &)=delete
void display(const char *label, bool b) const
bool drag(const char *label, float *drag, float speed=1.0f) const
bool edit(const char *label, std::string *str) const
static PropTable begin(const char *label="properties")
bool slider(const char *label, float *v, float min, float max) const
void operator=(const PropTable &&)=delete
bool drag(const char *label, int *drag) const
bool drag(const char *label, eu::v3 *drag) const
bool gear(const char *label, eu::v3 *drag) const
void readonly(const char *label, const std::string &text) const
PropTable(PropTable &&r) noexcept
void image(const char *label, const render::FrameBuffer &img, ImguiShaderCache *cache, ImageShader shader) const
bool color(const char *label, Rgb *color) const
Represents the GUI state for an S-curve.
Definition scurve.h:15
Configuration settings for displaying and interacting with an S-curve widget.
Definition scurve.h:28
4x4 matrix
Definition mat4.h:26
"render to texture" feature
Definition texture.h:103
a 3d vector
Definition vec3.h:27