Thumbnail.prototype._loadImages = function()

in lib/@uncharted/thumbnails/src/thumbnails.thumbnail.js [197:268]


Thumbnail.prototype._loadImages = function(imageUrls, imageContainer) {
    var t = this;
    var i;
    var n;
    var promises = [];

    var urls;
    if (imageUrls instanceof Array) {
        urls = imageUrls;
    } else {
        urls = [imageUrls];
    }

    for (i = 0, n = urls.length; i < n; ++i) {
        promises.push(t._loadImage(urls[i]));
    }

    return Promise.all(promises).then(function(loadedImages) {
        var image;
        var containerWidth = imageContainer.width();
        var containerHeight = imageContainer.height();
        var width = containerWidth / urls.length;
        var cssWidth = ((1.0 / urls.length) * 100) + '%';
        var height = containerHeight;

        for (i = 0, n = loadedImages.length; i < n; ++i) {
            image = loadedImages[i];
            var imageHeight = loadedImages[i].height;
            if (image.width > containerWidth) {
                imageHeight *= (containerWidth / image.width);
            }
            height = Math.max(height, imageHeight);
        }

        if (height > containerHeight && height > imageContainer.parent().height() * 0.5) {
            height = imageContainer.parent().height() * 0.5;
        }

        if (height !== containerHeight) {
            imageContainer.css('height', height);
        }

        var subdivided = (urls.length > 1);

        for (i = 0, n = urls.length; i < n; ++i) {
            image = loadedImages[i];
            var div = $('<div></div>');
            var scale = Math.max(width / image.width, height / image.height);
            var scaledWidth = Math.round(image.width * scale);
            var sizeType;

            if ((subdivided && scaledWidth < width) || (!subdivided && scaledWidth > width)) {
                sizeType = 'contain';
            } else if (scale > 1) {
                sizeType = 'auto';
            } else {
                sizeType = 'cover';
            }

            div.css('background-image', 'url("' + urls[i] + '")');
            div.css('background-size', sizeType);
            div.css('width', cssWidth);
            div.css('height', imageContainer.height());

            imageContainer.append(div);
        }

        return Promise.resolve(loadedImages);
    }, function(reason) {
        throw reason;
    });
};