249 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Drawing;
 | 
						|
using System.Text;
 | 
						|
 | 
						|
namespace DevComponents.Tree
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Provides High DPI support for DotNetBar controls.
 | 
						|
    /// </summary>
 | 
						|
    public static class Dpi
 | 
						|
    {
 | 
						|
        private static SizeF _Factor = new SizeF(1f, 1f);
 | 
						|
        private static bool _UseFactor = false;
 | 
						|
        private static bool _NormalizeScaleFactor = false;
 | 
						|
 | 
						|
        static Dpi()
 | 
						|
        {
 | 
						|
            //Debug.WriteLine("Static constructor");
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether scale factor when set is normalized so both Width and Height values are the same. Default value is false.
 | 
						|
        /// If using ScaleMode=font the scale factor might not be same for Width and Height so this allows opportunity to keep existing size ratios on the DotNetBar sized controls.
 | 
						|
        /// When set to true the scale factor Height will always be set to scale factor Width.
 | 
						|
        /// </summary>
 | 
						|
        public static bool NormalizeScaleFactor
 | 
						|
        {
 | 
						|
            get { return _NormalizeScaleFactor; }
 | 
						|
            set { _NormalizeScaleFactor = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        public static SizeF Factor
 | 
						|
        {
 | 
						|
            get { return _Factor; }
 | 
						|
        }
 | 
						|
        public static Size Size(Size size)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return size;
 | 
						|
            size.Width = (int)(size.Width * _Factor.Width);
 | 
						|
            size.Height = (int)(size.Height * _Factor.Height);
 | 
						|
            return size;
 | 
						|
        }
 | 
						|
        public static Rectangle Size(Rectangle r)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return r;
 | 
						|
            r.Width = (int)(r.Width * _Factor.Width);
 | 
						|
            r.Height = (int)(r.Height * _Factor.Height);
 | 
						|
            return r;
 | 
						|
        }
 | 
						|
 | 
						|
        public static Point Size(Point p)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return p;
 | 
						|
            p.X = (int)(p.X * _Factor.Width);
 | 
						|
            p.Y = (int)(p.Y * _Factor.Height);
 | 
						|
            return p;
 | 
						|
        }
 | 
						|
 | 
						|
        //public static DevComponents.DotNetBar.Padding Size(DevComponents.DotNetBar.Padding padding)
 | 
						|
        //{
 | 
						|
        //    if (!_UseFactor) return padding;
 | 
						|
        //    return new Padding((int)(padding.Left * _Factor.Width), (int)(padding.Right * _Factor.Width), (int)(padding.Top * _Factor.Height), (int)(padding.Bottom * _Factor.Height));
 | 
						|
        //}
 | 
						|
 | 
						|
        public static int DescaleWidth(int width)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return width;
 | 
						|
            return (int)(width / _Factor.Width);
 | 
						|
        }
 | 
						|
        public static int DescaleHeight(int height)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return height;
 | 
						|
            return (int)(height / _Factor.Height);
 | 
						|
        }
 | 
						|
 | 
						|
        internal static System.Drawing.Size Descale(System.Drawing.Size size)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return size;
 | 
						|
            size.Width = (int)(size.Width / _Factor.Width);
 | 
						|
            size.Height = (int)(size.Height / _Factor.Height);
 | 
						|
            return size;
 | 
						|
        }
 | 
						|
 | 
						|
        public static int Width(int width)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return width;
 | 
						|
            return (int)(width * _Factor.Width);
 | 
						|
        }
 | 
						|
 | 
						|
        public static int Height(int height)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return height;
 | 
						|
            return (int)(height * _Factor.Height);
 | 
						|
        }
 | 
						|
 | 
						|
        public static float Height(float height)
 | 
						|
        {
 | 
						|
            if (!_UseFactor) return height;
 | 
						|
            return (height * _Factor.Height);
 | 
						|
        }
 | 
						|
 | 
						|
        private static int _CaptionVerticalPadding = 10;
 | 
						|
        public static int CaptionVerticalPadding
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (!_UseFactor) return 0;
 | 
						|
                return _CaptionVerticalPadding;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public static void SetScaling(SizeF factor)
 | 
						|
        {
 | 
						|
            if (factor == _Factor) return;
 | 
						|
 | 
						|
            if (_NormalizeScaleFactor)
 | 
						|
                factor.Height = factor.Width;
 | 
						|
 | 
						|
            if (factor.Width == 1f && factor.Height == 1f)
 | 
						|
            {
 | 
						|
                _UseFactor = false;
 | 
						|
                _Factor = factor;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                _UseFactor = true;
 | 
						|
                _Factor = factor;
 | 
						|
            }
 | 
						|
 | 
						|
            UpdateStaticSizes();
 | 
						|
        }
 | 
						|
 | 
						|
        private static void UpdateStaticSizes()
 | 
						|
        {
 | 
						|
            Width1 = Dpi.Width(1);
 | 
						|
            Width2 = Dpi.Width(2);
 | 
						|
            Width3 = Dpi.Width(3);
 | 
						|
            Width4 = Dpi.Width(4);
 | 
						|
            Width5 = Dpi.Width(5);
 | 
						|
            Width6 = Dpi.Width(6);
 | 
						|
            Width7 = Dpi.Width(7);
 | 
						|
            Width8 = Dpi.Width(8);
 | 
						|
            Width9 = Dpi.Width(9);
 | 
						|
            Width10 = Dpi.Width(10);
 | 
						|
            Width11 = Dpi.Width(11);
 | 
						|
            Width12 = Dpi.Width(12);
 | 
						|
            Width13 = Dpi.Width(13);
 | 
						|
            Width14 = Dpi.Width(14);
 | 
						|
            Width15 = Dpi.Width(15);
 | 
						|
            Width16 = Dpi.Width(16);
 | 
						|
            Width17 = Dpi.Width(17);
 | 
						|
            Width18 = Dpi.Width(18);
 | 
						|
            Width20 = Dpi.Width(20);
 | 
						|
            Width22 = Dpi.Width(22);
 | 
						|
            Width24 = Dpi.Width(24);
 | 
						|
            Width25 = Dpi.Width(25);
 | 
						|
            Width26 = Dpi.Width(26);
 | 
						|
            Width28 = Dpi.Width(28);
 | 
						|
            Width32 = Dpi.Width(32);
 | 
						|
            Width34 = Dpi.Width(34);
 | 
						|
 | 
						|
            Height1 = Dpi.Height(1);
 | 
						|
            Height2 = Dpi.Height(2);
 | 
						|
            Height3 = Dpi.Height(3);
 | 
						|
            Height4 = Dpi.Height(4);
 | 
						|
            Height5 = Dpi.Height(5);
 | 
						|
            Height6 = Dpi.Height(6);
 | 
						|
            Height7 = Dpi.Height(7);
 | 
						|
            Height8 = Dpi.Height(8);
 | 
						|
            Height9 = Dpi.Height(9);
 | 
						|
            Height10 = Dpi.Height(10);
 | 
						|
            Height11 = Dpi.Height(11);
 | 
						|
            Height12 = Dpi.Height(12);
 | 
						|
            Height13 = Dpi.Height(13);
 | 
						|
            Height14 = Dpi.Height(14);
 | 
						|
            Height15 = Dpi.Height(15);
 | 
						|
            Height16 = Dpi.Height(16);
 | 
						|
            Height17 = Dpi.Height(17);
 | 
						|
            Height18 = Dpi.Height(18);
 | 
						|
            Height20 = Dpi.Height(20);
 | 
						|
            Height22 = Dpi.Height(22);
 | 
						|
            Height23 = Dpi.Height(23);
 | 
						|
            Height24 = Dpi.Height(24);
 | 
						|
            Height25 = Dpi.Height(25);
 | 
						|
            Height28 = Dpi.Height(28);
 | 
						|
            Height32 = Dpi.Height(32);
 | 
						|
        }
 | 
						|
 | 
						|
        #region Static Sizes
 | 
						|
 | 
						|
        public static int Width1 = 1;
 | 
						|
        public static int Width2 = 2;
 | 
						|
        public static int Width3 = 3;
 | 
						|
        public static int Width5 = 5;
 | 
						|
        public static int Width4 = 4;
 | 
						|
        public static int Width6 = 6;
 | 
						|
        public static int Width7 = 7;
 | 
						|
        public static int Width8 = 8;
 | 
						|
        public static int Width9 = 9;
 | 
						|
        public static int Width10 = 10;
 | 
						|
        public static int Width11 = 11;
 | 
						|
        public static int Width12 = 12;
 | 
						|
        public static int Width13 = 13;
 | 
						|
        public static int Width14 = 14;
 | 
						|
        public static int Width15 = 15;
 | 
						|
        public static int Width16 = 16;
 | 
						|
        public static int Width17 = 17;
 | 
						|
        public static int Width18 = 18;
 | 
						|
        public static int Width20 = 20;
 | 
						|
        public static int Width22 = 22;
 | 
						|
        public static int Width24 = 24;
 | 
						|
        public static int Width25 = 25;
 | 
						|
        public static int Width26 = 26;
 | 
						|
        public static int Width28 = 28;
 | 
						|
        public static int Width32 = 32;
 | 
						|
        public static int Width34 = 34;
 | 
						|
 | 
						|
        public static int Height1 = 1;
 | 
						|
        public static int Height2 = 2;
 | 
						|
        public static int Height3 = 3;
 | 
						|
        public static int Height4 = 4;
 | 
						|
        public static int Height5 = 5;
 | 
						|
        public static int Height6 = 6;
 | 
						|
        public static int Height7 = 7;
 | 
						|
        public static int Height8 = 8;
 | 
						|
        public static int Height9 = 9;
 | 
						|
        public static int Height10 = 10;
 | 
						|
        public static int Height11 = 11;
 | 
						|
        public static int Height12 = 12;
 | 
						|
        public static int Height13 = 13;
 | 
						|
        public static int Height14 = 14;
 | 
						|
        public static int Height15 = 15;
 | 
						|
        public static int Height16 = 16;
 | 
						|
        public static int Height17 = 17;
 | 
						|
        public static int Height18 = 18;
 | 
						|
        public static int Height20 = 20;
 | 
						|
        public static int Height22 = 22;
 | 
						|
        public static int Height23 = 23;
 | 
						|
        public static int Height24 = 24;
 | 
						|
        public static int Height25 = 25;
 | 
						|
        public static int Height28 = 28;
 | 
						|
        public static int Height32 = 32;
 | 
						|
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |