namespace SRF.UI
{
using Internal;
using UnityEngine;
using UnityEngine.UI;
///
/// Detects when a screen dpi exceeds what the developer considers
/// a "retina" level display, and scales the canvas accordingly.
///
[RequireComponent(typeof (CanvasScaler))]
[AddComponentMenu(ComponentMenuPaths.RetinaScaler)]
public class SRRetinaScaler : SRMonoBehaviour
{
[SerializeField] private float _retinaScale = 2f;
[SerializeField] private int _thresholdDpi = 250;
[SerializeField] private bool _disablePixelPerfect = false;
///
/// Dpi over which to apply scaling
///
public int ThresholdDpi
{
get { return _thresholdDpi; }
}
public float RetinaScale
{
get { return _retinaScale; }
}
private void Start()
{
var dpi = Screen.dpi;
if (dpi <= 0)
{
return;
}
if (dpi > ThresholdDpi)
{
var scaler = GetComponent();
scaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
scaler.scaleFactor = scaler.scaleFactor * RetinaScale;
if (_disablePixelPerfect)
{
GetComponent