mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 03:10:07 +00:00 
			
		
		
		
	fixed .split(..) and added .alignToRibbon(..) to data gen4 + added a -c option to precess-archive.sh script...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									abbac26826
								
							
						
					
					
						commit
						c51ddd78d4
					
				| @ -13,6 +13,8 @@ printhelp(){ | |||||||
| 	echo "	-h --help	- print this help and exit." | 	echo "	-h --help	- print this help and exit." | ||||||
| 	echo "	--common-previews PATH" | 	echo "	--common-previews PATH" | ||||||
| 	echo "			- build a single preview set at PATH." | 	echo "			- build a single preview set at PATH." | ||||||
|  | 	echo "	-c		- build a single common path at ARCHIVE_ROOT;" | ||||||
|  | 	echo "			  this is a shorthand for: --common-path '.'." | ||||||
| 	echo | 	echo | ||||||
| 	echo "	--skip-archive	- skip creating archive structure (use: exiftool)." | 	echo "	--skip-archive	- skip creating archive structure (use: exiftool)." | ||||||
| 	echo "	--skip-previews	- skip creating previews (use: vips)." | 	echo "	--skip-previews	- skip creating previews (use: vips)." | ||||||
| @ -33,6 +35,10 @@ while true ; do | |||||||
| 			exit | 			exit | ||||||
| 			;; | 			;; | ||||||
| 
 | 
 | ||||||
|  | 		-c) | ||||||
|  | 			COMMON_PREVIEWS="." | ||||||
|  | 			shift | ||||||
|  | 			;; | ||||||
| 		--common-previews) | 		--common-previews) | ||||||
| 			COMMON_PREVIEWS="${2}" | 			COMMON_PREVIEWS="${2}" | ||||||
| 			shift | 			shift | ||||||
|  | |||||||
							
								
								
									
										105
									
								
								ui/data4.js
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								ui/data4.js
									
									
									
									
									
								
							| @ -10,7 +10,7 @@ | |||||||
| // Version format:
 | // Version format:
 | ||||||
| // 	<major>.<minor>
 | // 	<major>.<minor>
 | ||||||
| //
 | //
 | ||||||
| // Major version change mean a significant incompatibility.
 | // Major version changes mean a significant incompatibility.
 | ||||||
| //
 | //
 | ||||||
| // Minor version changes mean some detail changed and can be handled
 | // Minor version changes mean some detail changed and can be handled
 | ||||||
| // by it's specific handler seamlessly. Backwards compatible.
 | // by it's specific handler seamlessly. Backwards compatible.
 | ||||||
