mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
another jli.js backport + some fixes...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
42ec1ae383
commit
907dbcd8c4
57
ui/files.js
57
ui/files.js
@ -773,41 +773,40 @@ function loadRawDir(path, no_preview_processing, prefix){
|
|||||||
|
|
||||||
reloadViewer()
|
reloadViewer()
|
||||||
|
|
||||||
// read orientation form files...
|
var _run = function(func){
|
||||||
res.notify(prefix, 'Loading', 'Images metadata.')
|
var res = $.Deferred()
|
||||||
var o = $.when(
|
func()
|
||||||
readImagesOrientationQ(),
|
.done(function(){
|
||||||
readImagesDatesQ(),
|
res.resolve()
|
||||||
// XXX this is still experimental...
|
})
|
||||||
// ...not sure if this will not cause race conditions with
|
return res
|
||||||
// the other readers...
|
}
|
||||||
updateImagesGIDsQ()
|
|
||||||
)
|
|
||||||
.done(function(){
|
|
||||||
res.notify(prefix, 'Loaded', 'Images metadata.')
|
|
||||||
})
|
|
||||||
|
|
||||||
// load/generate previews...
|
// load/generate previews...
|
||||||
if(!no_preview_processing){
|
if(!no_preview_processing){
|
||||||
res.notify(prefix, 'Loading/Generating', 'Previews.')
|
var p = _run(makeImagesPreviewsQ)
|
||||||
var p = makeImagesPreviewsQ()
|
|
||||||
.depleted(function(){
|
|
||||||
res.notify(prefix, 'Loaded', 'Previews.')
|
|
||||||
})
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
var p = 0
|
var p = $.Deferred().resolve()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read orientation form files...
|
||||||
|
res.notify(prefix, 'Loading', 'Images metadata.')
|
||||||
|
var o = $.when(
|
||||||
|
p,
|
||||||
|
_run(readImagesOrientationQ),
|
||||||
|
_run(readImagesDatesQ),
|
||||||
|
// XXX this is still experimental...
|
||||||
|
// ...not sure if this will not cause race conditions with
|
||||||
|
// the other readers...
|
||||||
|
_run(updateImagesGIDsQ)
|
||||||
|
)
|
||||||
|
.done(function(){
|
||||||
|
res.notify(prefix, 'Loaded', 'Images metadata.')
|
||||||
|
//updateImagesGIDsQ()
|
||||||
|
})
|
||||||
|
|
||||||
// NOTE: we are not waiting for previews and orientation...
|
// NOTE: we are not waiting for previews and orientation...
|
||||||
return res.resolve()
|
return res.resolve()
|
||||||
|
|
||||||
/* XXX do we need to make everyone wait for previews and orientation???
|
|
||||||
$.when(o, p).done(function(){
|
|
||||||
res.resolve()
|
|
||||||
})
|
|
||||||
return res
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1161,6 +1160,10 @@ function updateImageGID(gid, images, data){
|
|||||||
|
|
||||||
return getEXIFGID(normalizePath(img.path))
|
return getEXIFGID(normalizePath(img.path))
|
||||||
.done(function(gid){
|
.done(function(gid){
|
||||||
|
if(gid == img.id){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
img.id = gid
|
img.id = gid
|
||||||
|
|
||||||
// images...
|
// images...
|
||||||
|
|||||||
146
ui/lib/jli.js
146
ui/lib/jli.js
@ -454,134 +454,9 @@ function animationFrameRunner(func){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
// NOTE: this is exclusive, e.g. all other animations set with this will
|
|
||||||
// be stopped on call...
|
|
||||||
// XXX for some reason this is slower that animateElementTo(..) on iPad...
|
|
||||||
function animateElementTo2(elem, to, duration, easing, speed, use_transitions){
|
|
||||||
use_transitions = use_transitions != null ?
|
|
||||||
use_transitions
|
|
||||||
: USE_TRANSITIONS_FOR_ANIMATION
|
|
||||||
// use transition for animation...
|
|
||||||
if(use_transitions){
|
|
||||||
setTransitionEasing(elem, easing)
|
|
||||||
duration == null && setTransitionDuration(elem, duration)
|
|
||||||
setElementTransform(elem, to)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
to = typeof(to) == typeof(1) ? {
|
|
||||||
left: to,
|
|
||||||
top: 0,
|
|
||||||
} : to
|
|
||||||
speed = typeof(speed) == typeof(2) ? {
|
|
||||||
x: speed,
|
|
||||||
y: 0,
|
|
||||||
} : speed
|
|
||||||
duration = duration == null ? getElementTransitionDuration(elem) : duration
|
|
||||||
|
|
||||||
// stop other animations...
|
|
||||||
var runner = elem.data('animating')
|
|
||||||
if(runner != null){
|
|
||||||
runner.stop()
|
|
||||||
}
|
|
||||||
|
|
||||||
// setup context...
|
|
||||||
var start = Date.now()
|
|
||||||
var then = start + duration
|
|
||||||
var from = getElementShift(elem)
|
|
||||||
|
|
||||||
// do var caching...
|
|
||||||
var to_top = to.top
|
|
||||||
var to_left = to.left
|
|
||||||
var from_top = from.top
|
|
||||||
var from_left = from.left
|
|
||||||
var cur_top = from_top
|
|
||||||
var cur_left = from_left
|
|
||||||
var dist_top = to_top - from_top
|
|
||||||
var dist_left = to_left - from_left
|
|
||||||
if(speed != null){
|
|
||||||
var speed_x = speed.x
|
|
||||||
var speed_y = speed.y
|
|
||||||
}
|
|
||||||
|
|
||||||
elem.animating = true
|
|
||||||
|
|
||||||
var runner = animationFrameRunner(function(t){
|
|
||||||
// end of the animation...
|
|
||||||
if(t >= then){
|
|
||||||
setElementTransform(elem, to)
|
|
||||||
runner.stop()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// animation stopped...
|
|
||||||
if(!elem.animating){
|
|
||||||
setElementTransform(elem, cur)
|
|
||||||
runner.stop()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// calculate target position for current step...
|
|
||||||
if(speed != null){
|
|
||||||
// NOTE: these are inlined here for speed...
|
|
||||||
if(Math.abs(dist_top) >= 1){
|
|
||||||
dy = ((t - start) * speed_y)
|
|
||||||
if(Math.abs(dist_top) > Math.abs(dy)){
|
|
||||||
dist_top -= dy
|
|
||||||
cur_top = Math.round(cur_top + dy)
|
|
||||||
// normalize...
|
|
||||||
cur_top = Math.abs(dist_top) <= 1 ? to_top : cur_top
|
|
||||||
// calc speed for next step...
|
|
||||||
speed_y = dist_top / (duration - (t - start))
|
|
||||||
} else {
|
|
||||||
cur_top = to_top
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(Math.abs(dist_left) >= 1){
|
|
||||||
dx = ((t - start) * speed_x)
|
|
||||||
if(Math.abs(dist_left) > Math.abs(dx)){
|
|
||||||
dist_left -= dx
|
|
||||||
cur_left = Math.round(cur_left + dx)
|
|
||||||
// normalize...
|
|
||||||
cur_left = Math.abs(dist_left) <= 1 ? to_left : cur_left
|
|
||||||
// calc speed for next step...
|
|
||||||
speed_x = dist_left / (duration - (t - start))
|
|
||||||
} else {
|
|
||||||
cur_left = to_left
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// liner speed...
|
|
||||||
} else {
|
|
||||||
var r = (t - start) / duration
|
|
||||||
cur_top = Math.round(from_top + (dist_top * r))
|
|
||||||
cur_left = Math.round(from_left + (dist_left * r))
|
|
||||||
}
|
|
||||||
|
|
||||||
// do the actual move...
|
|
||||||
setElementTransform(elem, {
|
|
||||||
top: cur_top,
|
|
||||||
left: cur_left
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
elem.data('animating', runner)
|
|
||||||
return runner.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function stopAnimation2(elem){
|
|
||||||
var runner = elem.data('animating')
|
|
||||||
if(runner != null){
|
|
||||||
runner.stop()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// XXX make this a drop-in replacement for setElementTransform...
|
// XXX make this a drop-in replacement for setElementTransform...
|
||||||
// XXX cleanup, still flacky...
|
// XXX cleanup, still flacky...
|
||||||
function animateElementTo(elem, to, duration, easing, speed, use_transitions){
|
function animateElementTo(elem, to, duration, easing, speed, callback, use_transitions){
|
||||||
// stop all ongoing animations on the current elem...
|
// stop all ongoing animations on the current elem...
|
||||||
stopAnimation(elem)
|
stopAnimation(elem)
|
||||||
use_transitions = use_transitions != null ?
|
use_transitions = use_transitions != null ?
|
||||||
@ -629,6 +504,11 @@ function animateElementTo(elem, to, duration, easing, speed, use_transitions){
|
|||||||
elem.animating = true
|
elem.animating = true
|
||||||
elem.next_frame = null
|
elem.next_frame = null
|
||||||
|
|
||||||
|
// remember step start position...
|
||||||
|
var s_t = cur.top
|
||||||
|
var s_l = cur.left
|
||||||
|
|
||||||
|
|
||||||
function animate(){
|
function animate(){
|
||||||
// prevent running animations till next call of animateElementTo(..)
|
// prevent running animations till next call of animateElementTo(..)
|
||||||
if(elem.next_frame === false){
|
if(elem.next_frame === false){
|
||||||
@ -646,6 +526,10 @@ function animateElementTo(elem, to, duration, easing, speed, use_transitions){
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remember step start position...
|
||||||
|
s_t = cur.top
|
||||||
|
s_l = cur.left
|
||||||
|
|
||||||
// animate a step with speed...
|
// animate a step with speed...
|
||||||
if(speed != null){
|
if(speed != null){
|
||||||
// NOTE: these are almost identical, they are inlined
|
// NOTE: these are almost identical, they are inlined
|
||||||
@ -684,6 +568,12 @@ function animateElementTo(elem, to, duration, easing, speed, use_transitions){
|
|||||||
cur.left = Math.round(from.left + (dist.left * r))
|
cur.left = Math.round(from.left + (dist.left * r))
|
||||||
}
|
}
|
||||||
setElementTransform(elem, cur)
|
setElementTransform(elem, cur)
|
||||||
|
|
||||||
|
callback != null && callback({
|
||||||
|
x: cur.left - s_l,
|
||||||
|
y: cur.top - s_t,
|
||||||
|
})
|
||||||
|
|
||||||
// sched next frame...
|
// sched next frame...
|
||||||
elem.next_frame = getAnimationFrame(animate)
|
elem.next_frame = getAnimationFrame(animate)
|
||||||
}
|
}
|
||||||
@ -701,10 +591,6 @@ function stopAnimation(elem){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX for some odd reason the 2'nd gen. animation is jittery...
|
|
||||||
//animateElementTo = animateElementTo2
|
|
||||||
//stopAnimation = stopAnimation2
|
|
||||||
|
|
||||||
|
|
||||||
// XXX account for other transitions...
|
// XXX account for other transitions...
|
||||||
function setElementScale(elem, scale){
|
function setElementScale(elem, scale){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user