Dandelion
2.0.0
A light-weight 3D builder for educational usage
Toggle main menu visibility
载入中...
搜索中...
未找到
toolbar.h
浏览该文件的文档.
1
#ifndef DANDELION_UI_TOOLBAR_H
2
#define DANDELION_UI_TOOLBAR_H
3
4
#include <cstddef>
5
#include <functional>
6
7
#include "../scene/selection_helper.h"
8
#include "
../scene/material.hpp
"
9
#include "
../scene/scene.h
"
10
#include "
../utils/rendering.hpp
"
11
12
/*!
13
* \file ui/toolbar.h
14
* \ingroup ui
15
*/
16
17
namespace
UI {
18
19
/*!
20
* \ingroup ui
21
* \~chinese
22
* \brief 场景中最大可容纳的节点数(组数量与物体数量的总和)。
23
*/
24
constexpr
std::size_t
MAX_SCENE_NODES
= 100;
25
26
/*!
27
* \ingroup ui
28
* \~chinese
29
* \brief 工具栏提供大部分对场景、物体、相机和光源的操作。
30
*/
31
class
Toolbar
32
{
33
public
:
34
35
/*!
36
* \~chinese
37
* \brief 工具栏持有对工作模式的引用和对选中元素的引用,构造时必须传递。
38
*
39
* 工具栏还有 `on_element_selected` 和 `on_selection_canceled`
40
* 两个与选择和拾取有关的回调函数,如果没有设置这两个回调函数,工具栏将不能正常工作。
41
* 但构造函数并不会设置它们,而是由控制器在创建工具栏时设置。目前,
42
*
43
* - `on_element_selected` 回调对应 `Controller::select`
44
* - `on_selection_canceled` 回调对应 `Controller::unselect`
45
*/
46
Toolbar
(
WorkingMode
&
mode
,
const
SelectableType
&
selected_element
);
47
~Toolbar
();
48
/*! \~chinese 显示工具栏。 */
49
void
render
(
Scene
& scene);
50
51
/*! \~chinese 选中元素时的回调函数。 */
52
std::function<void(
SelectableType
)>
on_element_selected
;
53
/*! \~chinese 取消选中时的回调函数。 */
54
std::function<void()>
on_selection_canceled
;
55
56
private
:
57
58
/*! \~chinese 切换工作模式,清理上一个模式的临时数据。 */
59
void
switch_mode
(
WorkingMode
target_mode,
Scene
& scene);
60
/*! \~chinese 将场景层次结构展示为一个树形列表。 */
61
void
scene_hierarchies
(
Scene
& scene);
62
/*! \~chinese 显示标签分别为 x, y, z 的三个 `ImGui::DragFloat` 控件。 */
63
void
xyz_drag
(
float
* x,
float
* y,
float
* z,
float
v_speed,
const
char
* format =
"%.2f"
);
64
/*! \~chinese 显示并编辑单个物体的材质属性。 */
65
void
material_editor
(
Material
& material);
66
/*! \~chinese 布局模式对应的标签页。 */
67
void
layout_mode
(
Scene
& scene);
68
/*! \~chinese 建模模式对应的标签页。 */
69
void
model_mode
(
Scene
& scene);
70
/*! \~chinese 渲染模式对应的标签页。 */
71
void
render_mode
(
Scene
& scene);
72
/*! \~chinese 物理模拟模式对应的标签页。 */
73
void
simulate_mode
(
Scene
& scene);
74
75
/*! \~chinese 与 Dandelion 的工作模式一一对应,`render` 方法据此调整渲染行为。 */
76
WorkingMode
&
mode
;
77
/*! \~chinese 工具栏需要了解当前被选中的元素才能显示相应的操作。 */
78
const
SelectableType
&
selected_element
;
79
/*! \~chinese 用于在渲染模式下展示渲染结果的 OpenGL 纹理描述符。 */
80
unsigned
int
gl_rendered_texture
;
81
};
82
83
}
// namespace UI
84
85
#endif
// DANDELION_UI_TOOLBAR_H
Scene
表示一个包含相机、光源、物体等对象的完整场景。
定义
scene.h:57
UI::Toolbar::selected_element
const SelectableType & selected_element
定义
toolbar.h:78
UI::Toolbar::render_mode
void render_mode(Scene &scene)
定义
toolbar.cpp:440
UI::Toolbar::material_editor
void material_editor(Material &material)
定义
toolbar.cpp:173
UI::Toolbar::render
void render(Scene &scene)
定义
toolbar.cpp:70
UI::Toolbar::model_mode
void model_mode(Scene &scene)
定义
toolbar.cpp:250
UI::Toolbar::scene_hierarchies
void scene_hierarchies(Scene &scene)
定义
toolbar.cpp:122
UI::Toolbar::layout_mode
void layout_mode(Scene &scene)
定义
toolbar.cpp:199
UI::Toolbar::xyz_drag
void xyz_drag(float *x, float *y, float *z, float v_speed, const char *format="%.2f")
定义
toolbar.cpp:156
UI::Toolbar::simulate_mode
void simulate_mode(Scene &scene)
定义
toolbar.cpp:607
UI::Toolbar::on_element_selected
std::function< void(SelectableType)> on_element_selected
定义
toolbar.h:52
UI::Toolbar::switch_mode
void switch_mode(WorkingMode target_mode, Scene &scene)
定义
toolbar.cpp:84
UI::Toolbar::mode
WorkingMode & mode
定义
toolbar.h:76
UI::Toolbar::gl_rendered_texture
unsigned int gl_rendered_texture
定义
toolbar.h:80
UI::Toolbar::on_selection_canceled
std::function< void()> on_selection_canceled
定义
toolbar.h:54
UI::Toolbar::Toolbar
Toolbar(WorkingMode &mode, const SelectableType &selected_element)
工具栏持有对工作模式的引用和对选中元素的引用,构造时必须传递。
定义
toolbar.cpp:52
UI::MAX_SCENE_NODES
constexpr std::size_t MAX_SCENE_NODES
场景中最大可容纳的节点数(组数量与物体数量的总和)。
定义
toolbar.h:24
SelectableType
std::variant< std::monostate, Object *, const Halfedge *, Vertex *, Edge *, Face *, Light * > SelectableType
场景中可被选择的元素类型。
定义
selection_helper.h:36
material.hpp
rendering.hpp
这个文件定义了一些和渲染(离线渲染或场景预览)相关的常量、枚举等。
WorkingMode
WorkingMode
定义
rendering.hpp:55
scene.h
包含场景的类。
Material
所有材质的基类。
定义
material.hpp:29
src
ui
toolbar.h
制作者
1.18.0