mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-30 19:00:09 +00:00
doc revision...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
c1e725543f
commit
b678d3a30b
128
ui/data.js
128
ui/data.js
@ -551,10 +551,20 @@ function setBaseRibbonIndex(n){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// like getRibbonIndex but get the index only via DATA...
|
// Like getRibbonIndex but works only via DATA...
|
||||||
//
|
//
|
||||||
|
// gid can be:
|
||||||
|
// - null - get current image
|
||||||
|
// - gid
|
||||||
|
// - image
|
||||||
|
//
|
||||||
|
// NOTE: this will return -1 if gid is not found, this can be due to a
|
||||||
|
// crop being loaded with just part of the available gids or simply
|
||||||
|
// because of an invalid argument.
|
||||||
function getGIDRibbonIndex(gid, data){
|
function getGIDRibbonIndex(gid, data){
|
||||||
gid = gid == null ? getImageGID() : gid
|
gid = gid == null ? getImageGID()
|
||||||
|
: typeof(gid) != typeof('str') ? getImageGID(gid)
|
||||||
|
: gid
|
||||||
data = data == null ? DATA : data
|
data = data == null ? DATA : data
|
||||||
|
|
||||||
var ribbons = data.ribbons
|
var ribbons = data.ribbons
|
||||||
@ -568,8 +578,13 @@ function getGIDRibbonIndex(gid, data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// get a list of gids in ribbon...
|
// Get a list of gids in ribbon...
|
||||||
//
|
//
|
||||||
|
// The ribbon can be given as:
|
||||||
|
// - null - get current ribbon
|
||||||
|
// - number - ribbon index
|
||||||
|
// - gid
|
||||||
|
// - image
|
||||||
function getRibbonGIDs(a, data){
|
function getRibbonGIDs(a, data){
|
||||||
data = data == null ? DATA : data
|
data = data == null ? DATA : data
|
||||||
if(typeof(a) == typeof(123)){
|
if(typeof(a) == typeof(123)){
|
||||||
@ -579,7 +594,7 @@ function getRibbonGIDs(a, data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// get all the currently loaded gids...
|
// Get all the currently loaded gids...
|
||||||
//
|
//
|
||||||
function getLoadedGIDs(data){
|
function getLoadedGIDs(data){
|
||||||
data = data == null ? DATA : data
|
data = data == null ? DATA : data
|
||||||
@ -591,7 +606,7 @@ function getLoadedGIDs(data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// like getImageOrder(..) but use DATA...
|
// Like getImageOrder(..) but use DATA...
|
||||||
//
|
//
|
||||||
function getGIDOrder(gid){
|
function getGIDOrder(gid){
|
||||||
gid = gid == null ? getImageGID() : gid
|
gid = gid == null ? getImageGID() : gid
|
||||||
@ -639,18 +654,21 @@ function insertGIDToPosition(gid, list, data){
|
|||||||
function getGIDBefore(gid, ribbon, data, search){
|
function getGIDBefore(gid, ribbon, data, search){
|
||||||
gid = gid == null ? getImageGID() : gid
|
gid = gid == null ? getImageGID() : gid
|
||||||
data = data == null ? DATA : data
|
data = data == null ? DATA : data
|
||||||
|
var order = data.order
|
||||||
|
var target = order.indexOf(gid)
|
||||||
|
|
||||||
// XXX get a ribbon without getting into DOM...
|
// XXX get a ribbon without getting into DOM...
|
||||||
// ...dependency leek...
|
// ...dependency leek...
|
||||||
|
// NOTE: these assignments are intentionally separated and cascaded
|
||||||
|
// as they depend on each other's results...
|
||||||
ribbon = ribbon == null ? getGIDRibbonIndex(gid, data) : ribbon
|
ribbon = ribbon == null ? getGIDRibbonIndex(gid, data) : ribbon
|
||||||
ribbon = typeof(ribbon) == typeof(123) ? data.ribbons[ribbon] : ribbon
|
ribbon = typeof(ribbon) == typeof(123) ? data.ribbons[ribbon] : ribbon
|
||||||
// get the current ribbon if gid is not in any of the loaded
|
// get the current ribbon if gid is not in any of the loaded
|
||||||
// ribbons (crop mode)...
|
// ribbons (crop mode)...
|
||||||
ribbon = ribbon == null ? data.ribbons[getGIDRibbonIndex(null, data)] : ribbon
|
ribbon = ribbon == null ? data.ribbons[getGIDRibbonIndex(null, data)] : ribbon
|
||||||
|
|
||||||
//search = search == null ? match2(linSearch, binSearch) : search
|
//search = search == null ? match2(linSearch, binSearch) : search
|
||||||
search = search == null ? binSearch : search
|
search = search == null ? binSearch : search
|
||||||
var order = data.order
|
|
||||||
|
|
||||||
var target = order.indexOf(gid)
|
|
||||||
|
|
||||||
return search(target, ribbon, function(a, i, lst){
|
return search(target, ribbon, function(a, i, lst){
|
||||||
var b = order.indexOf(lst[i])
|
var b = order.indexOf(lst[i])
|
||||||
@ -687,7 +705,7 @@ function getGIDBefore(gid, ribbon, data, search){
|
|||||||
// NOTE: this needs the list sorted in the same order as the ribbons
|
// NOTE: this needs the list sorted in the same order as the ribbons
|
||||||
// i.e. via DATA.order...
|
// i.e. via DATA.order...
|
||||||
// NOTE: passing a ribbon number or setting restrict_to_ribbon to true
|
// NOTE: passing a ribbon number or setting restrict_to_ribbon to true
|
||||||
// will restrict the search to a specific ribbon only...
|
// will restrict the search to a specific ribbon only by default...
|
||||||
function makeGIDBeforeGetterFromList(get_list, restrict_to_ribbon){
|
function makeGIDBeforeGetterFromList(get_list, restrict_to_ribbon){
|
||||||
return function(gid, ribbon){
|
return function(gid, ribbon){
|
||||||
ribbon = ribbon == null && restrict_to_ribbon == true
|
ribbon = ribbon == null && restrict_to_ribbon == true
|
||||||
@ -743,12 +761,16 @@ function getGIDsAfter(count, gid, ribbon, inclusive, data){
|
|||||||
// default values...
|
// default values...
|
||||||
gid = gid == null ? getImageGID() : gid
|
gid = gid == null ? getImageGID() : gid
|
||||||
data = data == null ? DATA : data
|
data = data == null ? DATA : data
|
||||||
ribbon = ribbon == null ? getRibbonIndex() : ribbon
|
//ribbon = ribbon == null ? getRibbonIndex() : ribbon
|
||||||
count = count == null ? Math.round(CONFIG.load_screens * getScreenWidthInImages()) : count
|
|
||||||
ribbon = ribbon == null ? getGIDRibbonIndex(gid, data) : ribbon
|
ribbon = ribbon == null ? getGIDRibbonIndex(gid, data) : ribbon
|
||||||
|
count = count == null
|
||||||
|
? Math.round(CONFIG.load_screens * getScreenWidthInImages())
|
||||||
|
: count
|
||||||
|
|
||||||
// get a local gid...
|
// get a local gid...
|
||||||
gid = data.ribbons[ribbon].indexOf(gid) < 0 ? getGIDBefore(gid, ribbon) : gid
|
gid = data.ribbons[ribbon].indexOf(gid) < 0
|
||||||
|
? getGIDBefore(gid, ribbon)
|
||||||
|
: gid
|
||||||
ribbon = data.ribbons[ribbon]
|
ribbon = data.ribbons[ribbon]
|
||||||
|
|
||||||
// ribbon this is empty or non-existant...
|
// ribbon this is empty or non-existant...
|
||||||
@ -813,13 +835,18 @@ function getGIDsAround(count, gid, ribbon, data, force_count){
|
|||||||
// default values...
|
// default values...
|
||||||
data = data == null ? DATA : data
|
data = data == null ? DATA : data
|
||||||
gid = gid == null ? getImageGID() : gid
|
gid = gid == null ? getImageGID() : gid
|
||||||
ribbon = ribbon == null ? getRibbonIndex() : ribbon
|
//ribbon = ribbon == null ? getRibbonIndex() : ribbon
|
||||||
|
ribbon = ribbon == null ? getGIDRibbonIndex(gid, data) : ribbon
|
||||||
// XXX is this out of context here???
|
// XXX is this out of context here???
|
||||||
count = count == null ? Math.round(CONFIG.load_screens * getScreenWidthInImages()) : count
|
count = count == null
|
||||||
|
? Math.round(CONFIG.load_screens * getScreenWidthInImages())
|
||||||
|
: count
|
||||||
|
|
||||||
var ribbon_data = data.ribbons[ribbon]
|
var ribbon_data = data.ribbons[ribbon]
|
||||||
// get a gid that's in the current ribbon...
|
// get a gid that's in the current ribbon...
|
||||||
gid = ribbon_data.indexOf(gid) < 0 ? getGIDBefore(gid, ribbon, data) : gid
|
gid = ribbon_data.indexOf(gid) < 0
|
||||||
|
? getGIDBefore(gid, ribbon, data)
|
||||||
|
: gid
|
||||||
|
|
||||||
// calculate the bounds...
|
// calculate the bounds...
|
||||||
var i = ribbon_data.indexOf(gid)
|
var i = ribbon_data.indexOf(gid)
|
||||||
@ -827,8 +854,7 @@ function getGIDsAround(count, gid, ribbon, data, force_count){
|
|||||||
var start = i - Math.floor(count/2)
|
var start = i - Math.floor(count/2)
|
||||||
start = start < 0 ? 0 : start
|
start = start < 0 ? 0 : start
|
||||||
|
|
||||||
var end = i + Math.ceil(count/2)
|
var end = Math.min(i + Math.ceil(count/2), ribbon_data.length)
|
||||||
end = end > ribbon_data.length ? ribbon_data.length : end
|
|
||||||
|
|
||||||
// force count by extending the ribbon at the opposite end...
|
// force count by extending the ribbon at the opposite end...
|
||||||
if(force_count && ribbon_data.length > count){
|
if(force_count && ribbon_data.length > count){
|
||||||
@ -846,8 +872,44 @@ function getGIDsAround(count, gid, ribbon, data, force_count){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// NOTE: this expects that both arrays cleanly intersect each other only
|
// Get offsets of from array ends to the common section...
|
||||||
// once...
|
//
|
||||||
|
// The offsets are calculated relative to the first array, i.e. they
|
||||||
|
// represent how the second array (L2) must be expanded (positive
|
||||||
|
// offset) or contracted (negative offset) from each side, to produce
|
||||||
|
// the first (L1).
|
||||||
|
//
|
||||||
|
// Note that the directions are not left/right, but rather inward
|
||||||
|
// (contraction, negative) and outward (expansion, positive), Notice the
|
||||||
|
// offset arrow directions in the illustrations below...
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Examples:
|
||||||
|
//
|
||||||
|
// L1: oooooooooooooooooooo
|
||||||
|
// L2: ooooooooooooooooooooooooo
|
||||||
|
// <------- <------------
|
||||||
|
// Offset: left right
|
||||||
|
// (+) (-)
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// L1: oooooooooooo
|
||||||
|
// L2: ooooooooooooooooooooooooooooooooo
|
||||||
|
// -------> <------------
|
||||||
|
// Offset: left right
|
||||||
|
// (-) (-)
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// L1: ooooooooooooooooooooooooooooooooo
|
||||||
|
// L2: oooooooooooo
|
||||||
|
// <------- ------------>
|
||||||
|
// Offset: left right
|
||||||
|
// (+) (+)
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// NOTE: this expects that both arrays to cleanly intersect each other
|
||||||
|
// only once...
|
||||||
|
//
|
||||||
// XXX this sometimes returns a null + value, which should be impossible...
|
// XXX this sometimes returns a null + value, which should be impossible...
|
||||||
// ...this does not affect anything, but still need to investigate...
|
// ...this does not affect anything, but still need to investigate...
|
||||||
function getCommonSubArrayOffsets(L1, L2){
|
function getCommonSubArrayOffsets(L1, L2){
|
||||||
@ -882,9 +944,12 @@ function getCommonSubArrayOffsets(L1, L2){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Return a common sub array of two arrays...
|
||||||
|
//
|
||||||
|
// See getCommonSubArrayOffsets(..) for more info...
|
||||||
|
//
|
||||||
// NOTE: this expects that bot arrays cleanly intersect each other only
|
// NOTE: this expects that bot arrays cleanly intersect each other only
|
||||||
// once...
|
// once...
|
||||||
// see getCommonSubArrayOffsets(..) for more info...
|
|
||||||
function getCommonSubArray(L1, L2){
|
function getCommonSubArray(L1, L2){
|
||||||
var res = getCommonSubArrayOffsets(L1, L2)
|
var res = getCommonSubArrayOffsets(L1, L2)
|
||||||
var left = res.left
|
var left = res.left
|
||||||
@ -978,6 +1043,8 @@ function normalizePath(url, base, mode, do_unescape){
|
|||||||
|
|
||||||
// Select best preview by size...
|
// Select best preview by size...
|
||||||
//
|
//
|
||||||
|
// If size is not given, this will use the current size.
|
||||||
|
//
|
||||||
// NOTE: this will use the original if everything else is smaller...
|
// NOTE: this will use the original if everything else is smaller...
|
||||||
function getBestPreview(gid, size){
|
function getBestPreview(gid, size){
|
||||||
gid = gid == null ? getImageGID(): gid
|
gid = gid == null ? getImageGID(): gid
|
||||||
@ -1003,7 +1070,26 @@ function getBestPreview(gid, size){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Orientation translation...
|
// Translate orientation from EXIF to ImageGrid format...
|
||||||
|
//
|
||||||
|
// In EXIF both the flip and rotation are encoded as a combination in a
|
||||||
|
// single byte where as in ImageGrid they are represented by separate
|
||||||
|
// values.
|
||||||
|
//
|
||||||
|
// EXIF rotation flip
|
||||||
|
// 0 - -
|
||||||
|
// 1 - -
|
||||||
|
// 2 - horizontal
|
||||||
|
// 3 180 -
|
||||||
|
// 4 - vertical
|
||||||
|
// 5 90 vertical
|
||||||
|
// 6 90 -
|
||||||
|
// 7 90 horizontal
|
||||||
|
// 8 270 -
|
||||||
|
//
|
||||||
|
// NOTE: some EXIF values are ignored...
|
||||||
|
// NOTE: some combinations are redundant, like: horizontal + vertical
|
||||||
|
// flip is the same as 180 rotation...
|
||||||
function orientationExif2ImageGrid(orientation){
|
function orientationExif2ImageGrid(orientation){
|
||||||
orientation = orientation == null ? 0 : orientation
|
orientation = orientation == null ? 0 : orientation
|
||||||
return {
|
return {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user