FTXUI 6.1.9
C++ functional terminal UI.
载入中...
搜索中...
未找到
loop.cpp
浏览该文件的文档.
1// Copyright 2022 Arthur Sonzogni. 版权所有。
2// 本源代码受 MIT 许可证约束,可在 LICENSE 文件中找到。
4
5#include <utility> // for move
6
7#include "ftxui/component/screen_interactive.hpp" // for ScreenInteractive, Component
8
9namespace ftxui {
10
11/// @brief Loop 是 Component 和 ScreenInteractive 的包装器。
12/// 它用于在终端中运行 Component。
13/// @see Component, ScreenInteractive.
14/// @see ScreenInteractive::Loop().
15/// @see ScreenInteractive::ExitLoop().
16/// @param[in] screen 要使用的屏幕。
17/// @param[in] component 要运行的组件。
18// NOLINTNEXTLINE
20 : screen_(screen), component_(std::move(component)) {
21 screen_->PreMain();
22}
23
25 screen_->PostMain();
26}
27
28/// @brief 循环是否已退出。
30 return screen_->HasQuitted();
31}
32
33/// @brief 执行循环。使 `component` 处理所有待处理的任务/事件。
34/// 如果前一帧无效,可能会绘制新帧。
35/// 在循环完成之前返回 true。
37 screen_->RunOnce(component_);
38}
39
40/// @brief 等待至少一个事件被处理并执行 `Loop::RunOnce()`。
42 screen_->RunOnceBlocking(component_);
43}
44
45/// 执行循环,阻塞当前线程,直到循环退出。
46void Loop::Run() {
47 while (!HasQuitted()) {
49 }
50}
51
52} // namespace ftxui
bool HasQuitted()
循环是否已退出。
void Run()
执行循环,阻塞当前线程,直到循环退出。
Loop(ScreenInteractive *screen, Component component)
Loop 是 Component 和 ScreenInteractive 的包装器。 它用于在终端中运行 Component。
void RunOnce()
执行循环。使 component 处理所有待处理的任务/事件。 如果前一帧无效,可能会绘制新帧。 在循环完成之前返回 true。
void RunOnceBlocking()
等待至少一个事件被处理并执行 Loop::RunOnce()。
ScreenInteractive 是一个可以处理事件、运行主循环和管理组件的 Screen。
#include "ftxui/component/component_base.hpp" // 用于 ComponentBase
std::shared_ptr< ComponentBase > Component