Files
panopainter/src/app_core/app_frame.h

57 lines
1.3 KiB
C++

#pragma once
namespace pp::app {
struct AppInitialSurfacePlan {
float width = 960.0F;
float height = 540.0F;
};
struct AppFrameUpdatePlan {
bool update_frame = false;
bool update_layouts = false;
bool refresh_canvas_toolbar = false;
};
struct AppFrameDrawPlan {
bool draw_canvas_stroke = false;
bool draw_vr_ui = false;
bool draw_main_ui = true;
bool reset_redraw = true;
};
[[nodiscard]] constexpr AppInitialSurfacePlan plan_app_initial_surface() noexcept
{
return AppInitialSurfacePlan {
.width = 1920.0F / 2.0F,
.height = 1080.0F / 2.0F,
};
}
[[nodiscard]] constexpr AppFrameUpdatePlan plan_app_frame_update(bool redraw, bool animate) noexcept
{
const bool update_frame = redraw || animate;
return AppFrameUpdatePlan {
.update_frame = update_frame,
.update_layouts = update_frame,
.refresh_canvas_toolbar = update_frame,
};
}
[[nodiscard]] constexpr AppFrameDrawPlan plan_app_frame_draw(
bool has_canvas_node,
bool has_canvas_document,
bool vr_active,
bool ui_visible,
bool vr_only) noexcept
{
return AppFrameDrawPlan {
.draw_canvas_stroke = has_canvas_node && has_canvas_document,
.draw_vr_ui = vr_active && ui_visible,
.draw_main_ui = !vr_only,
.reset_redraw = true,
};
}
} // namespace pp::app