diff --git a/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/PdfViewerControl.xaml.cs b/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/PdfViewerControl.xaml.cs index 37b6ed7..4cf40b4 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/PdfViewerControl.xaml.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/PdfViewerControl.xaml.cs @@ -35,13 +35,12 @@ namespace QuickLook.Plugin.PDFViewer /// public partial class PdfViewerControl : UserControl, INotifyPropertyChanged, IDisposable { - private const double MinZoomFactor = 0.1d; - private const double MaxZoomFactor = 5d; private int _changePageDeltaSum; private bool _initPage = true; - + private double _maxZoomFactor = double.NaN; + private double _minZoomFactor = double.NaN; private bool _pdfLoaded; - private double _viewRenderFactor = 0.5d; + private double _viewRenderFactor = double.NaN; public PdfViewerControl() { @@ -159,7 +158,17 @@ namespace QuickLook.Plugin.PDFViewer var pos = pagePanel.GetScrollPosition(); double factor; - if (pagePanel.ZoomToFit) + + // First time showing. Set thresholds here. + if (double.IsNaN(_minZoomFactor) || double.IsNaN(_maxZoomFactor)) + { + factor = Math.Min(pagePanel.ActualHeight / PdfHandle.Pages[CurrentPage].Height, + pagePanel.ActualWidth / PdfHandle.Pages[CurrentPage].Width); + _viewRenderFactor = factor; + _minZoomFactor = 0.1 * factor; + _maxZoomFactor = 5 * factor; + } + else if (pagePanel.ZoomToFit) { factor = Math.Min(pagePanel.ActualHeight / PdfHandle.Pages[CurrentPage].Height, pagePanel.ActualWidth / PdfHandle.Pages[CurrentPage].Width); @@ -167,10 +176,10 @@ namespace QuickLook.Plugin.PDFViewer else { factor = pagePanel.ZoomFactor * _viewRenderFactor; - factor = Math.Max(factor, MinZoomFactor); - factor = Math.Min(factor, MaxZoomFactor); - pagePanel.MinZoomFactor = MinZoomFactor / factor; - pagePanel.MaxZoomFactor = MaxZoomFactor / factor; + factor = Math.Max(factor, _minZoomFactor); + factor = Math.Min(factor, _maxZoomFactor); + pagePanel.MinZoomFactor = _minZoomFactor / factor; + pagePanel.MaxZoomFactor = _maxZoomFactor / factor; } var image = PdfHandle.Pages[CurrentPage].Render(factor); @@ -221,7 +230,8 @@ namespace QuickLook.Plugin.PDFViewer tempHandle.Close(); } - return size; + + return new Size(size.Width * 3, size.Height * 3); } public void LoadPdf(string path) diff --git a/QuickLook.sln.DotSettings b/QuickLook.sln.DotSettings index b66cfe4..385a2aa 100644 --- a/QuickLook.sln.DotSettings +++ b/QuickLook.sln.DotSettings @@ -17,6 +17,7 @@ 0 0 0 + NEVER Copyright © $CURRENT_YEAR$ $USER_NAME$ @@ -39,7 +40,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. False False C:\Users\Paddy\AppData\Local\JetBrains\Transient\ReSharperPlatformVs15\v08_4c97e4a7\SolutionCaches + True + True + True + True True + True True True 04/11/2017 18:22:55