Skip to content

Commit 1e7b99c

Browse files
feat: zoom functions
1 parent 7d08bc8 commit 1e7b99c

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

src/BlazorDesktop/Wpf/BlazorDesktopWindow.cs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public partial class BlazorDesktopWindow : Window
4949
private readonly IConfiguration _config;
5050
private readonly IWebHostEnvironment _environment;
5151
private readonly UISettings _uiSettings;
52+
private readonly double[] _zoomSizes =
53+
[5, 4, 3, 2.5, 2, 1.75, 1.5, 1.25, 1.1, 1, 0.9, 0.8, 0.75, 0.66, 0.5, 0.33, 0.25];
5254
private const string DragScript =
5355
@"
5456
window.addEventListener('DOMContentLoaded', () => {
@@ -120,6 +122,54 @@ public void ToggleFullScreen()
120122
}
121123
}
122124

125+
/// <summary>
126+
/// Resets the zoom level.
127+
/// </summary>
128+
public void ResetZoom()
129+
{
130+
WebView.WebView.ZoomFactor = 1;
131+
}
132+
133+
/// <summary>
134+
/// Zooms in.
135+
/// </summary>
136+
public void ZoomIn()
137+
{
138+
var closest = _zoomSizes.Select(z => new { Zoom = z, Distance = Math.Abs(z - WebView.WebView.ZoomFactor) })
139+
.OrderBy(p => p.Distance)
140+
.Select(p => p.Zoom)
141+
.First();
142+
143+
var closestIndex = Array.IndexOf(_zoomSizes, closest);
144+
145+
if (closestIndex > 0)
146+
{
147+
var newZoomSize = _zoomSizes[closestIndex - 1];
148+
149+
WebView.WebView.ZoomFactor = newZoomSize;
150+
}
151+
}
152+
153+
/// <summary>
154+
/// Zooms in.
155+
/// </summary>
156+
public void ZoomOut()
157+
{
158+
var closest = _zoomSizes.Select(z => new { Zoom = z, Distance = Math.Abs(z - WebView.WebView.ZoomFactor) })
159+
.OrderBy(p => p.Distance)
160+
.Select(p => p.Zoom)
161+
.First();
162+
163+
var closestIndex = Array.IndexOf(_zoomSizes, closest);
164+
165+
if (closestIndex < _zoomSizes.Length - 1)
166+
{
167+
var newZoomSize = _zoomSizes[closestIndex + 1];
168+
169+
WebView.WebView.ZoomFactor = newZoomSize;
170+
}
171+
}
172+
123173
private void InitializeWindow()
124174
{
125175
var height = _config.GetValue<int?>(WindowDefaults.Height) ?? 768;

0 commit comments

Comments
 (0)