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

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

?? path.js

?? js基本操作
?? JS
字號:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.gfx.path");dojo.require("dojo.math");dojo.require("dojo.gfx.shape");dojo.declare("dojo.gfx.path.Path", dojo.gfx.Shape, {	// summary: a generalized path shape		initializer: function(rawNode){		// summary: a constructor of a path shape object		// rawNode: Node: a DOM node to be used by this path object		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultPath, true);		this.segments = [];		this.absolute = true;		this.last = {};		this.attach(rawNode);	},		// mode manipulations	setAbsoluteMode: function(mode){		// summary: sets an absolute or relative mode for path points		// mode: Boolean: true/false or "absolute"/"relative" to specify the mode		this.absolute = typeof(mode) == "string" ? (mode == "absolute") : mode;		return this; // self	},	getAbsoluteMode: function(){		// summary: returns a current value of the absolute mode		return this.absolute; // Boolean	},		getBoundingBox: function(){		// summary: returns the bounding box {x, y, width, height} or null		return "l" in this.bbox ? {x: this.bbox.l, y: this.bbox.t, width: this.bbox.r - this.bbox.l, height: this.bbox.b - this.bbox.t} : null; // dojo.gfx.Rectangle	},		getLastPosition: function(){		// summary: returns the last point in the path, or null		return "x" in this.last ? this.last : null; // Object	},		// segment interpretation	_updateBBox: function(x, y){		// summary: updates the bounding box of path with new point		// x: Number: an x coordinate		// y: Number: a y coordinate				// we use {l, b, r, t} representation of a bbox		if("l" in this.bbox){			if(this.bbox.l > x) this.bbox.l = x;			if(this.bbox.r < x) this.bbox.r = x;			if(this.bbox.t > y) this.bbox.t = y;			if(this.bbox.b < y) this.bbox.b = y;		}else{			this.bbox = {l: x, b: y, r: x, t: y};		}	},	_updateWithSegment: function(segment){		// summary: updates the bounding box of path with new segment		// segment: Object: a segment		var n = segment.args;		var l = n.length;		// update internal variables: bbox, absolute, last		switch(segment.action){			case "M":			case "L":			case "C":			case "S":			case "Q":			case "T":				for(var i = 0; i < l; i += 2){					this._updateBBox(this.bbox, n[i], n[i + 1]);				}				this.last.x = n[l - 2];				this.last.y = n[l - 1];				this.absolute = true;				break;			case "H":				for(var i = 0; i < l; ++i){					this._updateBBox(this.bbox, n[i], this.last.y);				}				this.last.x = n[l - 1];				this.absolute = true;				break;			case "V":				for(var i = 0; i < l; ++i){					this._updateBBox(this.bbox, this.last.x, n[i]);				}				this.last.y = n[l - 1];				this.absolute = true;				break;			case "m":				var start = 0;				if(!("x" in this.last)){					this._updateBBox(this.bbox, this.last.x = n[0], this.last.y = n[1]);					start = 2;				}				for(var i = start; i < l; i += 2){					this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]);				}				this.absolute = false;				break;			case "l":			case "t":				for(var i = 0; i < l; i += 2){					this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]);				}				this.absolute = false;				break;			case "h":				for(var i = 0; i < l; ++i){					this._updateBBox(this.bbox, this.last.x += n[i], this.last.y);				}				this.absolute = false;				break;			case "v":				for(var i = 0; i < l; ++i){					this._updateBBox(this.bbox, this.last.x, this.last.y += n[i]);				}				this.absolute = false;				break;			case "c":				for(var i = 0; i < l; i += 6){					this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]);					this._updateBBox(this.bbox, this.last.x + n[i + 2], this.last.y + n[i + 3]);					this._updateBBox(this.bbox, this.last.x += n[i + 4], this.last.y += n[i + 5]);				}				this.absolute = false;				break;			case "s":			case "q":				for(var i = 0; i < l; i += 4){					this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]);					this._updateBBox(this.bbox, this.last.x += n[i + 2], this.last.y += n[i + 3]);				}				this.absolute = false;				break;			case "A":				for(var i = 0; i < l; i += 7){					this._updateBBox(this.bbox, n[i + 5], n[i + 6]);				}				this.last.x = n[l - 2];				this.last.y = n[l - 1];				this.absolute = true;				break;			case "a":				for(var i = 0; i < l; i += 7){					this._updateBBox(this.bbox, this.last.x += n[i + 5], this.last.y += n[i + 6]);				}				this.absolute = false;				break;		}		// add an SVG path segment		var path = [segment.action];		for(var i = 0; i < l; ++i){			path.push(dojo.gfx.formatNumber(n[i], true));		}		if(typeof(this.shape.path) == "string"){			this.shape.path += path.join("");		}else{			this.shape.path = this.shape.path.concat(path);		}	},		// a dictionary, which maps segment type codes to a number of their argemnts	_validSegments: {m: 2, l: 2, h: 1, v: 1, c: 6, s: 4, q: 4, t: 2, a: 7, z: 0},		_pushSegment: function(action, args){		// summary: adds a segment		// action: String: valid SVG code for a segment's type		// args: Array: a list of parameters for this segment		var group = this._validSegments[action.toLowerCase()];		if(typeof(group) == "number"){			if(group){				if(args.length >= group){					var segment = {action: action, args: args.slice(0, args.length - args.length % group)};					this.segments.push(segment);					this._updateWithSegment(segment);				}			}else{				var segment = {action: action, args: []};				this.segments.push(segment);				this._updateWithSegment(segment);			}		}	},		_collectArgs: function(array, args){		// summary: converts an array of arguments to plain numeric values		// array: Array: an output argument (array of numbers)		// args: Array: an input argument (can be values of Boolean, Number, dojo.gfx.Point, or an embedded array of them)		for(var i = 0; i < args.length; ++i){			var t = args[i];			if(typeof(t) == "boolean"){				array.push(t ? 1 : 0);			}else if(typeof(t) == "number"){				array.push(t);			}else if(t instanceof Array){				this._collectArgs(array, t);			}else if("x" in t && "y" in t){				array.push(t.x);				array.push(t.y);			}		}	},	// segments		moveTo: function(){		// summary: formes a move segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "M" : "m", args);		return this; // self	},	lineTo: function(){		// summary: formes a line segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "L" : "l", args);		return this; // self	},	hLineTo: function(){		// summary: formes a horizontal line segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "H" : "h", args);		return this; // self	},	vLineTo: function(){		// summary: formes a vertical line segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "V" : "v", args);		return this; // self	},	curveTo: function(){		// summary: formes a curve segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "C" : "c", args);		return this; // self	},	smoothCurveTo: function(){		// summary: formes a smooth curve segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "S" : "s", args);		return this; // self	},	qCurveTo: function(){		// summary: formes a quadratic curve segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "Q" : "q", args);		return this; // self	},	qSmoothCurveTo: function(){		// summary: formes a quadratic smooth curve segment		var args = [];		this._collectArgs(args, arguments);		this._pushSegment(this.absolute ? "T" : "t", args);		return this; // self	},	arcTo: function(){		// summary: formes an elliptic arc segment		var args = [];		this._collectArgs(args, arguments);		for(var i = 2; i < args.length; i += 7){			args[i] = -args[i];		}		this._pushSegment(this.absolute ? "A" : "a", args);		return this; // self	},	closePath: function(){		// summary: closes a path		this._pushSegment("Z", []);		return this; // self	},		// setShape	_setPath: function(path){		// summary: forms a path using an SVG path string		// path: String: an SVG path string		var p = path.match(dojo.gfx.pathRegExp);		this.segments = [];		this.absolute = true;		this.bbox = {};		this.last = {};		if(!p) return;		// create segments		var action = "";	// current action		var args = [];		// current arguments		for(var i = 0; i < p.length; ++i){			var t = p[i];			var x = parseFloat(t);			if(isNaN(x)){				if(action){					this._pushSegment(action, args);				}				args = [];				action = t;			}else{				args.push(x);			}		}		this._pushSegment(action, args);	},	setShape: function(newShape){		// summary: forms a path using a shape		// newShape: Object: an SVG path string or a path object (see dojo.gfx.defaultPath)		this.shape = dojo.gfx.makeParameters(this.shape, typeof(newShape) == "string" ? {path: newShape} : newShape);		var path = this.shape.path;		// switch to non-updating version of path building		this.shape.path = [];		this._setPath(path);		// switch back to the string path		this.shape.path = this.shape.path.join("");		return this; // self	},		// useful constant for descendants	_2PI: Math.PI * 2});

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合自拍亚洲综合图不卡区| 成人av中文字幕| 在线观看亚洲a| 亚洲丝袜制服诱惑| 久久99国产精品久久99| 欧美精三区欧美精三区| 亚洲小说春色综合另类电影| 色94色欧美sute亚洲线路一ni| 欧美国产激情一区二区三区蜜月 | 欧美日本乱大交xxxxx| 亚洲精品视频在线看| 99久久精品99国产精品| 国产精品免费观看视频| 成人免费观看av| 亚洲激情av在线| 色婷婷综合久色| 亚洲一区在线观看免费| 欧美一区二区三区在线电影| 午夜日韩在线电影| 日本乱人伦一区| 男女视频一区二区| 精品动漫一区二区三区在线观看| 国产伦精品一区二区三区免费迷| 日本一区二区电影| 色又黄又爽网站www久久| 日韩在线一二三区| 精品区一区二区| 国产成人精品免费视频网站| 亚洲丝袜精品丝袜在线| 欧美视频中文字幕| 日本午夜一本久久久综合| 久久久电影一区二区三区| 国产91精品欧美| 亚洲人成网站精品片在线观看| 91精品国产免费| 国产乱码精品一区二区三区av| 国产凹凸在线观看一区二区| 亚洲一区在线播放| 欧美成人艳星乳罩| 国产电影一区二区三区| 亚洲国产精品一区二区尤物区| 欧美大片在线观看一区二区| 91在线国产观看| 日本欧美在线观看| 国产精品国产三级国产aⅴ原创| 欧美日韩国产大片| 国产91丝袜在线观看| 亚洲一区av在线| 国产欧美日本一区二区三区| 91官网在线免费观看| 久久国产精品一区二区| 亚洲一区二区av在线| 久久综合给合久久狠狠狠97色69| 懂色av中文字幕一区二区三区 | 国产69精品久久777的优势| 亚洲精品久久久蜜桃| 久久一区二区视频| 欧美日韩一区在线| 国产成人鲁色资源国产91色综| 日本va欧美va精品| 亚洲日本va在线观看| 欧美一级艳片视频免费观看| 在线观看区一区二| 丁香婷婷综合色啪| 一区二区久久久久久| 国产精品久久久久久久久快鸭 | 欧美色成人综合| 成人黄色国产精品网站大全在线免费观看 | 天堂成人免费av电影一区| 国产欧美一区二区精品忘忧草 | 日本一区二区三级电影在线观看 | 日韩欧美视频一区| 欧美在线一区二区| 成人免费av在线| 国产一区二区在线视频| 日日摸夜夜添夜夜添亚洲女人| 亚洲黄色性网站| 国产精品久久久久四虎| 久久久久久久久99精品| 久久人人超碰精品| 日韩欧美你懂的| 91精品国产综合久久久蜜臀粉嫩| 在线欧美日韩国产| 91网上在线视频| 国产美女在线观看一区| 国产精品自拍三区| 久久99九九99精品| 国产毛片精品视频| 狠狠网亚洲精品| 精品在线一区二区三区| 国产乱码精品一区二区三| 美女脱光内衣内裤视频久久网站 | 欧美一区二区国产| 精品国产乱子伦一区| 91麻豆精品国产91久久久久久久久| 欧美日韩精品一区二区三区| 欧美三级中文字幕在线观看| 日本韩国一区二区三区| 欧美老人xxxx18| 欧美裸体bbwbbwbbw| 欧美精品色综合| 精品欧美一区二区三区精品久久| 欧美一区日韩一区| 欧美少妇性性性| 日韩女优制服丝袜电影| 日韩欧美一区二区免费| 欧美国产视频在线| 亚洲天堂久久久久久久| 亚洲人成精品久久久久久| 三级一区在线视频先锋 | 国产欧美一区二区三区鸳鸯浴 | 7777精品伊人久久久大香线蕉超级流畅| 成人黄页在线观看| 99热在这里有精品免费| 91片在线免费观看| 91一区在线观看| 欧美精品日韩精品| 久久综合色播五月| 亚洲一区二区三区激情| 日本sm残虐另类| 国产成人午夜精品影院观看视频 | 日韩av二区在线播放| 国产一区二区按摩在线观看| 91浏览器在线视频| 制服丝袜日韩国产| 久久亚洲一区二区三区明星换脸 | 国产精品久久久久婷婷| 一个色综合网站| 日韩主播视频在线| 成人av动漫网站| 欧美人妖巨大在线| 亚洲欧洲日韩综合一区二区| 亚洲韩国精品一区| 国产乱妇无码大片在线观看| 欧美日韩不卡一区| 国产欧美一二三区| 亚洲电影一区二区三区| 粉嫩久久99精品久久久久久夜| 欧美最猛黑人xxxxx猛交| 欧美精品1区2区3区| 亚洲国产成人在线| 秋霞国产午夜精品免费视频| 91一区二区三区在线观看| 欧美一级视频精品观看| 国产精品私人影院| 狠狠狠色丁香婷婷综合激情| 91黄色免费网站| 这里只有精品99re| 亚洲国产精品久久一线不卡| 国产传媒欧美日韩成人| 日韩欧美精品在线| 亚洲va中文字幕| 成人免费毛片高清视频| 国产亚洲精品bt天堂精选| 亚洲大片一区二区三区| 经典三级一区二区| 欧美日韩一区成人| 亚洲天堂av老司机| 国产精品综合网| 26uuu亚洲综合色欧美| 午夜精品一区在线观看| www.亚洲精品| 国产精品免费av| 国产制服丝袜一区| 欧美日韩精品系列| 亚洲精品国产第一综合99久久 | 一区二区久久久久久| 91丨九色丨黑人外教| 久久精品一区八戒影视| 亚洲h在线观看| 欧美精品日韩一本| 亚洲第一激情av| 欧美日韩一区二区电影| 亚洲综合在线五月| 色综合色综合色综合| 亚洲精品免费在线| 色综合视频一区二区三区高清| 亚洲品质自拍视频| 91日韩在线专区| 亚洲欧美日韩一区二区| 色婷婷精品大在线视频| 国产精品久久久久影院老司| 国产一区二区三区免费看 | 国产精品一卡二卡| 26uuu色噜噜精品一区| 五月激情六月综合| 欧美精品电影在线播放| 天天综合网天天综合色| 欧美变态tickling挠脚心| 蜜桃av一区二区三区| 欧美一卡二卡在线观看| 国产专区综合网| 国产日本亚洲高清| 国产精品123区| 国产精品情趣视频| jlzzjlzz亚洲女人18| 亚洲va中文字幕| 日韩一级片网站| 日韩高清不卡在线| 欧美激情一二三区|