亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cropper.uncompressed.js

?? 在線裁切圖片
?? JS
?? 第 1 頁 / 共 4 頁
字號:
		this.handleS.style.left 	= horizHandlePos;
		this.handleW.style.top		= vertHandlePos;
		
		// draw the four overlays
		this.north.style.height 	= params[1];
		
		var eastStyle 				= this.east.style;
		eastStyle.top				= params[1];
		eastStyle.height			= params[3];
		eastStyle.left				= params[4];
	    eastStyle.width				= params[6];
	   
	   	var southStyle 				= this.south.style;
	   	southStyle.top				= params[5];
	   	southStyle.height			= params[7];
	   
	    var westStyle       		= this.west.style;
	    westStyle.top				= params[1];
	    westStyle.height			= params[3];
	   	westStyle.width				= params[0];
	   	
		// call the draw method on sub classes
		this.subDrawArea();
		
		this.forceReRender();
	},
	
	/**
	 * Force the re-rendering of the selArea element which fixes rendering issues in Safari 
	 * & IE PC, especially evident when re-sizing perfectly vertical using any of the south handles
	 * 
	 * @access private
	 * @return void
	 */
	forceReRender: function() {
		if( this.isIE || this.isWebKit) {
			var n = document.createTextNode(' ');
			var d,el,fixEL,i;
		
			if( this.isIE ) fixEl = this.selArea;
			else if( this.isWebKit ) {
				fixEl = document.getElementsByClassName( 'imgCrop_marqueeSouth', this.imgWrap )[0];
				/* we have to be a bit more forceful for Safari, otherwise the the marquee &
				 * the south handles still don't move
				 */ 
				d = Builder.node( 'div', '' );
				d.style.visibility = 'hidden';
				
				var classList = ['SE','S','SW'];
				for( i = 0; i < classList.length; i++ ) {
					el = document.getElementsByClassName( 'imgCrop_handle' + classList[i], this.selArea )[0];
					if( el.childNodes.length ) el.removeChild( el.childNodes[0] );
					el.appendChild(d);
				}
			}
			fixEl.appendChild(n);
			fixEl.removeChild(n);
		}
	},
	
	/**
	 * Starts the resize
	 * 
	 * @access private
	 * @param obj Event
	 * @return void
	 */
	startResize: function( e ) {
		this.startCoords = this.cloneCoords( this.areaCoords );
		
		this.resizing = true;
		this.resizeHandle = Event.element( e ).classNames().toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/, '');
		// dump( 'this.resizeHandle : ' + this.resizeHandle + '\n' );
		Event.stop( e );
	},
	
	/**
	 * Starts the drag
	 * 
	 * @access private
	 * @param obj Event
	 * @return void
	 */
	startDrag: function( e ) {	
		this.selArea.show();
		this.clickCoords = this.getCurPos( e );
     	
    	this.setAreaCoords( { x1: this.clickCoords.x, y1: this.clickCoords.y, x2: this.clickCoords.x, y2: this.clickCoords.y }, false, false, null );
    	
    	this.dragging = true;
    	this.onDrag( e ); // incase the user just clicks once after already making a selection
    	Event.stop( e );
	},
	
	/**
	 * Gets the current cursor position relative to the image
	 * 
	 * @access private
	 * @param obj Event
	 * @return obj x,y pixels of the cursor
	 */
	getCurPos: function( e ) {
		// get the offsets for the wrapper within the document
		var el = this.imgWrap, wrapOffsets = Position.cumulativeOffset( el );
		// remove any scrolling that is applied to the wrapper (this may be buggy) - don't count the scroll on the body as that won't affect us
		while( el.nodeName != 'BODY' ) {
			wrapOffsets[1] -= el.scrollTop  || 0;
			wrapOffsets[0] -= el.scrollLeft || 0;
			el = el.parentNode;
	    }		
		return curPos = { 
			x: Event.pointerX(e) - wrapOffsets[0],
			y: Event.pointerY(e) - wrapOffsets[1]
		}
	},
  	
  	/**
  	 * Performs the drag for both resize & inital draw dragging
  	 * 
  	 * @access private
	 * @param obj Event
	 * @return void
	 */
  	onDrag: function( e ) {
  		if( this.dragging || this.resizing ) {	
  		
  			var resizeHandle = null;
  			var curPos = this.getCurPos( e );			
			var newCoords = this.cloneCoords( this.areaCoords );
  			var direction = { x: 1, y: 1 };
  	  					
		    if( this.dragging ) {
		    	if( curPos.x < this.clickCoords.x ) direction.x = -1;
		    	if( curPos.y < this.clickCoords.y ) direction.y = -1;
		    	
				this.transformCoords( curPos.x, this.clickCoords.x, newCoords, 'x' );
				this.transformCoords( curPos.y, this.clickCoords.y, newCoords, 'y' );
			} else if( this.resizing ) {
				resizeHandle = this.resizeHandle;			
				// do x movements first
				if( resizeHandle.match(/E/) ) {
					// if we're moving an east handle
					this.transformCoords( curPos.x, this.startCoords.x1, newCoords, 'x' );	
					if( curPos.x < this.startCoords.x1 ) direction.x = -1;
				} else if( resizeHandle.match(/W/) ) {
					// if we're moving an west handle
					this.transformCoords( curPos.x, this.startCoords.x2, newCoords, 'x' );
					if( curPos.x < this.startCoords.x2 ) direction.x = -1;
				}
									
				// do y movements second
				if( resizeHandle.match(/N/) ) {
					// if we're moving an north handle	
					this.transformCoords( curPos.y, this.startCoords.y2, newCoords, 'y' );
					if( curPos.y < this.startCoords.y2 ) direction.y = -1;
				} else if( resizeHandle.match(/S/) ) {
					// if we're moving an south handle
					this.transformCoords( curPos.y, this.startCoords.y1, newCoords, 'y' );	
					if( curPos.y < this.startCoords.y1 ) direction.y = -1;
				}	
							
			}
		
			this.setAreaCoords( newCoords, false, e.shiftKey, direction, resizeHandle );
			this.drawArea();
			Event.stop( e ); // stop the default event (selecting images & text) in Safari & IE PC
		}
	},
	
	/**
	 * Applies the appropriate transform to supplied co-ordinates, on the
	 * defined axis, depending on the relationship of the supplied values
	 * 
	 * @access private
	 * @param int Current value of pointer
	 * @param int Base value to compare current pointer val to
	 * @param obj Coordinates to apply transformation on x1, x2, y1, y2
	 * @param string Axis to apply transformation on 'x' || 'y'
	 * @return void
	 */
	transformCoords : function( curVal, baseVal, coords, axis ) {
		var newVals = [ curVal, baseVal ];
		if( curVal > baseVal ) newVals.reverse();
		coords[ axis + '1' ] = newVals[0];
		coords[ axis + '2' ] = newVals[1];		
	},
	
	/**
	 * Ends the crop & passes the values of the select area on to the appropriate 
	 * callback function on completion of a crop
	 * 
	 * @access private
	 * @return void
	 */
	endCrop : function() {
		this.dragging = false;
		this.resizing = false;
		
		this.options.onEndCrop(
			this.areaCoords,
			{
				width: this.calcW(), 
				height: this.calcH() 
			}
		);
	},
	
	/**
	 * Abstract method called on the end of initialization
	 * 
	 * @access private
	 * @abstract
	 * @return void
	 */
	subInitialize: function() {},
	
	/**
	 * Abstract method called on the end of drawArea()
	 * 
	 * @access private
	 * @abstract
	 * @return void
	 */
	subDrawArea: function() {}
};




