diff --git a/UI/Window/RenderConfigWindow.cs b/UI/Window/RenderConfigWindow.cs index 8425e22..5eca340 100644 --- a/UI/Window/RenderConfigWindow.cs +++ b/UI/Window/RenderConfigWindow.cs @@ -102,6 +102,20 @@ internal static class RenderConfigWindow double[] audioBitrateSnap = { 64, 96, 128, 192, 256, 320, 384 }; + double[] renderWidthSnap = { + 256, 426, 640, 854, 960, 1280, 1366, 1600, 1920, 2048, 2560, 3200, 3840, 4096, 5120, 5760, 6016, 7680, 10240, 15360, // 16:9 + 230, 384, 576, 768, 1152, 1440, 1680, 2880, 3072, // 16:10 + 192, 320, 480, 800, 1024, 1400, 2732, 6400, 11520 // 4:3 + }; + + double[] renderHeightSnap = { + 144, 240, 360, 480, 540, 720, 768, 900, 1080, 1152, 1440, 1800, 2160, 2304, 2880, 3240, 3384, 4320, 5760, 8640, // 16:9 + 400, 600, 800, 1050, 1200, 1600, 1920, 2400, 3200, 4800, 9600, // 16:10 + 864, 960, 1536, 2048, 3072 // 4:3 + }; + + // TODO: Presets + // 1-3. Top section: 좌/우 컨테이너 1개씩으로 3행을 쌓는다 (중앙선 1개) var (topLeft, topRight) = CreateTwoColumnPanel(scrollContent, spacing: 8f, columnSpacing: 10f); @@ -132,7 +146,7 @@ internal static class RenderConfigWindow defaultValue: 2560, min: 0, max: 15360, value: 2560, format: "F0", clampMode: ClampMode.All, - sliderFilter: value => Math.Max(value, 2), inputFilter: value => Math.Max(value, 2), + sliderFilter: value => renderWidthSnap.OrderBy(n => Math.Abs(n - value)).First(), inputFilter: value => Math.Max(value, 2), onComplete: null, onChanged: val => { config.RenderWidth = (int)Math.Round(val); }, text: LocalizationManager.Get("ui.render_config.render_width"), id: "slider_render_width", showFill: true @@ -143,7 +157,7 @@ internal static class RenderConfigWindow defaultValue: 1440, min: 0, max: 8640, value: 1440, format: "F0", clampMode: ClampMode.All, - sliderFilter: value => Math.Max(value, 2), inputFilter: value => Math.Max(value, 2), + sliderFilter: value => renderHeightSnap.OrderBy(n => Math.Abs(n - value)).First(), inputFilter: value => Math.Max(value, 2), onComplete: null, onChanged: val => { config.RenderWidth = (int)Math.Round(val); }, text: LocalizationManager.Get("ui.render_config.render_height"), id: "slider_render_height", showFill: true