// Copyright © 2017 Paddy Xu // // This file is part of QuickLook program. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . using System; using System.Drawing; using System.Runtime.InteropServices; namespace QuickLook.Plugin.PDFViewer { internal static class DpiHelper { public enum DeviceCap { /// /// Logical pixels inch in X /// LOGPIXELSX = 88, /// /// Logical pixels inch in Y /// LOGPIXELSY = 90 } public const float DEFAULT_DPI = 96; public static Dpi GetCurrentDpi() { var g = Graphics.FromHwnd(IntPtr.Zero); var desktop = g.GetHdc(); var dpi = new Dpi { HorizontalDpi = GetDeviceCaps(desktop, (int) DeviceCap.LOGPIXELSX), VerticalDpi = GetDeviceCaps(desktop, (int) DeviceCap.LOGPIXELSY) }; return dpi; } [DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)] public static extern int GetDeviceCaps(IntPtr hDC, int nIndex); } internal class Dpi { public float HorizontalDpi { get; set; } public float VerticalDpi { get; set; } } }