diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index 6913574df..c1a6a7af2 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -1190,6 +1190,33 @@ void EditorComponent::Load() }); topmenuWnd.AddWidget(&exitButton); + guiScalingCombo.Create("GuiScaling"); + guiScalingCombo.SetDropArrowEnabled(false); + guiScalingCombo.SetFixedDropWidth(60); + guiScalingCombo.SetText(""); + guiScalingCombo.SetTooltip("Set the custom scaling factor for the GUI.\nNote that this is in addition to the operating system's DPI scaling for the monitor."); + guiScalingCombo.AddItem("50%", 50); + guiScalingCombo.AddItem("75%", 75); + guiScalingCombo.AddItem("100%", 100); + guiScalingCombo.AddItem("125%", 125); + guiScalingCombo.AddItem("150%", 150); + guiScalingCombo.AddItem("175%", 175); + guiScalingCombo.AddItem("200%", 200); + guiScalingCombo.AddItem("225%", 225); + guiScalingCombo.AddItem("250%", 250); + if (main->config.Has("scaling")) + { + guiScalingCombo.SetSelectedByUserdata((uint64_t)main->config.GetInt("scaling")); + } + else + { + guiScalingCombo.SetSelectedByUserdataWithoutCallback(100); + } + guiScalingCombo.OnSelect([this](wi::gui::EventArgs args) { + this->main->config.Set("scaling", (int)args.userdata); + }); + GetGUI().AddWidget(&guiScalingCombo); + componentsWnd.Create(this); GetGUI().AddWidget(&componentsWnd); @@ -1291,6 +1318,8 @@ void EditorComponent::Update(float dt) { wi::profiler::range_id profrange = wi::profiler::BeginRangeCPU("Editor Update"); + main->canvas.scaling = float(guiScalingCombo.GetSelectedUserdata()) / 100.0f; + if (CheckInput(EditorActions::MAKE_NEW_SCREENSHOT)) { std::string filename = wi::helper::screenshot(main->swapChain); @@ -5301,6 +5330,9 @@ void EditorComponent::UpdateDynamicWidgets() paintToolButton.Update(*this, 0); y += hei + padding; + + guiScalingCombo.SetSize(XMFLOAT2(50, 18)); + guiScalingCombo.SetPos(XMFLOAT2(ofs, screenH - guiScalingCombo.GetSize().y - padding)); } void EditorComponent::SetCurrentScene(int index) diff --git a/Editor/Editor.h b/Editor/Editor.h index 87fd7b40a..57ac6b371 100644 --- a/Editor/Editor.h +++ b/Editor/Editor.h @@ -65,6 +65,8 @@ public: wi::gui::Button materialsButton; wi::gui::Button paintToolButton; + wi::gui::ComboBox guiScalingCombo; + GeneralWindow generalWnd; GraphicsWindow graphicsWnd; CameraWindow cameraWnd; diff --git a/Editor/GeneralWindow.cpp b/Editor/GeneralWindow.cpp index d4aa9ac4f..f15639026 100644 --- a/Editor/GeneralWindow.cpp +++ b/Editor/GeneralWindow.cpp @@ -709,6 +709,15 @@ void GeneralWindow::Create(EditorComponent* _editor) editor->aboutLabel.sprites[i].params.blendFlag = wi::enums::BLENDMODE_ALPHA; } + for (auto& sprite : editor->guiScalingCombo.sprites) + { + sprite.params.enableCornerRounding(); + sprite.params.corners_rounding[0].radius = 10; + sprite.params.corners_rounding[1].radius = 10; + sprite.params.corners_rounding[2].radius = 10; + sprite.params.corners_rounding[3].radius = 10; + } + }); AddWidget(&themeCombo);