"use strict";

// From https://stackoverflow.com/a/15666143/1460422

let pixel_ratio = (function () {
    let ctx = document.createElement("canvas").getContext("2d"),
        dpr = window.devicePixelRatio || 1,
        bsr = ctx.webkitBackingStorePixelRatio ||
              ctx.mozBackingStorePixelRatio ||
              ctx.msBackingStorePixelRatio ||
              ctx.oBackingStorePixelRatio ||
              ctx.backingStorePixelRatio || 1;

    return dpr / bsr;
})();

/**
 * De-blurrificates a canvas on Hi-DPI screens.
 * @param	{HTMLCanvasElement}	canvas					The canvas element to alter.
 * @param	{Number}			width=canvas.width		Optional. The width of the canvas in question.
 * @param	{Number}			height=canvas.height	Optional. The height of the canvas in question.
 * @returns	{HTMLCanvasElement}	The canvas we operated on. Useful for daisy-chaining.
 */
function set_hidpi_canvas(canvas, width, height) {
	width = width || canvas.width;
	height = height || canvas.height;
	
    canvas.width = width * pixel_ratio;
    canvas.height = height * pixel_ratio;
    canvas.style.width = width + "px";
    canvas.style.height = height + "px";
    // canvas.getContext("2d").setTransform(pixel_ratio, 0, 0, pixel_ratio, 0, 0);
    return canvas;
}


export { pixel_ratio, set_hidpi_canvas };