| @ -249,6 +249,8 @@ var DataPrototype = { | |||||||
| 	// 		-> gid
 | 	// 		-> gid
 | ||||||
| 	// 		-> null (XXX ???)
 | 	// 		-> null (XXX ???)
 | ||||||
| 	// 		NOTE: the second argument must be .getRibbon(..) compatible.
 | 	// 		NOTE: the second argument must be .getRibbon(..) compatible.
 | ||||||
|  | 	// 		NOTE: to get global first/last image use the index, e.g.:
 | ||||||
|  | 	// 			.getImage(0) / .getImage(-1)
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// 	Get image closest to current in list/ribbon:
 | 	// 	Get image closest to current in list/ribbon:
 | ||||||
| 	// 	.getImage(list|ribbon[, 'before'|'after'])
 | 	// 	.getImage(list|ribbon[, 'before'|'after'])
 | ||||||
| @ -311,6 +313,9 @@ var DataPrototype = { | |||||||
| 
 | 
 | ||||||
| 		// order -> gid special case...
 | 		// order -> gid special case...
 | ||||||
| 		if(typeof(target) == typeof(123)){ | 		if(typeof(target) == typeof(123)){ | ||||||
|  | 			if(target >= this.order.length){ | ||||||
|  | 				return null | ||||||
|  | 			} | ||||||
| 			target = target < 0 ?  | 			target = target < 0 ?  | ||||||
| 					this.order[this.order.length+target]  | 					this.order[this.order.length+target]  | ||||||
| 				: this.order[target] | 				: this.order[target] | ||||||
| @ -415,7 +420,7 @@ var DataPrototype = { | |||||||
| 		return null | 		return null | ||||||
| 	},	 | 	},	 | ||||||
| 
 | 
 | ||||||
| 	// Return image order...
 | 	// Get image order...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// This is similar to .getImage(..) but adds an optional context.
 | 	// This is similar to .getImage(..) but adds an optional context.
 | ||||||
| 	//
 | 	//
 | ||||||
| @ -446,7 +451,7 @@ var DataPrototype = { | |||||||
| 		return this.order.indexOf(this.getImage(context, target, mode)) | 		return this.order.indexOf(this.getImage(context, target, mode)) | ||||||
| 	},	 | 	},	 | ||||||
| 
 | 
 | ||||||
| 	// Get a list of gids...
 | 	// Get a list of image gids...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	//	Get list of loaded images:
 | 	//	Get list of loaded images:
 | ||||||
| 	//	.getImages()
 | 	//	.getImages()
 | ||||||
| @ -487,6 +492,10 @@ var DataPrototype = { | |||||||
| 	// 		(before) the target.
 | 	// 		(before) the target.
 | ||||||
| 	// NOTE: if the target is present in the image-set it will be included
 | 	// NOTE: if the target is present in the image-set it will be included
 | ||||||
| 	// 		in the result regardless of mode...
 | 	// 		in the result regardless of mode...
 | ||||||
|  | 	// NOTE: to get a set of image around a specific (non-current) image
 | ||||||
|  | 	// 		in a specific (non-current) ribbon first get an apropriate image
 | ||||||
|  | 	// 		via. .getImage(..) and then get the list with this...
 | ||||||
|  | 	// 			D.getImages(D.getImage(gid, ribbon_gid), N, 'around')
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// XXX for some reason negative target number (ribbon number) 
 | 	// XXX for some reason negative target number (ribbon number) 
 | ||||||
| 	// 		breaks this...
 | 	// 		breaks this...
 | ||||||
| @ -925,18 +934,52 @@ var DataPrototype = { | |||||||
| 
 | 
 | ||||||
| 	// Split data into sections...
 | 	// Split data into sections...
 | ||||||
| 	//
 | 	//
 | ||||||
|  | 	// 	.split(target, ..)
 | ||||||
|  | 	// 	.split([target, ..])
 | ||||||
|  | 	// 		-> list
 | ||||||
|  | 	//
 | ||||||
|  | 	//
 | ||||||
|  | 	// This will "split" the data just before each target, i.e. target N
 | ||||||
|  | 	// will get the head of N+1 section.
 | ||||||
|  | 	//
 | ||||||
|  | 	// 		 Data							 Data		 Data
 | ||||||
|  | 	// 		[...oooooXooooo...]		->		[...ooooo]	[Xooooo...]
 | ||||||
|  | 	// 				 ^									 ^
 | ||||||
|  | 	// 			  target							  target
 | ||||||
|  | 	//
 | ||||||
|  | 	//
 | ||||||
|  | 	// Special case: target is .order.length
 | ||||||
|  | 	// This will indicate that the last data section will be empty.
 | ||||||
|  | 	//
 | ||||||
|  | 	// 		 Data							 Data		 		 Data
 | ||||||
|  | 	// 		[...oooooooooooo]		->		[...oooooooooooo]	[]
 | ||||||
|  | 	// 						^								^
 | ||||||
|  | 	//					 target							 target
 | ||||||
|  | 	//
 | ||||||
|  | 	//
 | ||||||
|  | 	// Targets MUST be listed in order of occurrence.
 | ||||||
|  | 	//
 | ||||||
| 	// NOTE: this will not affect the original data object...
 | 	// NOTE: this will not affect the original data object...
 | ||||||
| 	// NOTE: this might result in empty ribbons, if no images are in a 
 | 	// NOTE: this might result in empty ribbons, if no images are in a 
 | ||||||
| 	// 		given ribbon in the section to be split...
 | 	// 		given ribbon in the section to be split...
 | ||||||
|  | 	// NOTE: target must be a .getImage(..) compatible value.
 | ||||||
|  | 	// NOTE: if no target is given this will assume the current image.
 | ||||||
| 	split: function(target){ | 	split: function(target){ | ||||||
| 		if(target.constructor.name != 'Array'){ | 		if(arguments.length > 1){ | ||||||
| 			target = [target] | 			target = Array.apply(null, arguments) | ||||||
|  | 		} else if(target == null  | ||||||
|  | 				|| target.constructor.name != 'Array'){ | ||||||
|  | 			target = [ target ] | ||||||
| 		} | 		} | ||||||
| 		var res = [] | 		var res = [] | ||||||
| 		var tail = this.clone() | 		var tail = this.clone() | ||||||
|  | 		var that = this | ||||||
| 
 | 
 | ||||||
|  | 		// NOTE: we modify tail here on each iteration...
 | ||||||
| 		target.forEach(function(i){ | 		target.forEach(function(i){ | ||||||
| 			i = tail.getImageOrder(i)-1 | 			i = i >= that.order.length  | ||||||
|  | 				? tail.order.length | ||||||
|  | 				: tail.getImageOrder(that.getImage(i)) | ||||||
| 			var n = new Data() | 			var n = new Data() | ||||||
| 			n.base = tail.base | 			n.base = tail.base | ||||||
| 			n.ribbon_order = tail.ribbon_order.slice() | 			n.ribbon_order = tail.ribbon_order.slice() | ||||||
| @ -974,8 +1017,8 @@ var DataPrototype = { | |||||||
| 	// 	'bottom'	- bottom ribbons
 | 	// 	'bottom'	- bottom ribbons
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// NOTE: data can be both a list of arguments or an array.
 | 	// NOTE: data can be both a list of arguments or an array.
 | ||||||
| 	// NOTE: this will merge the items in-place, into the method's object
 | 	// NOTE: this will merge the items in-place, into the method's object;
 | ||||||
| 	// 		if it is needed to the original intact, just .clone() it...
 | 	// 		if it is needed to keep the original intact, just .clone() it...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// XXX test more complex cases...
 | 	// XXX test more complex cases...
 | ||||||
| 	join: function(){ | 	join: function(){ | ||||||
| @ -1043,6 +1086,52 @@ var DataPrototype = { | |||||||
| 		return base | 		return base | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
|  | 	// Align data to ribbon...
 | ||||||
|  | 	//
 | ||||||
|  | 	// NOTE: if either start or end is not given this will infer the 
 | ||||||
|  | 	// 		missing values via the ribbon above.
 | ||||||
|  | 	// NOTE: if either start or end is not given this can only align 
 | ||||||
|  | 	// 		downward, needing a ribbon above the target to infer the 
 | ||||||
|  | 	// 		values.
 | ||||||
|  | 	alignToRibbon: function(ribbon, start, end){ | ||||||
|  | 		ribbon = ribbon == null ? this.base : this.getRibbon(ribbon) | ||||||
|  | 
 | ||||||
|  | 		if(start == null || end == null){ | ||||||
|  | 			var r = this.getRibbonOrder(ribbon) | ||||||
|  | 			// ribbon is top ribbon, nothing to do...
 | ||||||
|  | 			if(r <= 0){ | ||||||
|  | 				return this | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			var above = this.getRibbon(r-1) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		start = start == null  | ||||||
|  | 			? this.getImageOrder('first', above) | ||||||
|  | 			: this.getImageOrder(start) | ||||||
|  | 		end = end == null  | ||||||
|  | 			// NOTE: we need to exclude the last image in ribbon from 
 | ||||||
|  | 			// 		the next section, this the offset.
 | ||||||
|  | 			? this.getImageOrder('last', above)+1 | ||||||
|  | 			: this.getImageOrder(end) | ||||||
|  | 
 | ||||||
|  | 		// split the data into three sections...
 | ||||||
|  | 		var res = this.split(start, end) | ||||||
|  | 		var rest = res.splice(1) | ||||||
|  | 
 | ||||||
|  | 		// set the base ribbon on the middle section...
 | ||||||
|  | 		rest[0].setBase(0) | ||||||
|  | 
 | ||||||
|  | 		// join the resulting data to the base ribbon...
 | ||||||
|  | 		res = res.join(rest) | ||||||
|  | 
 | ||||||
|  | 		// transfer data to new data object...
 | ||||||
|  | 		res.current = this.current | ||||||
|  | 		res.base = this.base | ||||||
|  | 
 | ||||||
|  | 		return res | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
| 	// Crop the data...
 | 	// Crop the data...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// NOTE: this will not affect the original data object...
 | 	// NOTE: this will not affect the original data object...
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user