CrazySquirrel/Utils

View on GitHub
lib/UtilsScreen.ts

Summary

Maintainability
A
0 mins
Test Coverage
"use strict";
/**
 * Declare window interface
 */
declare const window: any;
/**
 * Class for working with screen
 */
export default class Screen {

  /**
   * Get screen info
   * @return {{availableSize: {height: number, width: number}, colorDepth: number, pixelRatio: number, size: {height: number, width: number}}}
   */
  public static getInfo(): {
    availableSize: {
      height: number,
      width: number,
    },
    colorDepth: number,
    pixelRatio: number,
    size: {
      height: number,
      width: number,
    },
  } {
    return {
      availableSize: Screen.getAvailableSizes(),
      colorDepth: Screen.getColorDepth(),
      pixelRatio: Screen.getPixelRatio(),
      size: Screen.getSizes(),
    };
  }

  /**
   * Get screen height
   * @returns {number}
   */
  public static getHeight(): number {
    return window.screen.height;
  }

  /**
   * Get screen width
   * @returns {number}
   */
  public static getWidth(): number {
    return window.screen.width;
  }

  /**
   * Get screen sizes
   * @return {{height: number, width: number}}
   */
  public static getSizes(): {
    height: number,
    width: number,
  } {
    return ({
      height: Screen.getHeight(),
      width: Screen.getWidth(),
    });
  }

  /**
   * Get screen height
   * @returns {number}
   */
  public static getAvailableHeight(): number {
    return window.screen.availHeight;
  }

  /**
   * Get screen width
   * @returns {number}
   */
  public static getAvailableWidth(): number {
    return window.screen.availWidth;
  }

  /**
   * Get screen sizes
   * @return {{height: number, width: number}}
   */
  public static getAvailableSizes(): {
    height: number,
    width: number,
  } {
    return ({
      height: Screen.getAvailableHeight(),
      width: Screen.getAvailableWidth(),
    });
  }

  /**
   * Get screen pixel ratio
   * @return {number}
   */
  public static getPixelRatio(): number {
    let ratio = 1;

    if (
        typeof window.screen.systemXDPI !== "undefined" &&
        typeof window.screen.logicalXDPI !== "undefined" &&
        window.screen.systemXDPI > window.screen.logicalXDPI
    ) {
      ratio = window.screen.systemXDPI / window.screen.logicalXDPI;
    } else if (typeof window.devicePixelRatio !== "undefined") {
      ratio = window.devicePixelRatio;
    }

    return ratio;
  }

  /**
   * Get screen color depth
   * @return {number}
   */
  public static getColorDepth(): number {
    return window.screen.colorDepth;
  }
}