⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wz_jsgraphics.js

📁 wz_jsgraphics.js v. 2.3 div画图类
💻 JS
📖 第 1 页 / 共 2 页
字号:
/* This notice must be untouched at all times.wz_jsgraphics.js    v. 2.3The latest version is available athttp://www.walterzorn.comor http://www.devira.comor http://www.walterzorn.deCopyright (c) 2002-2004 Walter Zorn. All rights reserved.Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )Last modified: 29. 9. 2004Performance optimizations for Internet Explorerby Thomas Frank and John Holdsworth.fillPolygon method implemented by Matthieu Haller.High Performance JavaScript Graphics Library.Provides methods- to draw lines, rectangles, ellipses, polygons  with specifiable line thickness,- to fill rectangles and ellipses- to draw text.NOTE: Operations, functions and branching have rather been optimizedto efficiency and speed than to shortness of source code.LICENSE: LGPLThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense (LGPL) as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA,or see http://www.gnu.org/copyleft/lesser.html */var jg_ihtm, jg_ie, jg_fast, jg_dom, jg_moz,jg_n4 = (document.layers && typeof document.classes != "undefined");function chkDHTM(x, i){	x = document.body || null;	jg_ie = x && typeof x.insertAdjacentHTML != "undefined";	jg_dom = (x && !jg_ie &&		typeof x.appendChild != "undefined" &&		typeof document.createRange != "undefined" &&		typeof (i = document.createRange()).setStartBefore != "undefined" &&		typeof i.createContextualFragment != "undefined");	jg_ihtm = !jg_ie && !jg_dom && x && typeof x.innerHTML != "undefined";	jg_fast = jg_ie && document.all && !window.opera;	jg_moz = jg_dom && typeof x.style.MozOpacity != "undefined";}function pntDoc(){	this.wnd.document.write(jg_fast? this.htmRpc() : this.htm);	this.htm = '';}function pntCnvDom(){	var x = document.createRange();	x.setStartBefore(this.cnv);	x = x.createContextualFragment(jg_fast? this.htmRpc() : this.htm);	this.cnv.appendChild(x);	this.htm = '';}function pntCnvIe(){	this.cnv.insertAdjacentHTML("BeforeEnd", jg_fast? this.htmRpc() : this.htm);	this.htm = '';}function pntCnvIhtm(){	this.cnv.innerHTML += this.htm;	this.htm = '';}function pntCnv(){	this.htm = '';}function mkDiv(x, y, w, h){	this.htm += '<div style="position:absolute;'+		'left:' + x + 'px;'+		'top:' + y + 'px;'+		'width:' + w + 'px;'+		'height:' + h + 'px;'+		'clip:rect(0,'+w+'px,'+h+'px,0);'+		'background-color:' + this.color +		(!jg_moz? ';overflow:hidden' : '')+		';"><\/div>';}function mkDivIe(x, y, w, h){	this.htm += '%%'+this.color+';'+x+';'+y+';'+w+';'+h+';';}function mkDivPrt(x, y, w, h){	this.htm += '<div style="position:absolute;'+		'border-left:' + w + 'px solid ' + this.color + ';'+		'left:' + x + 'px;'+		'top:' + y + 'px;'+		'width:0px;'+		'height:' + h + 'px;'+		'clip:rect(0,'+w+'px,'+h+'px,0);'+		'background-color:' + this.color +		(!jg_moz? ';overflow:hidden' : '')+		';"><\/div>';}function mkLyr(x, y, w, h){	this.htm += '<layer '+		'left="' + x + '" '+		'top="' + y + '" '+		'width="' + w + '" '+		'height="' + h + '" '+		'bgcolor="' + this.color + '"><\/layer>\n';}var regex =  /%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;function htmRpc(){	return this.htm.replace(		regex,		'<div style="overflow:hidden;position:absolute;background-color:'+		'$1;left:$2;top:$3;width:$4;height:$5"></div>\n');}function htmPrtRpc(){	return this.htm.replace(		regex,		'<div style="overflow:hidden;position:absolute;background-color:'+		'$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n');}function mkLin(x1, y1, x2, y2){	if (x1 > x2)	{		var _x2 = x2;		var _y2 = y2;		x2 = x1;		y2 = y1;		x1 = _x2;		y1 = _y2;	}	var dx = x2-x1, dy = Math.abs(y2-y1),	x = x1, y = y1,	yIncr = (y1 > y2)? -1 : 1;	if (dx >= dy)	{		var pr = dy<<1,		pru = pr - (dx<<1),		p = pr-dx,		ox = x;		while ((dx--) > 0)		{			++x;			if (p > 0)			{				this.mkDiv(ox, y, x-ox, 1);				y += yIncr;				p += pru;				ox = x;			}			else p += pr;		}		this.mkDiv(ox, y, x2-ox+1, 1);	}	else	{		var pr = dx<<1,		pru = pr - (dy<<1),		p = pr-dy,		oy = y;		if (y2 <= y1)		{			while ((dy--) > 0)			{				if (p > 0)				{					this.mkDiv(x++, y, 1, oy-y+1);					y += yIncr;					p += pru;					oy = y;				}				else				{					y += yIncr;					p += pr;				}			}			this.mkDiv(x2, y2, 1, oy-y2+1);		}		else		{			while ((dy--) > 0)			{				y += yIncr;				if (p > 0)				{					this.mkDiv(x++, oy, 1, y-oy);					p += pru;					oy = y;				}				else p += pr;			}			this.mkDiv(x2, oy, 1, y2-oy+1);		}	}}function mkLin2D(x1, y1, x2, y2){	if (x1 > x2)	{		var _x2 = x2;		var _y2 = y2;		x2 = x1;		y2 = y1;		x1 = _x2;		y1 = _y2;	}	var dx = x2-x1, dy = Math.abs(y2-y1),	x = x1, y = y1,	yIncr = (y1 > y2)? -1 : 1;	var s = this.stroke;	if (dx >= dy)	{		if (s-3 > 0)		{			var _s = (s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy) / dx;			_s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;		}		else var _s = s;		var ad = Math.ceil(s/2);		var pr = dy<<1,		pru = pr - (dx<<1),		p = pr-dx,		ox = x;		while ((dx--) > 0)		{			++x;			if (p > 0)			{				this.mkDiv(ox, y, x-ox+ad, _s);				y += yIncr;				p += pru;				ox = x;			}			else p += pr;		}		this.mkDiv(ox, y, x2-ox+ad+1, _s);	}	else	{		if (s-3 > 0)		{			var _s = (s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy) / dy;			_s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;		}		else var _s = s;		var ad = Math.round(s/2);		var pr = dx<<1,		pru = pr - (dy<<1),		p = pr-dy,		oy = y;		if (y2 <= y1)		{			++ad;			while ((dy--) > 0)			{				if (p > 0)				{					this.mkDiv(x++, y, _s, oy-y+ad);					y += yIncr;					p += pru;					oy = y;				}				else				{					y += yIncr;					p += pr;				}			}			this.mkDiv(x2, y2, _s, oy-y2+ad);		}		else		{			while ((dy--) > 0)			{				y += yIncr;				if (p > 0)				{					this.mkDiv(x++, oy, _s, y-oy+ad);					p += pru;					oy = y;				}				else p += pr;			}			this.mkDiv(x2, oy, _s, y2-oy+ad+1);		}	}}function mkLinDott(x1, y1, x2, y2){	if (x1 > x2)	{		var _x2 = x2;		var _y2 = y2;		x2 = x1;		y2 = y1;		x1 = _x2;		y1 = _y2;	}	var dx = x2-x1, dy = Math.abs(y2-y1),	x = x1, y = y1,	yIncr = (y1 > y2)? -1 : 1,	drw = true;	if (dx >= dy)	{		var pr = dy<<1,		pru = pr - (dx<<1),		p = pr-dx;		while ((dx--) > 0)		{			if (drw) this.mkDiv(x, y, 1, 1);			drw = !drw;			if (p > 0)			{				y += yIncr;				p += pru;			}			else p += pr;			++x;		}		if (drw) this.mkDiv(x, y, 1, 1);	}	else	{		var pr = dx<<1,		pru = pr - (dy<<1),		p = pr-dy;		while ((dy--) > 0)		{			if (drw) this.mkDiv(x, y, 1, 1);			drw = !drw;			y += yIncr;			if (p > 0)			{				++x;				p += pru;			}			else p += pr;		}		if (drw) this.mkDiv(x, y, 1, 1);	}}function mkOv(left, top, width, height){	var a = width>>1, b = height>>1,	wod = width&1, hod = (height&1)+1,	cx = left+a, cy = top+b,	x = 0, y = b,	ox = 0, oy = b,	aa = (a*a)<<1, bb = (b*b)<<1,	st = (aa>>1)*(1-(b<<1)) + bb,	tt = (bb>>1) - aa*((b<<1)-1),	w, h;	while (y > 0)	{		if (st < 0)		{			st += bb*((x<<1)+3);			tt += (bb<<1)*(++x);		}		else if (tt < 0)		{			st += bb*((x<<1)+3) - (aa<<1)*(y-1);			tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);			w = x-ox;			h = oy-y;			if (w&2 && h&2)			{				this.mkOvQds(cx, cy, -x+2, ox+wod, -oy, oy-1+hod, 1, 1);				this.mkOvQds(cx, cy, -x+1, x-1+wod, -y-1, y+hod, 1, 1);			}			else this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, oy-h+hod, w, h);			ox = x;			oy = y;		}		else		{			tt -= aa*((y<<1)-3);			st -= (aa<<1)*(--y);		}	}	this.mkDiv(cx-a, cy-oy, a-ox+1, (oy<<1)+hod);	this.mkDiv(cx+ox+wod, cy-oy, a-ox+1, (oy<<1)+hod);}function mkOv2D(left, top, width, height){	var s = this.stroke;	width += s-1;	height += s-1;	var a = width>>1, b = height>>1,	wod = width&1, hod = (height&1)+1,	cx = left+a, cy = top+b,	x = 0, y = b,	aa = (a*a)<<1, bb = (b*b)<<1,	st = (aa>>1)*(1-(b<<1)) + bb,	tt = (bb>>1) - aa*((b<<1)-1);	if (s-4 < 0 && (!(s-2) || width-51 > 0 && height-51 > 0))	{		var ox = 0, oy = b,		w, h,		pxl, pxr, pxt, pxb, pxw;		while (y > 0)		{			if (st < 0)			{				st += bb*((x<<1)+3);				tt += (bb<<1)*(++x);			}			else if (tt < 0)			{				st += bb*((x<<1)+3) - (aa<<1)*(y-1);				tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);				w = x-ox;				h = oy-y;				if (w-1)				{					pxw = w+1+(s&1);					h = s;				}				else if (h-1)				{					pxw = s;					h += 1+(s&1);				}				else pxw = h = s;				this.mkOvQds(cx, cy, -x+1, ox-pxw+w+wod, -oy, -h+oy+hod, pxw, h);				ox = x;				oy = y;			}			else			{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -