diff --git a/applications/gui/src/screen.cpp b/applications/gui/src/screen.cpp index 3b2aae1aaff8d00daa6c80c3d03d8ffb47423783..28487057c64e6f957be035f08a43d1149addac4a 100644 --- a/applications/gui/src/screen.cpp +++ b/applications/gui/src/screen.cpp @@ -72,6 +72,20 @@ ftl::gui::Screen::Screen(ftl::Configurable *proot, ftl::net::Universe *pnet, ftl has_vr_ = vr::VR_IsHmdPresent(); #endif + zoom_ = root_->value("zoom", 1.0f); + root_->on("zoom", [this](const ftl::config::Event &e) { + zoom_ = root_->value("zoom", 1.0f); + }); + + pos_x_ = root_->value("position_x", 0.0f); + root_->on("position_x", [this](const ftl::config::Event &e) { + pos_x_ = root_->value("position_x", 0.0f); + }); + pos_y_ = root_->value("position_y", 0.0f); + root_->on("position_y", [this](const ftl::config::Event &e) { + pos_y_ = root_->value("position_y", 0.0f); + }); + setSize(Vector2i(1280,720)); toolbuttheme = new Theme(*theme()); @@ -446,9 +460,9 @@ void ftl::gui::Screen::draw(NVGcontext *ctx) { #endif if (mImageID < std::numeric_limits<unsigned int>::max() && imageSize[0] > 0) { - auto mScale = (screenSize.cwiseQuotient(imageSize).minCoeff()); + auto mScale = (screenSize.cwiseQuotient(imageSize).minCoeff()) * zoom_; Vector2f scaleFactor = mScale * imageSize.cwiseQuotient(screenSize); - Vector2f positionInScreen(0.0f, 0.0f); + Vector2f positionInScreen(pos_x_, pos_y_); auto mOffset = (screenSize - (screenSize.cwiseProduct(scaleFactor))) / 2; Vector2f positionAfterOffset = positionInScreen + mOffset; Vector2f imagePosition = positionAfterOffset.cwiseQuotient(screenSize); diff --git a/applications/gui/src/screen.hpp b/applications/gui/src/screen.hpp index a0ac39d064875bdc5be81e526a95ac9269617c25..ecdbf7c91afdc137aee43a4a9849e826ccd329e9 100644 --- a/applications/gui/src/screen.hpp +++ b/applications/gui/src/screen.hpp @@ -92,6 +92,9 @@ class Screen : public nanogui::Screen { ftl::Configurable *root_; std::string status_; ftl::gui::Camera *camera_; + float zoom_; + float pos_x_; + float pos_y_; GLuint leftEye_; GLuint rightEye_;