ImageGrid/ui/cache.js
Alex A. Naanou 6fe590f1e0 refactoring the global configuration...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2013-12-15 18:56:21 +04:00

86 lines
2.3 KiB
JavaScript
Executable File

/**********************************************************************
*
*
*
**********************************************************************/
//var DEBUG = DEBUG != null ? DEBUG : true
//
var IMAGE_CACHE = []
/*********************************************************************/
// TODO add global cache...
// - manage cache by number and preview size...
// - keep in biggish...
// NOTE: this will always overwrite the previous cache set for a ribbon...
// NOTE: it appears that sorting images by priority before loading them
// to cache has little or no effect on the order they are
// loaded/rendered...
// NOTE: this is not meant to be a real cache, rather a que for the OS and
// backend/webkit on what's next...
//
// XXX this appears to actually make things slow and laggy...
function preCacheRibbonImages(ribbon){
var deferred = $.Deferred()
setTimeout(function(){
var i = getRibbonIndex(ribbon)
var size = getVisibleImageSize('max')
var screen_size = getScreenWidthInImages(getVisibleImageSize())
// XXX needs tuning...
var cache_frame_size = (screen_size * CONFIG.load_screens)
var images = ribbon.find('.image')
var first = getImageGID(images.first())
var last = getImageGID(images.last())
var gids = getGIDsAfter(-cache_frame_size, first, i)
.concat(getGIDsAfter(cache_frame_size, last, i))
var cache = []
IMAGE_CACHE[i] = cache
$.each(gids, function(i, e){
var img = new Image()
img.src = getBestPreview(e, size).url
cache.push(img)
})
deferred.resolve(cache)
}, 0)
return deferred
}
function preCacheAllRibbons(){
$('.ribbon').each(function(){
preCacheRibbonImages($(this))
})
return IMAGE_CACHE
}
/*********************************************************************/
function setupImageCache(viewer){
console.log('Image cache: setup...')
return viewer
.on('reloadedRibbon updatedRibbon', function(evt, ribbon){
window.DEBUG
&& console.log('>>> (ribbon:', getRibbonIndex(ribbon), ') Updating cache...')
preCacheRibbonImages(ribbon)
})
}
SETUP_BINDINGS.push(setupImageCache)
/**********************************************************************
* vim:set ts=4 sw=4 : */