From e7bf5952d0729b37e677168b6e8fbd1ce58ed1a2 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Sun, 10 Aug 2014 17:28:37 +0200 Subject: First version --- point/plugins/autoscale/autoscale.js | 70 ++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 point/plugins/autoscale/autoscale.js (limited to 'point/plugins/autoscale/autoscale.js') diff --git a/point/plugins/autoscale/autoscale.js b/point/plugins/autoscale/autoscale.js new file mode 100644 index 0000000..25ed39b --- /dev/null +++ b/point/plugins/autoscale/autoscale.js @@ -0,0 +1,70 @@ +/* + * This file is part of "What's The Point" + * Copyright (C) 2014 Pacien TRAN-GIRARD + * + * "What's The Point" is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * "What's The Point" 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +define([], function () { + + var autoscale = { + + init: function () { + this.container = document.body; + this.reference = document.getElementsByTagName("p-screen")[0]; + this.target = this.reference; + + this.centerTarget(); + this.bindEvent(); + this.resize(); + }, + + centerTarget: function () { + this.target.style.position = "absolute"; + this.target.style.top = "50%"; + this.target.style.left = "50%"; + this.target.style.marginTop = -this.target.offsetHeight / 2 + "px"; + this.target.style.marginLeft = -this.target.offsetWidth / 2 + "px"; + document.body.style.overflow = "hidden"; + }, + + applyTransformation: function (transformation) { + this.target.style.MozTransform = transformation; + this.target.style.WebkitTransform = transformation; + this.target.style.OTransform = transformation; + this.target.style.msTransform = transformation; + this.target.style.transform = transformation; + }, + + resize: function () { + var widthRatio = this.container.offsetWidth / this.reference.offsetWidth; + var heightRatio = this.container.offsetHeight / this.reference.offsetHeight; + + var scaleRatio = Math.min(widthRatio, heightRatio); + scaleRatio = scaleRatio < 1 ? scaleRatio : 1; + + this.applyTransformation("scale(" + scaleRatio + ")"); + }, + + bindEvent: function () { + window.addEventListener("resize", function () { + autoscale.resize(); + }); + }, + + }; + + return autoscale; + +}); -- cgit v1.2.3