forked from KirkMcDonald/kirkmcdonald.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
icon.js
69 lines (57 loc) · 1.94 KB
/
icon.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*Copyright 2015-2019 Kirk McDonald
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
"use strict"
var PX_WIDTH = 32
var PX_HEIGHT = 32
var sheet_hash
function Sprite(name, col, row) {
this.name = name
this.icon_col = col
this.icon_row = row
}
function getImage(obj, suppressTooltip, tooltipTarget) {
var im = blankImage()
im.classList.add("icon")
var x = -obj.icon_col * PX_WIDTH
var y = -obj.icon_row * PX_HEIGHT
im.style.setProperty("background", "url(images/sprite-sheet-" + sheet_hash + ".png)")
im.style.setProperty("background-position", x + "px " + y + "px")
if (tooltipsEnabled && obj.renderTooltip && !suppressTooltip) {
addTooltip(im, obj, tooltipTarget)
} else {
im.title = obj.name
}
im.alt = obj.name
return im
}
function addTooltip(im, obj, target) {
var node = obj.renderTooltip()
return new Tooltip(im, node, target)
}
function blankImage() {
var im = document.createElement("img")
// Chrome wants the <img> element to have a src attribute, or it will
// draw a border around it. Cram in this transparent 1x1 pixel image.
im.src = "images/pixel.gif"
return im
}
var sprites
function getExtraImage(name) {
return getImage(sprites[name])
}
function getSprites(data) {
sheet_hash = data.sprites.hash
sprites = {}
for (var name in data.sprites.extra) {
var d = data.sprites.extra[name]
sprites[name] = new Sprite(d.name, d.icon_col, d.icon_row)
}
}