mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 06:56:10 +00:00
Tests
This commit is contained in:
parent
e05bdd3d71
commit
2783525e25
4 changed files with 618 additions and 8 deletions
163
Docs/imageMapResizer.js
Normal file
163
Docs/imageMapResizer.js
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
/*! Image Map Resizer
|
||||
* Desc: Resize HTML imageMap to scaled image.
|
||||
* Copyright: (c) 2014-15 David J. Bradshaw - dave@bradshaw.net
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
;(function() {
|
||||
'use strict'
|
||||
|
||||
function scaleImageMap() {
|
||||
function resizeMap() {
|
||||
function resizeAreaTag(cachedAreaCoords, idx) {
|
||||
function scale(coord) {
|
||||
var dimension = 1 === (isWidth = 1 - isWidth) ? 'width' : 'height'
|
||||
return (
|
||||
padding[dimension] +
|
||||
Math.floor(Number(coord) * scalingFactor[dimension])
|
||||
)
|
||||
}
|
||||
|
||||
var isWidth = 0
|
||||
areas[idx].coords = cachedAreaCoords
|
||||
.split(',')
|
||||
.map(scale)
|
||||
.join(',')
|
||||
}
|
||||
|
||||
var scalingFactor = {
|
||||
width: image.width / image.naturalWidth,
|
||||
height: image.height / image.naturalHeight,
|
||||
}
|
||||
|
||||
var padding = {
|
||||
width: parseInt(
|
||||
window.getComputedStyle(image, null).getPropertyValue('padding-left'),
|
||||
10
|
||||
),
|
||||
height: parseInt(
|
||||
window.getComputedStyle(image, null).getPropertyValue('padding-top'),
|
||||
10
|
||||
),
|
||||
}
|
||||
|
||||
cachedAreaCoordsArray.forEach(resizeAreaTag)
|
||||
}
|
||||
|
||||
function getCoords(e) {
|
||||
//Normalize coord-string to csv format without any space chars
|
||||
return e.coords.replace(/ *, */g, ',').replace(/ +/g, ',')
|
||||
}
|
||||
|
||||
function debounce() {
|
||||
clearTimeout(timer)
|
||||
timer = setTimeout(resizeMap, 250)
|
||||
}
|
||||
|
||||
function start() {
|
||||
if (
|
||||
image.width !== image.naturalWidth ||
|
||||
image.height !== image.naturalHeight
|
||||
) {
|
||||
resizeMap()
|
||||
}
|
||||
}
|
||||
|
||||
function addEventListeners() {
|
||||
image.addEventListener('load', resizeMap, false) //Detect late image loads in IE11
|
||||
window.addEventListener('focus', resizeMap, false) //Cope with window being resized whilst on another tab
|
||||
window.addEventListener('resize', debounce, false)
|
||||
window.addEventListener('readystatechange', resizeMap, false)
|
||||
document.addEventListener('fullscreenchange', resizeMap, false)
|
||||
}
|
||||
|
||||
function beenHere() {
|
||||
return 'function' === typeof map._resize
|
||||
}
|
||||
|
||||
function getImg(name) {
|
||||
return document.querySelector('img[usemap="' + name + '"]')
|
||||
}
|
||||
|
||||
function setup() {
|
||||
areas = map.getElementsByTagName('area')
|
||||
cachedAreaCoordsArray = Array.prototype.map.call(areas, getCoords)
|
||||
image = getImg('#' + map.name) || getImg(map.name)
|
||||
map._resize = resizeMap //Bind resize method to HTML map element
|
||||
}
|
||||
|
||||
var /*jshint validthis:true */
|
||||
map = this,
|
||||
areas = null,
|
||||
cachedAreaCoordsArray = null,
|
||||
image = null,
|
||||
timer = null
|
||||
|
||||
if (!beenHere()) {
|
||||
setup()
|
||||
addEventListeners()
|
||||
start()
|
||||
} else {
|
||||
map._resize() //Already setup, so just resize map
|
||||
}
|
||||
}
|
||||
|
||||
function factory() {
|
||||
function chkMap(element) {
|
||||
if (!element.tagName) {
|
||||
throw new TypeError('Object is not a valid DOM element')
|
||||
} else if ('MAP' !== element.tagName.toUpperCase()) {
|
||||
throw new TypeError(
|
||||
'Expected <MAP> tag, found <' + element.tagName + '>.'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
function init(element) {
|
||||
if (element) {
|
||||
chkMap(element)
|
||||
scaleImageMap.call(element)
|
||||
maps.push(element)
|
||||
}
|
||||
}
|
||||
|
||||
var maps
|
||||
|
||||
return function imageMapResizeF(target) {
|
||||
maps = [] // Only return maps from this call
|
||||
|
||||
switch (typeof target) {
|
||||
case 'undefined':
|
||||
case 'string':
|
||||
Array.prototype.forEach.call(
|
||||
document.querySelectorAll(target || 'map'),
|
||||
init
|
||||
)
|
||||
break
|
||||
case 'object':
|
||||
init(target)
|
||||
break
|
||||
default:
|
||||
throw new TypeError('Unexpected data type (' + typeof target + ').')
|
||||
}
|
||||
|
||||
return maps
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define([], factory)
|
||||
} else if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
module.exports = factory() //Node for browserfy
|
||||
} else {
|
||||
window.imageMapResize = factory()
|
||||
}
|
||||
|
||||
if ('jQuery' in window) {
|
||||
window.jQuery.fn.imageMapResize = function $imageMapResizeF() {
|
||||
return this.filter('map')
|
||||
.each(scaleImageMap)
|
||||
.end()
|
||||
}
|
||||
}
|
||||
})()
|
||||
Loading…
Add table
Add a link
Reference in a new issue