mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 19:30:07 +00:00 
			
		
		
		
	some work on direct control...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									2127b49707
								
							
						
					
					
						commit
						662486266f
					
				| @ -63,7 +63,6 @@ core.ImageGridFeatures.Feature('viewer-testing', [ | |||||||
| 	'app-control', | 	'app-control', | ||||||
| 
 | 
 | ||||||
| 	// chrome...
 | 	// chrome...
 | ||||||
| 	'ui-direct-control', |  | ||||||
| 	'ui-animation', | 	'ui-animation', | ||||||
| 	'ui-bounds-indicators', | 	'ui-bounds-indicators', | ||||||
| 	'ui-current-image-indicator', | 	'ui-current-image-indicator', | ||||||
| @ -77,6 +76,9 @@ core.ImageGridFeatures.Feature('viewer-testing', [ | |||||||
| 	'ui-browse-actions', | 	'ui-browse-actions', | ||||||
| 		'ui-widget-test', | 		'ui-widget-test', | ||||||
| 
 | 
 | ||||||
|  | 	//'ui-direct-control-jquery',
 | ||||||
|  | 	'ui-direct-control-gsap', | ||||||
|  | 
 | ||||||
| 	// experimental and optional features...
 | 	// experimental and optional features...
 | ||||||
| 	//'auto-single-image',
 | 	//'auto-single-image',
 | ||||||
| 	 | 	 | ||||||
|  | |||||||
| @ -2386,48 +2386,85 @@ module.AutoSingleImage = core.ImageGridFeatures.Feature({ | |||||||
| // XXX add pinch-zoom...
 | // XXX add pinch-zoom...
 | ||||||
| // XXX add vertical scroll...
 | // XXX add vertical scroll...
 | ||||||
| // XXX BUG: current image indicator gets shown in random places...
 | // XXX BUG: current image indicator gets shown in random places...
 | ||||||
| var DirectControl =  | var DirectControljQ =  | ||||||
| module.DirectControl = core.ImageGridFeatures.Feature({ | module.DirectControljQ = core.ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| 	tag: 'ui-direct-control', | 	tag: 'ui-direct-control-jquery', | ||||||
| 	depends: [ | 	depends: [ | ||||||
| 		'ui', | 		'ui', | ||||||
| 		// this is only used to trigger reoad...
 | 		// this is only used to trigger reoad...
 | ||||||
| 		//'ui-partial-ribbons',
 | 		//'ui-partial-ribbons',
 | ||||||
| 	], | 	], | ||||||
| 
 | 
 | ||||||
| 	/* | 	// XXX add setup/taredown...
 | ||||||
| 	config: { |  | ||||||
| 		'ui-direct-control-engines': [ |  | ||||||
| 			'none', |  | ||||||
| 			'jquery', |  | ||||||
| 		], |  | ||||||
| 		'ui-direct-control-engine': 'jquery', |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	actions: actions.Actions({ |  | ||||||
| 		toggleDirectControlEngine: ['Interface/', |  | ||||||
| 			base.makeConfigToggler('ui-direct-control-engine',  |  | ||||||
| 				function(){ return this.config['ui-direct-control-engines'] })], |  | ||||||
| 	}), |  | ||||||
| 	*/ |  | ||||||
| 
 |  | ||||||
| 	handlers: [ | 	handlers: [ | ||||||
|  | 		// setup click targets...
 | ||||||
|  | 		// XXX click only if we did not drag...
 | ||||||
|  | 		['updateImage',  | ||||||
|  | 			function(res, gid){ | ||||||
|  | 				var that = this | ||||||
|  | 				var img = this.ribbons.getImage(gid) | ||||||
|  | 
 | ||||||
|  | 				// set the clicker only once...
 | ||||||
|  | 				if(!img.prop('clickable')){ | ||||||
|  | 					var x, y | ||||||
|  | 					img | ||||||
|  | 						.prop('clickable', true) | ||||||
|  | 						.on('mousedown touchstart', function(){  | ||||||
|  | 							x = event.clientX | ||||||
|  | 							y = event.clientY | ||||||
|  | 							t = Date.now() | ||||||
|  | 						}) | ||||||
|  | 						.on('mouseup touchend', function(){  | ||||||
|  | 							if(x != null  | ||||||
|  | 								&& Math.max( | ||||||
|  | 									Math.abs(x - event.clientX),  | ||||||
|  | 									Math.abs(y - event.clientY)) < 5){ | ||||||
|  | 								// this will prevent double clicks...
 | ||||||
|  | 								x = null | ||||||
|  | 								y = null | ||||||
|  | 								that.focusImage(that.ribbons.getElemGID($(this))) | ||||||
|  | 							} | ||||||
|  | 						}) | ||||||
|  | 				} | ||||||
|  | 			}], | ||||||
|  | 
 | ||||||
|  | 		// setup ribbon dragging...
 | ||||||
|  | 		// XXX this is really sloooooow...
 | ||||||
| 		// XXX hide current image indicator as soon as the image is not visible...
 | 		// XXX hide current image indicator as soon as the image is not visible...
 | ||||||
| 		// XXX inertia...
 | 		// XXX inertia...
 | ||||||
| 		// XXX limit scroll to at least one image being on screen (center?)...
 | 		// XXX limit scroll to at least one image being on screen (center?)...
 | ||||||
| 		// XXX add setup/taredown...
 |  | ||||||
| 		['updateRibbon',  | 		['updateRibbon',  | ||||||
| 			function(_, target){ | 			function(_, target){ | ||||||
| 				var that = this | 				var that = this | ||||||
| 				var r = this.ribbons.getRibbon(target) | 				var r = this.ribbons.getRibbon(target) | ||||||
| 
 | 
 | ||||||
|  | 				var scale = 1 | ||||||
|  | 
 | ||||||
|  | 				// setup dragging...
 | ||||||
| 				r.length > 0  | 				r.length > 0  | ||||||
| 					&& !r.hasClass('ui-draggable') | 					&& !r.hasClass('ui-draggable') | ||||||
| 					&& r.draggable({ | 					&& r.draggable({ | ||||||
| 						axis: 'x', | 						axis: 'x', | ||||||
|  | 
 | ||||||
|  | 						start: function(evt, ui){ | ||||||
|  | 							scale = that.ribbons.getScale()	 | ||||||
|  | 						}, | ||||||
|  | 						// compensate for ribbon scale...
 | ||||||
|  | 						drag: function(evt, ui) { | ||||||
|  | 							// compensate for scale...
 | ||||||
|  | 							ui.position = { | ||||||
|  | 								left: ui.originalPosition.left  | ||||||
|  | 									+ (ui.position.left  | ||||||
|  | 										- ui.originalPosition.left) / scale, | ||||||
|  | 								top: ui.originalPosition.top  | ||||||
|  | 									+ (ui.position.top  | ||||||
|  | 										- ui.originalPosition.top) / scale, | ||||||
|  | 							} | ||||||
|  | 						}, | ||||||
|  | 
 | ||||||
| 						stop: function(){ | 						stop: function(){ | ||||||
| 							var c = that.ribbons.getImageByPosition('center', r) | 							var c = that.ribbons.getImageByPosition('center', r) | ||||||
| 							that | 							that | ||||||
| @ -2441,6 +2478,92 @@ module.DirectControl = core.ImageGridFeatures.Feature({ | |||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | var DirectControlGSAP =  | ||||||
|  | module.DirectControlGSAP = core.ImageGridFeatures.Feature({ | ||||||
|  | 	title: '', | ||||||
|  | 	doc: '', | ||||||
|  | 
 | ||||||
|  | 	tag: 'ui-direct-control-gsap', | ||||||
|  | 	depends: [ | ||||||
|  | 		'ui', | ||||||
|  | 		// this is only used to trigger reoad...
 | ||||||
|  | 		//'ui-partial-ribbons',
 | ||||||
|  | 	], | ||||||
|  | 
 | ||||||
|  | 	// XXX add setup/taredown...
 | ||||||
|  | 	handlers: [ | ||||||
|  | 		// setup click targets...
 | ||||||
|  | 		// XXX click only if we did not drag...
 | ||||||
|  | 		['updateImage',  | ||||||
|  | 			function(res, gid){ | ||||||
|  | 				var that = this | ||||||
|  | 				var img = this.ribbons.getImage(gid) | ||||||
|  | 
 | ||||||
|  | 				// set the clicker only once...
 | ||||||
|  | 				if(!img.prop('clickable')){ | ||||||
|  | 					var x, y | ||||||
|  | 					img | ||||||
|  | 						.prop('clickable', true) | ||||||
|  | 						.on('mousedown touchstart', function(){  | ||||||
|  | 							x = event.clientX | ||||||
|  | 							y = event.clientY | ||||||
|  | 							t = Date.now() | ||||||
|  | 						}) | ||||||
|  | 						.on('mouseup touchend', function(){  | ||||||
|  | 							if(x != null  | ||||||
|  | 								&& Math.max( | ||||||
|  | 									Math.abs(x - event.clientX),  | ||||||
|  | 									Math.abs(y - event.clientY)) < 5){ | ||||||
|  | 								// this will prevent double clicks...
 | ||||||
|  | 								x = null | ||||||
|  | 								y = null | ||||||
|  | 								that.focusImage(that.ribbons.getElemGID($(this))) | ||||||
|  | 							} | ||||||
|  | 						}) | ||||||
|  | 				} | ||||||
|  | 			}], | ||||||
|  | 
 | ||||||
|  | 		// setup ribbon dragging...
 | ||||||
|  | 		// XXX fast but uses messes up positioning...
 | ||||||
|  | 		// 		...setting type: 'left' will fix this but make things 
 | ||||||
|  | 		// 		really slow (as slow as jQuery.ui.draggable(..))...
 | ||||||
|  | 		['updateRibbon',  | ||||||
|  | 			function(_, target){ | ||||||
|  | 				var that = this | ||||||
|  | 				var r = this.ribbons.getRibbon(target) | ||||||
|  | 
 | ||||||
|  | 				// setup dragging...
 | ||||||
|  | 				if(r.length > 0 && !r.hasClass('draggable')){ | ||||||
|  | 					r.addClass('draggable') | ||||||
|  | 
 | ||||||
|  | 					var o | ||||||
|  | 
 | ||||||
|  | 					Draggable.create(r, { | ||||||
|  | 						type: 'x', | ||||||
|  | 						onDragStart: function(){ | ||||||
|  | 							o = r.position().left | ||||||
|  | 						}, | ||||||
|  | 						onDragEnd: function(){ | ||||||
|  | 							var l = r.position().left | ||||||
|  | 							l += o - l | ||||||
|  | 
 | ||||||
|  | 							that.ribbons.preventTransitions(r) | ||||||
|  | 							r[0].style.left = l | ||||||
|  | 							r[0].style.transform = 'translate3d(0, 0, 0)' | ||||||
|  | 							that.ribbons.restoreTransitions(r) | ||||||
|  | 
 | ||||||
|  | 							var c = that.ribbons.getImageByPosition('center', r) | ||||||
|  | 							that | ||||||
|  | 								.updateRibbon(c) | ||||||
|  | 								// XXX is this correct???
 | ||||||
|  | 								//.updateCurrentImageIndicator()
 | ||||||
|  | 						}}) | ||||||
|  | 				} | ||||||
|  | 			}], | ||||||
|  | 	], | ||||||
|  | }) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| //---------------------------------------------------------------------
 | //---------------------------------------------------------------------
 | ||||||
|  | |||||||
| @ -177,6 +177,12 @@ typeof(require) != 'undefined' && require('nw.gui').Window.get().showDevTools() | |||||||
| <script src="ext-lib/jquery-ui.js"></script> | <script src="ext-lib/jquery-ui.js"></script> | ||||||
| <script src="ext-lib/jquery.ui.touch-punch.min.js"></script> | <script src="ext-lib/jquery.ui.touch-punch.min.js"></script> | ||||||
| 
 | 
 | ||||||
|  | <script src="ext-lib/gsap/TweenLite.min.js"></script> | ||||||
|  | <script src="ext-lib/gsap/jquery.gsap.min.js"></script> | ||||||
|  | <script src="ext-lib/gsap/utils/Draggable.min.js"></script> | ||||||
|  | <script src="ext-lib/gsap/plugins/CSSPlugin.min.js"></script> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| <script src="lib/jli.js"></script> | <script src="lib/jli.js"></script> | ||||||
| <script src="lib/toggler.js"></script> | <script src="lib/toggler.js"></script> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ function(path){ | |||||||
| 		//.map(encodeURIComponent)
 | 		//.map(encodeURIComponent)
 | ||||||
| 		.join('/') | 		.join('/') | ||||||
| 		// NOTE: keep '%' the first...
 | 		// NOTE: keep '%' the first...
 | ||||||
| 		.replace(/%/g, '%25') | 		//.replace(/%/g, '%25')
 | ||||||
| 		.replace(/#/g, '%23') | 		.replace(/#/g, '%23') | ||||||
| 		.replace(/&/g, '%26')) | 		.replace(/&/g, '%26')) | ||||||
| } | } | ||||||
|  | |||||||
| @ -485,7 +485,7 @@ var RibbonsPrototype = { | |||||||
| 	// Set ribbon set scale...
 | 	// Set ribbon set scale...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// 	.setScale(<scale>)
 | 	// 	.setScale(<scale>)
 | ||||||
| 	// 	.setScale(<scale>, <image>)
 | 	// 	.setScale(<scale>, <image>|'current'|'closest')
 | ||||||
| 	// 	.setScale(<scale>, 'top'|'center'|'bottom'|<px>|%, 'left'|'center'|'right'|<px>|%)
 | 	// 	.setScale(<scale>, 'top'|'center'|'bottom'|<px>|%, 'left'|'center'|'right'|<px>|%)
 | ||||||
| 	// 		-> <ribbons>
 | 	// 		-> <ribbons>
 | ||||||
| 	//
 | 	//
 | ||||||
| @ -499,13 +499,20 @@ var RibbonsPrototype = { | |||||||
| 			return this | 			return this | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if(t != null && l != null){ | 		// default origin -- center...
 | ||||||
| 			this.setOrigin(t, l) | 		if(t == null && l == null){ | ||||||
|  | 			this.setOrigin('center', 'center') | ||||||
| 
 | 
 | ||||||
|  | 		// an image...
 | ||||||
|  | 		} else if(l == null){ | ||||||
|  | 			t = t == 'current' ? this.getImage() | ||||||
|  | 				: t == 'closest' ? this.getImageByPosition() | ||||||
|  | 				: t | ||||||
|  | 			this.setOrigin(t) | ||||||
|  | 
 | ||||||
|  | 		// explicit...
 | ||||||
| 		} else { | 		} else { | ||||||
| 			var img = t == null ? this.getImage() : t | 			this.setOrigin(t, l) | ||||||
| 
 |  | ||||||
| 			this.setOrigin(img) |  | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		setElementScale(ribbon_set, scale) | 		setElementScale(ribbon_set, scale) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user