mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
export function getParameterByName(name, url) {
|
|
if(!url) url = window.location.href;
|
|
name = name.replace(/[\[\]]/g, "\\$&");
|
|
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
|
|
results = regex.exec(url);
|
|
if(!results) return null;
|
|
if(!results[2]) return '';
|
|
return decodeURIComponent(results[2].replace(/\+/g, " "));
|
|
}
|
|
|
|
// ctx, entityImages[name].img, xPos, yPos, size.x, size.y, rotation, sprWidth, sprHeight, offLeft, offTop
|
|
export function drawImageWithRotation(ctx, image, x, y, w, h, degrees, sprWidth, sprHeight, offLeft, offTop, flipX, flipY){
|
|
ctx.save();
|
|
ctx.translate(x+w/2, y+h/2);
|
|
ctx.rotate(degrees*Math.PI/180.0);
|
|
ctx.translate(-x-w/2, -y-h/2);
|
|
if(flipX) {
|
|
x -= x*2+sprWidth;
|
|
ctx.scale(-1, 1);
|
|
}
|
|
if(flipY){
|
|
y -= y*2+sprHeight;
|
|
ctx.scale(1, -1);
|
|
}
|
|
|
|
if(isImageOk(image) && sprWidth != undefined && sprHeight != undefined && offLeft != undefined && offTop != undefined){
|
|
// console.log(sprWidth+" "+sprHeight+" "+offLeft+" "+offTop+" "+w+" "+h)
|
|
ctx.drawImage(image, offLeft, offTop, sprWidth, sprHeight, x, y, w, h);
|
|
} else if(isImageOk(image)){
|
|
ctx.drawImage(image, x, y, w, h);
|
|
} else {
|
|
// console.log("Image is not OK! "+image.src);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
export function isImageOk(img) {
|
|
// During the onload event, IE correctly identifies any images that
|
|
// weren't downloaded as not complete. Others should too. Gecko-based
|
|
// browsers act like NS4 in that they report this incorrectly.
|
|
if (!img.complete) {
|
|
return false;
|
|
}
|
|
|
|
// However, they do have two very useful properties: naturalWidth and
|
|
// naturalHeight. These give the true size of the image. If it failed
|
|
// to load, either of these should be zero.
|
|
if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
|
|
return false;
|
|
}
|
|
|
|
// No other way of checking: assume it's ok.
|
|
return true;
|
|
} |