mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-08-05 11:36:23 -05:00
73 lines
2.2 KiB
PowerShell
73 lines
2.2 KiB
PowerShell
function Invoke-WinUtilFontScaling {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Applies UI and font scaling for accessibility
|
|
|
|
.PARAMETER ScaleFactor
|
|
Sets the scaling from 0.75 and 2.0.
|
|
Default is 1.0 (100% - no scaling)
|
|
|
|
.EXAMPLE
|
|
Invoke-WinUtilFontScaling -ScaleFactor 1.25
|
|
# Applies 125% scaling
|
|
#>
|
|
|
|
param (
|
|
[double]$ScaleFactor = 1.0
|
|
)
|
|
|
|
# Validate if scale factor is within the range
|
|
if ($ScaleFactor -lt 0.75 -or $ScaleFactor -gt 2.0) {
|
|
Write-Warning "Scale factor must be between 0.75 and 2.0. Using 1.0 instead."
|
|
$ScaleFactor = 1.0
|
|
}
|
|
|
|
# Define an array for resources to be scaled
|
|
$fontResources = @(
|
|
"FontSize",
|
|
"ButtonFontSize",
|
|
"HeaderFontSize",
|
|
"TabButtonFontSize",
|
|
"IconFontSize",
|
|
"SettingsIconFontSize",
|
|
"CloseIconFontSize",
|
|
"AppEntryFontSize",
|
|
"SearchBarTextBoxFontSize",
|
|
"SearchBarClearButtonFontSize",
|
|
"CustomDialogFontSize",
|
|
"CustomDialogFontSizeHeader",
|
|
"ConfigUpdateButtonFontSize",
|
|
"CheckBoxBulletDecoratorSize"
|
|
)
|
|
|
|
# Apply scaling to each resource
|
|
foreach ($resourceName in $fontResources) {
|
|
try {
|
|
# Get the default font size from the theme configuration
|
|
$originalValue = $sync.configs.themes.shared.$resourceName
|
|
if ($originalValue) {
|
|
# Convert string to double since values are stored as strings
|
|
$originalValue = [double]$originalValue
|
|
# Calculates and applies the new font size
|
|
$newValue = [math]::Round($originalValue * $ScaleFactor, 1)
|
|
$sync.Form.Resources[$resourceName] = $newValue
|
|
Write-Debug "Scaled $resourceName from original $originalValue to $newValue (factor: $ScaleFactor)"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Warning "Failed to scale resource $resourceName : $_"
|
|
}
|
|
}
|
|
|
|
# Update the font scaling percentage displayed on the UI
|
|
if ($sync.FontScalingValue) {
|
|
$percentage = [math]::Round($ScaleFactor * 100)
|
|
$sync.FontScalingValue.Text = "$percentage%"
|
|
}
|
|
|
|
Write-Debug "Font scaling applied with factor: $ScaleFactor"
|
|
}
|
|
|
|
|