91 lines
2.5 KiB
C++
91 lines
2.5 KiB
C++
#include "pch.h"
|
|
|
|
#include "legacy_canvas_view_services.h"
|
|
|
|
#include "app.h"
|
|
#include "node_canvas.h"
|
|
#include "serializer.h"
|
|
#include "settings.h"
|
|
|
|
namespace pp::panopainter {
|
|
namespace {
|
|
|
|
class LegacyCanvasViewServices final : public pp::app::CanvasViewServices {
|
|
public:
|
|
explicit LegacyCanvasViewServices(App& app) noexcept
|
|
: app_(app)
|
|
{
|
|
}
|
|
|
|
void reset_camera(const pp::app::CanvasCameraState& state) override
|
|
{
|
|
if (!app_.canvas || !app_.canvas->m_canvas) {
|
|
return;
|
|
}
|
|
|
|
app_.canvas->m_canvas->m_cam_rot = glm::mat4(
|
|
state.rotation[0], state.rotation[1], state.rotation[2], state.rotation[3],
|
|
state.rotation[4], state.rotation[5], state.rotation[6], state.rotation[7],
|
|
state.rotation[8], state.rotation[9], state.rotation[10], state.rotation[11],
|
|
state.rotation[12], state.rotation[13], state.rotation[14], state.rotation[15]);
|
|
app_.canvas->m_canvas->m_cam_pos = {
|
|
state.position[0],
|
|
state.position[1],
|
|
state.position[2],
|
|
};
|
|
app_.canvas->m_canvas->m_cam_fov = state.field_of_view_degrees;
|
|
app_.canvas->m_canvas->m_pan = {
|
|
state.pan[0],
|
|
state.pan[1],
|
|
};
|
|
}
|
|
|
|
void set_density(const pp::app::CanvasViewDensityPlan& plan) override
|
|
{
|
|
if (!app_.canvas) {
|
|
return;
|
|
}
|
|
|
|
app_.canvas->set_density(plan.density);
|
|
Settings::set("vp-scale", Serializer::Float(plan.density));
|
|
Settings::save();
|
|
}
|
|
|
|
void set_cursor_mode(const pp::app::CanvasViewCursorModePlan& plan) override
|
|
{
|
|
if (!app_.canvas) {
|
|
return;
|
|
}
|
|
|
|
const auto mode = static_cast<int>(plan.mode);
|
|
app_.canvas->set_cursor_visibility(static_cast<NodeCanvas::kCursorVisibility>(mode));
|
|
Settings::set("show-cursor", Serializer::Integer(mode));
|
|
Settings::save();
|
|
}
|
|
|
|
private:
|
|
App& app_;
|
|
};
|
|
|
|
} // namespace
|
|
|
|
pp::foundation::Status execute_legacy_canvas_camera_reset(App& app)
|
|
{
|
|
LegacyCanvasViewServices services(app);
|
|
return pp::app::execute_canvas_camera_reset(services);
|
|
}
|
|
|
|
pp::foundation::Status execute_legacy_canvas_view_density(App& app, float density)
|
|
{
|
|
LegacyCanvasViewServices services(app);
|
|
return pp::app::execute_canvas_view_density(density, services);
|
|
}
|
|
|
|
pp::foundation::Status execute_legacy_canvas_cursor_mode(App& app, int mode)
|
|
{
|
|
LegacyCanvasViewServices services(app);
|
|
return pp::app::execute_canvas_view_cursor_mode(mode, services);
|
|
}
|
|
|
|
} // namespace pp::panopainter
|