Skip to content

Commit 3bc3fbb

Browse files
committed
0.0.2
1 parent 7571e83 commit 3bc3fbb

File tree

4 files changed

+789
-1
lines changed

4 files changed

+789
-1
lines changed

dist/jquery.normalmap.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/* globals jQuery, normalmap */
2+
(function() {
3+
4+
var $ = jQuery;
5+
6+
$.fn.normalmap = function(options){
7+
if(this.length === 0) return;
8+
if(this[0].tagName !== 'CANVAS') {
9+
throw new Error('$.fn.normalmap only works on a single <canvas> element');
10+
}
11+
return loadImages(this[0], options);
12+
};
13+
14+
function loadImages(canvas, options){
15+
var maps = ['normalMap', 'baseColorMap', 'materialMap', 'ambientMap'];
16+
return $.when.apply($, $.map(maps, function(o){ return loadImage(options[o]); }))
17+
.then(function(){
18+
for(var i = 0; i < arguments.length; i++){
19+
options[maps[i]] = arguments[i];
20+
}
21+
if(!options.repeat) {
22+
canvas.width = options.normalMap.naturalWidth;
23+
canvas.height = options.normalMap.naturalHeight;
24+
}
25+
options.canvas = canvas;
26+
var lights = normalmap(options);
27+
$(window).on('resize', lights.resize);
28+
return lights;
29+
});
30+
}
31+
32+
function loadImage(src){
33+
var deferred = $.Deferred();
34+
function trackImage(img){
35+
img.onload = function(){ deferred.resolve(img); };
36+
img.onerror = function(){ deferred.reject(new Error('image failed to load')); };
37+
}
38+
if(src){
39+
if(jQuery.type(src) === 'string'){
40+
var img = new Image();
41+
trackImage(img);
42+
img.crossorigin = 'anonymous';
43+
img.src = src;
44+
}
45+
// assume image
46+
else {
47+
if(src.tagName === 'IMG' && src.complete === false) {
48+
trackImage(src);
49+
}
50+
else {
51+
deferred.resolve(src);
52+
}
53+
}
54+
}
55+
else {
56+
deferred.resolve();
57+
}
58+
return deferred.promise();
59+
}
60+
$.fn.normalmap._loadImage = loadImage;
61+
62+
}());

0 commit comments

Comments
 (0)