| 1 | #nullable enable |
| 2 | using CascadeIDE.Contracts; |
| 3 | |
| 4 | namespace CascadeIDE.Features.WorkspaceNavigation.Application; |
| 5 | |
| 6 | /// <summary>Пороги ширины области мини-карты на PFD (колбэк ширины viewport).</summary> |
| 7 | [ComputingUnit("policy-code-nav-viewport")] |
| 8 | public static class CodeNavigationMapViewportPolicy |
| 9 | { |
| 10 | public const double IgnoreBelowWidth = 40; |
| 11 | public const double MinClampedWidth = 80; |
| 12 | public const double MaxClampedWidth = 2400; |
| 13 | public const double ChangeEpsilon = 3; |
| 14 | |
| 15 | /// <summary>Вернуть <c>false</c>, если сообщение viewport игнорируем или ширина фактически не меняется.</summary> |
| 16 | public static bool ShouldApplyMeasuredWidth(double measuredWidth, double currentWidth, out double clampedWidth) |
| 17 | { |
| 18 | clampedWidth = default; |
| 19 | if (double.IsNaN(measuredWidth) || measuredWidth < IgnoreBelowWidth) |
| 20 | return false; |
| 21 | |
| 22 | clampedWidth = Math.Clamp(measuredWidth, MinClampedWidth, MaxClampedWidth); |
| 23 | if (Math.Abs(clampedWidth - currentWidth) < ChangeEpsilon) |
| 24 | return false; |
| 25 | |
| 26 | return true; |
| 27 | } |
| 28 | } |
| 29 | |
View only · write via MCP/CIDE