Added a `ZoomStepPercentage` property to `PdfViewerOptions` to allow configurable zoom step increments (1-50, default 5%). Updated `EnvelopeViewer.razor` to use this property for the zoom slider step. Modified `pdf-viewer.js` to apply the zoom step percentage for mouse wheel zoom, `zoomIn`, and `zoomOut` methods. Included `ZoomStepPercentage` in `appsettings.json` and `setQualityOptions` for dynamic updates. Reduced `ZoomTransitionDuration` in `appsettings.json` from 900ms to 150ms for faster zoom transitions. These changes ensure consistent and customizable zoom behavior across the application.
72 lines
2.1 KiB
C#
72 lines
2.1 KiB
C#
namespace EnvelopeGenerator.ReceiverUI.Options;
|
|
|
|
public class PdfViewerOptions
|
|
{
|
|
public const string SectionName = "PdfViewer";
|
|
|
|
/// <summary>
|
|
/// Base scale for thumbnail rendering (0.2 - 1.5 recommended)
|
|
/// Higher values = better quality but slower rendering
|
|
/// Default: 0.75
|
|
/// </summary>
|
|
public double ThumbnailBaseScale { get; set; } = 0.75;
|
|
|
|
/// <summary>
|
|
/// Enable HiDPI/Retina support for thumbnails
|
|
/// Default: true
|
|
/// </summary>
|
|
public bool ThumbnailEnableHiDPI { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Maximum device pixel ratio multiplier for thumbnails (1.0 - 3.0)
|
|
/// Caps DPR to avoid excessive memory usage on 4K+ displays
|
|
/// Default: 2.0
|
|
/// </summary>
|
|
public double ThumbnailMaxDPR { get; set; } = 2.0;
|
|
|
|
/// <summary>
|
|
/// Enable HiDPI/Retina support for main PDF canvas
|
|
/// Default: true
|
|
/// </summary>
|
|
public bool MainCanvasEnableHiDPI { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Maximum device pixel ratio multiplier for main canvas (1.0 - 3.0)
|
|
/// Default: 2.0
|
|
/// </summary>
|
|
public double MainCanvasMaxDPR { get; set; } = 2.0;
|
|
|
|
/// <summary>
|
|
/// Enable smooth zoom transition (fade effect)
|
|
/// Default: true
|
|
/// </summary>
|
|
public bool EnableSmoothZoom { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Zoom transition duration in milliseconds (50 - 500)
|
|
/// Default: 150
|
|
/// </summary>
|
|
public int ZoomTransitionDuration { get; set; } = 150;
|
|
|
|
/// <summary>
|
|
/// Opacity during rendering (0.0 - 1.0)
|
|
/// Lower values = more visible fade effect
|
|
/// Default: 0.85
|
|
/// </summary>
|
|
public double RenderingOpacity { get; set; } = 0.85;
|
|
|
|
/// <summary>
|
|
/// Delay between thumbnail renders in milliseconds (10 - 200)
|
|
/// Higher values = less browser stress, slower initial load
|
|
/// Default: 50
|
|
/// </summary>
|
|
public int ThumbnailRenderDelay { get; set; } = 50;
|
|
|
|
/// <summary>
|
|
/// Zoom step percentage (1 - 50)
|
|
/// Controls how much zoom changes per click or scroll
|
|
/// Default: 5 (5% per step)
|
|
/// </summary>
|
|
public int ZoomStepPercentage { get; set; } = 5;
|
|
}
|