/**
 * Extend the Cropper.Img class to allow for presentation of a preview image of the resulting crop,
 * the option for displayOnInit is always overridden to true when displaying a preview image
 * 
 * Usage:
 * 	@param obj Image element to attach to
 * 	@param obj Optional options:
 * 		- see Cropper.Img for base options
 * 		
 * 		- previewWrap obj
 * 			HTML element that will be used as a container for the preview image		
 */
Cropper.ImgWithPreview = Class.create();

Object.extend( Object.extend( Cropper.ImgWithPreview.prototype, Cropper.Img.prototype ), {
	
	/**
	 * Implements the abstract method from Cropper.Img to initialize preview image settings.
	 * Will only attach a preview image is the previewWrap element is defined and the minWidth
	 * & minHeight options are set.
	 * 
	 * @see Croper.Img.subInitialize
	 */
	subInitialize: function() {
		/**
		 * Whether or not we've attached a preview image
		 * @var boolean
		 */
		this.hasPreviewImg = false;
		if( typeof(this.options.previewWrap) != 'undefined' 
			&& this.options.minWidth > 0 
			&& this.options.minHeight > 0
		) {
			/**
			 * The preview image wrapper element
			 * @var obj HTML element
			 */
			this.previewWrap 	= $( this.options.previewWrap );
			/**
			 * The preview image element
			 * @var obj HTML IMG element
			 */
			this.previewImg 	= this.img.cloneNode( false );
			// set the ID of the preview image to be unique
			this.previewImg.id	= 'imgCrop_' + this.previewImg.id;
			
						
			// set the displayOnInit option to true so we display the select area at the same time as the thumbnail
			this.options.displayOnInit = true;

			this.hasPreviewImg 	= true;
			
			this.previewWrap.addClassName( 'imgCrop_previewWrap' );
			
			this.previewWrap.setStyle(
			 { 
			 	width: this.options.minWidth + 'px',
			 	height: this.options.minHeight + 'px'
			 }
			);
			
			this.previewWrap.appendChild( this.previewImg );
		}
	},
	
	/**
	 * Implements the abstract method from Cropper.Img to draw the preview image
	 * 
	 * @see Croper.Img.subDrawArea
	 */
	subDrawArea: function() {
		if( this.hasPreviewImg ) {
			// get the ratio of the select area to the src image
			var calcWidth = this.calcW();
			var calcHeight = this.calcH();
			// ratios for the dimensions of the preview image
			var dimRatio = { 
				x: this.imgW / calcWidth, 
				y: this.imgH / calcHeight 
			}; 
			//ratios for the positions within the preview
			var posRatio = { 
				x: calcWidth / this.options.minWidth, 
				y: calcHeight / this.options.minHeight 
			};
			
			// setting the positions in an obj before apply styles for rendering speed increase
			var calcPos	= {
				w: Math.ceil( this.options.minWidth * dimRatio.x ) + 'px',
				h: Math.ceil( this.options.minHeight * dimRatio.y ) + 'px',
				x: '-' + Math.ceil( this.areaCoords.x1 / posRatio.x )  + 'px',
				y: '-' + Math.ceil( this.areaCoords.y1 / posRatio.y ) + 'px'
			}
			
			var previewStyle 	= this.previewImg.style;
			previewStyle.width 	= calcPos.w;
			previewStyle.height	= calcPos.h;
			previewStyle.left	= calcPos.x;
			previewStyle.top	= calcPos.y;
		}
	}
	
});

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区观看视频| 日韩经典一区二区| 成人免费精品视频| 国产欧美精品区一区二区三区| 国产在线日韩欧美| 国产人妖乱国产精品人妖| 成人在线一区二区三区| 亚洲美女区一区| 欧美精品在线一区二区三区| 日韩精品欧美精品| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧洲生活片亚洲生活在线观看| 亚洲综合色区另类av| 欧美猛男男办公室激情| 国产一区二区三区免费在线观看| 国产日韩欧美电影| 欧美亚洲综合久久| 国产在线麻豆精品观看| 一区二区三区资源| 欧美精品18+| 福利一区在线观看| 亚洲国产日韩a在线播放性色| 欧美精品一二三| 国产精品一区二区无线| 亚洲人亚洲人成电影网站色| 在线综合视频播放| 成人午夜私人影院| 天涯成人国产亚洲精品一区av| 2024国产精品| 欧美性大战久久| 国产高清视频一区| 亚洲国产精品一区二区久久恐怖片| 精品久久久久久久久久久院品网 | 精品理论电影在线观看| 北条麻妃一区二区三区| 日本最新不卡在线| 亚洲男同性视频| 久久久午夜精品| 欧美丰满一区二区免费视频| 成人一区二区三区在线观看| 91啪亚洲精品| 久久精品国产亚洲高清剧情介绍| 亚洲日本va在线观看| 久久久五月婷婷| 欧美午夜在线观看| 成人av资源网站| 久久精品国产77777蜜臀| 亚洲欧美日韩国产综合在线| 精品国产一区久久| 欧美日韩一区二区三区不卡| 成人自拍视频在线| 国产米奇在线777精品观看| 亚洲激情校园春色| 日本一区二区三区国色天香| 日韩美女一区二区三区| 欧美情侣在线播放| 欧美日韩亚洲丝袜制服| 91精品1区2区| 色诱视频网站一区| caoporen国产精品视频| 国产91在线看| 久久99精品久久久久久| 天堂一区二区在线免费观看| 一区二区三区中文在线| 亚洲精品视频自拍| 亚洲日本护士毛茸茸| 《视频一区视频二区| 亚洲国产精品成人综合| 欧美高清在线精品一区| 中文字幕乱码亚洲精品一区 | 99精品欧美一区二区蜜桃免费 | 在线这里只有精品| 91麻豆精品一区二区三区| 9l国产精品久久久久麻豆| 成人免费毛片aaaaa**| 成人做爰69片免费看网站| 国产乱国产乱300精品| 国产一区二区三区久久悠悠色av| 国模冰冰炮一区二区| 紧缚奴在线一区二区三区| 精品一区二区在线看| 狠狠色丁香久久婷婷综| 国产精品亚洲人在线观看| 国产成人在线看| av在线不卡网| 欧美中文字幕亚洲一区二区va在线 | 国产精品视频免费| 国产精品久久久久久亚洲伦 | 在线视频一区二区三| 一本到一区二区三区| 欧美视频第二页| 日韩欧美一二区| 久久久久久**毛片大全| 中文一区二区在线观看| 亚洲欧美偷拍另类a∨色屁股| 一区二区三国产精华液| 五月婷婷综合网| 国产一区二区在线免费观看| 成人黄色片在线观看| 色噜噜狠狠成人网p站| 欧美日韩激情一区二区三区| 亚洲自拍欧美精品| 蜜臀久久久久久久| 粉嫩欧美一区二区三区高清影视| 日本二三区不卡| 欧美一区二区三区四区视频| 久久亚洲一区二区三区四区| 国产精品电影一区二区三区| 亚洲成人动漫一区| 国产成a人亚洲精| 欧洲精品一区二区三区在线观看| 日韩一级视频免费观看在线| 欧美激情资源网| 亚洲va在线va天堂| 国产成人精品网址| 欧美视频自拍偷拍| 国产色综合久久| 视频一区中文字幕国产| 成人黄色在线网站| 日韩欧美国产1| 亚洲人妖av一区二区| 久久机这里只有精品| 色先锋aa成人| 久久久91精品国产一区二区三区| 亚洲一级二级在线| 国产黄色成人av| 欧美日韩国产首页在线观看| 久久久精品国产99久久精品芒果| 亚洲国产日韩精品| 99精品视频在线观看| 日韩欧美一级二级| 午夜婷婷国产麻豆精品| 成人av综合一区| 久久精品一区二区三区四区| 亚洲不卡一区二区三区| 91丨porny丨户外露出| 26uuu亚洲| 日韩高清电影一区| 色婷婷精品久久二区二区蜜臂av | 欧美精品亚洲一区二区在线播放| 亚洲国产精品传媒在线观看| 美女在线一区二区| 色婷婷综合久色| 国产精品全国免费观看高清 | 国产精品美女视频| 久久av中文字幕片| 欧美久久一区二区| 亚洲精品免费电影| 99久久国产免费看| 国产精品麻豆欧美日韩ww| 精品一区二区三区久久久| 欧美精品777| 日韩经典中文字幕一区| 欧美精品少妇一区二区三区 | 美女免费视频一区| 欧美日韩免费视频| 亚洲综合在线电影| 成人av片在线观看| 国产精品日韩精品欧美在线| 国产一区91精品张津瑜| 久久精品亚洲一区二区三区浴池| 理论片日本一区| 日韩欧美在线影院| 麻豆国产精品官网| 精品国产自在久精品国产| 久久精品国产亚洲a| 精品成人私密视频| 国产一区二区三区四| 久久久www成人免费毛片麻豆| 国内精品第一页| 国产亚洲精品中文字幕| 国产成人在线看| 国产精品久久毛片a| 99久久久国产精品免费蜜臀| 综合激情网...| 91免费版在线看| 亚洲高清视频的网址| 欧美理论电影在线| 欧美色图免费看| 亚洲h精品动漫在线观看| 欧美日韩精品电影| 久久超级碰视频| 国产视频一区在线观看| 91小视频免费观看| 亚洲福中文字幕伊人影院| 91精品啪在线观看国产60岁| 精品一区二区三区在线播放| 久久奇米777| 91香蕉视频污在线| 亚洲sss视频在线视频| 精品处破学生在线二十三| 成人高清伦理免费影院在线观看| 亚洲另类中文字| 欧美一级高清片| 成人av资源在线| 日韩二区在线观看| 国产日产欧美一区二区三区 | 欧美一区三区二区| 丰满白嫩尤物一区二区| 一区二区不卡在线播放 |