SickGear/gui/slick/js/cast.js

100 lines
2.4 KiB
JavaScript
Raw Permalink Normal View History

function getContainedSize(img){
var width, height, ratio;
try {
ratio = img.naturalWidth / img.naturalHeight;
width = height = img.height;
width *= ratio;
if (width > img.width) {
height = width = img.width;
height /= ratio;
}
} catch (error) {
width = height = 0;
}
return {w:width, h:height}
}
function removeImageBackground(oImage){
var image$ = $(oImage).load(function(){
// swap out placeholder
if (-1 !== $(this).css('background-image').indexOf('poster-person.jpg')){
$(this).css('background', 'transparent');
var sizeImage = getContainedSize(oImage);
if (0 < sizeImage.w){
if (sizeImage.w < oImage.width){
$(this).css('width', 'auto');
} else if (sizeImage.h < oImage.height){
var heightDiff = oImage.height - sizeImage.h,
marginBottom = Math.floor(heightDiff / 2),
roundError = Math.floor(oImage.height - sizeImage.h - (marginBottom * 2)),
marginTop = marginBottom + ((0 < roundError) ? roundError : 0);
/* if img is lower than header name text, align it to top */
if(35 < marginTop){
marginBottom += marginTop;
marginTop = 0;
}
$(this).css('height', 'auto')
.css('marginTop', marginTop)
.css('marginBottom', marginBottom);
}
}
}
});
// trigger the load handler if the image is already loaded
if (image$[0].complete){
image$.trigger('load');
}
}
function scaleImage(oImage) {
var image$ = $(oImage).load(function() {
var sizeImage = getContainedSize(oImage),
containerWidth = $(oImage).parent().width()
if (sizeImage.w > containerWidth) {
// image width is wider than its container so reduce image height to down scale
var ratio = (containerWidth - 4) / sizeImage.w,
height = Math.floor(oImage.height * ratio);
$(this).css('height', height);
}
});
// trigger the load handler if the image is already loaded
if (image$[0].complete){
image$.trigger('load');
}
}
var addQTip = (function(){
$(this).css('cursor', 'help');
$(this).qtip({
show: {solo:true},
position: {viewport:$(window), my:'right center', at: 'left center', adjust:{y: 0, x: 2}},
style: {tip: {corner:true, method:'polygon'}, classes:'qtip-dark qtip-rounded qtip-shadow'}
});
});
$(function() {
objectFitImages();
$('#person .cast-bg, #character .cast-bg').each(function(i, oImage){
removeImageBackground(oImage);
});
$('#display-show .cast-bg').each(function (i, oImage){
scaleImage(oImage);
});
$('.addQTip').each(addQTip);
});