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

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

?? canvas.asp

?? 我之前寫的一個asp的cms比較簡單
?? ASP
?? 第 1 頁 / 共 3 頁
字號:
?<!--#include file="font.asp"-->
<%
' ***************************************************************
' ************************** ASPCanvas **************************
' ***************************************************************
'
'             Drawing and presentation object for ASP
'
'        Chris Read (aka Centurix/askdaquack/captainscript)
'
'    Thanks to Richard Deeming (www.trinet.co.uk) for improving 
'    the arc drawing algorithm
'    Thanks to Daniel Hasan for bezier curve adjustments
'    Thanks to Tony Stefano for his extra font packs
'
'                            Updated 23/02/2003
'
' ASPCanvas home: http://users.bigpond.net.au/mrjolly/
' ***************************************************************
'
' This file contains the following classes
' Canvas - Main GIF rendering class
' PixelStack - Used to store an order of pixels
' Point - A single pixel coord
' 
' This file contains the following utility functions
' MakeWord - Convert the value to a big-endian word
' MakeByte - Trim value to an 8 bit value
' Blue - Extract Blue value from RGB
' Green - Extract Green value from RGB
' Red - Extract Red value from RGB
' Low - Retrieve the low 8 bits from the value
' High - Retrieve the high 8 bits from the value
' ShiftLeft - Shift the value left x bits
' ShiftRight - Shift the value right x bits
'
' This class requires font.asp for text rendering support
'
' !!!Please read notes.htm for information on using this class!!!
'
' ***************************************************************
' ASPCanvas Copyright (c) 2002, Chris Read. All rights reserved.
' ***************************************************************
' Redistribution and use in source form, with or without modification, 
' are permitted provided that the following conditions are met:
'
' * Redistributions of source code must retain the above copyright notice, 
' this list of conditions and the following disclaimer.
'
' * All advertising materials mentioning features or use of this software 
' must display the following acknowledgement: This product includes software 
' developed by Chris Read with portions contributed by Richard Deeming, 
' Daniel Hasan and Tony Stefano.
'
' * The name of the author may not be used to endorse or promote products 
' derived from this software without specific prior written permission.
'
' THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
' IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
' OF MERCHANT ABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
' IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
' PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
' OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
' WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
' ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
' POSSIBILITY OF SUCH DAMAGE.
'
' ***************************************************************

' Constants for this class
public const MAX_WIDTH		= 65535
public const MAX_HEIGHT		= 65535
public const INIT_WIDTH		= 20
public const INIT_HEIGHT	= 20
public const FLAG_DEBUG		= false
public const CURRENT_VER	= "01.00.05"
public const PI				= 3.14159265 ' Roughly

Class Canvas
' Public data
	public GlobalColourTable()
	public LocalColourTable()
	public ForegroundColourIndex ' Current foreground pen
	public BackgroundColourIndex ' Current background pen
	public TransparentColourIndex ' Current transparency colour index
	public UseTransparency ' Boolean for writing transparency
	public GIF89a ' Write GIF89a data
	public Comment ' Image comment 255 characters max
	
' Private data
	private sImage
	private lWidth
	private lHeight
	private iBits
	private lColourResolution
	private bSortFlag
	private bytePixelAspectRatio
	private byteSeperator
	private byteGraphicControl
	private byteEndOfImage
	private lLeftPosition
	private lTopPosition
	private lLocalColourTableSize
	private lGlobalColourTableSize
	private lReserved
	private bInterlaceFlag
	private bLocalColourTableFlag
	private bGlobalColourTableFlag
	private lCodeSize
	private bTest
	
' ***************************************************************************
' ************************ Raster management functions **********************
' ***************************************************************************

	public property get Version()
		Version = CURRENT_VER
	end property

	' Get a specific pixel colour
	public property get Pixel(ByVal lX,ByVal lY)
		if lX <= lWidth and lX > 0 and lY <= lHeight and lY > 0 then
			Pixel = AscB(MidB(sImage,(lWidth * (lY - 1)) + lX,1))
		else ' Out of bounds, return zero
			Pixel = 0
		end if
	end property
	
	' Set a specific pixel colour, look at speeding this up somehow...
	public property let Pixel(ByVal lX,ByVal lY,lValue)
		Dim sTemp
		Dim lOffset
		
		lX = int(lX)
		lY = int(lY)
		lValue = int(lValue)

		lOffset = lWidth * (lY - 1)

		if lX <= lWidth and lY <= lHeight and lX > 0 and lY > 0 then ' Clipping
			' Set the pixel value at this point
			sImage = LeftB(sImage,lOffset + (lX - 1)) & ChrB(lValue) & RightB(sImage,LenB(sImage) - (lOffset + lX))
		end if		
	end property

	' Read only width and height, to change these, resize the image
	public property get Width()
		Width = lWidth
	end property

	public property get Height()
		Height = lHeight
	end property

	public sub Replace(ByVal lOldColour,ByVal lNewColour)
		Dim lTempX
		Dim lTempY
		
		for lTempy = 1 to lHeight
			for lTempX = 1 to lWidth
				if Pixel(lTempX,lTempY) = lOldColour then
					Pixel(lTempX,lTempY) = lNewColour
				end if
			next
		next
	end sub

	' Copy a section of the picture from one location to the other
	public sub Copy(ByVal lX1,ByVal lY1,ByVal lX2,ByVal lY2,ByVal lX3,ByVal lY3)
		Dim sCopy
		Dim lTemp1
		Dim lTemp2
		Dim lStartX
		Dim lStartY
		Dim lFinishX
		Dim lFinishY
		Dim lWidth
		Dim lHeight
		
		if lX1 > lX2 then
			lStartX = lX2
			lFinishX = lX1
		else
			lStartX = lX1
			lFinishX = lX2
		end if
		
		if lY1 > lY2 then
			lStartY = lY2
			lFinishY = lY1
		else
			lStartY = lY1
			lFinishY = lY2
		end if
		
		sCopy = ""
		
		lWidth = lFinishX - lStartX + 1
		lHeight = lFinishY - lStartY + 1

		for iTemp2 = lStartY to lFinishY
			for iTemp1 = lStartX to lFinishX
				sCopy = sCopy & ChrB(Pixel(iTemp1,iTemp2))
			next
		next
		
		for iTemp2 = 1 to lHeight
			for iTemp1 = 1 to lWidth
				Pixel(lX3 + iTemp1,lY3 + iTemp2) = AscB(MidB(sCopy,(iTemp2 - 1) * lWidth + iTemp1,1))
			next
		next
	end sub

	' Non-recursive flood fill, VBScript has a short stack (200 bytes) so recursion won't work
	public sub Flood(ByVal lX,ByVal lY)
		Dim aPixelStack
		Dim objPixel
		Dim lOldPixel

		Set aPixelStack = New PixelStack
		
		aPixelStack.Push lX,lY
		
		lOldPixel = Pixel(lX,lY)
		
		while(aPixelStack.Size > 0)
			Set objPixel = aPixelStack.Pop
			
			if objPixel.X >= 1 and objPixel.X <= lWidth and objPixel.Y >= 1 and objPixel.Y <= lHeight then
				if Pixel(objPixel.X,objPixel.Y) <> ForegroundColourIndex and Pixel(objPixel.X,objPixel.Y) = lOldPixel then
					Pixel(objPixel.X,objPixel.Y) = ForegroundColourIndex
					
					aPixelStack.Push objPixel.X + 1,objPixel.Y
					aPixelStack.Push objPixel.X - 1,objPixel.Y
					aPixelStack.Push objPixel.X,objPixel.Y + 1
					aPixelStack.Push objPixel.X,objPixel.Y - 1
				end if
			end if
		wend
	end sub


	public sub Polygon(aX,aY,bJoin)
		Dim iTemp
		Dim lUpper

		if UBound(aX) <> UBound(aY) then exit sub
		if UBound(aX) < 1 then exit sub ' Must be more than one point
		
		lUpper = UBound(aX) - 1
		
		' Draw a series of lines from arrays aX and aY
		for iTemp = 1 to lUpper
			Line aX(iTemp - 1),aY(iTemp - 1),aX(iTemp),aY(iTemp)
		next
		
		if bJoin then
			Line aX(lUpper),aY(lUpper),aX(0),aY(0)
		end if
	end sub

	' Easy as, err, rectangle?
	public sub PieSlice(lX,lY,lRadius,sinStartAngle,sinArcAngle,bFilled)
		Dim sinActualAngle
		Dim sinMidAngle
		Dim lX2
		Dim lY2
		Dim iTemp
		
		Arc lX,lY,lRadius,lRadius,sinStartAngle,sinArcAngle
		AngleLine lX,lY,lRadius,sinStartAngle
		sinActualAngle = sinStartAngle + sinArcAngle
		if sinActualAngle > 360 then
			sinActualAngle = sinActualAngle - 360
		end if
		AngleLine lX,lY,lRadius,sinActualAngle
		' Now pick a start flood point at the furthest point from the center
		' Divide the arc angle by 2
		sinMidAngle = sinStartAngle + (sinArcAngle / 2)
		
		if sinMidAngle > 360 then
			sinMidAngle = sinMidAngle - 360
		end if

		if bFilled then
			for iTemp = 1 to lRadius - 1
				lY2 = CInt(lY + (Sin(DegreesToRadians(sinMidAngle)) * iTemp))
				lX2 = CInt(lX + (Cos(DegreesToRadians(sinMidAngle)) * iTemp))

				Flood lX2,lY2
			next
		end if
	end sub

	public sub Bezier(lX1,lY1,lCX1,lCY1,lCX2,lCY2,lX2,lY2,lPointCount)
		Dim sinT
		dim lX,lY,lLastX,lLastY
		dim sinResolution
		
		if lPointCount = 0 then exit sub
		
		sinResolution = 1 / lPointCount
		
		sinT = 0
		
		lLastX = lX1
		lLastY = lY1
		
		while sinT <= 1
			lX = int(((sinT^3) * -1 + (sinT^2) * 3 + sinT * -3 + 1) * lX1 + ((sinT^3) *  3 + (sinT^2) *-6 + sinT *  3) * lCX1 + ((sinT^3) * -3 + (sinT^2) * 3) * lCX2 + (sinT^3) * lX2)
			lY = int(((sinT^3) * -1 + (sinT^2) * 3 + sinT * -3 + 1) * lY1 + ((sinT^3) *  3 + (sinT^2) *-6 + sinT *  3) * lCY1 + ((sinT^3) * -3 + (sinT^2) * 3) * lCY2 + (sinT^3) * lY2)

			Line lLastX,lLastY,lX,lY
			
			lLastX = lX
			lLastY = lY
			
			sinT = sinT + sinResolution
		wend

		Line lLastX,lLastY,lX2,lY2
		
	end sub

	' ArcPixel Kindly donated by Richard Deeming (www.trinet.co.uk)
	Private Sub ArcPixel(lX, lY, ltX, ltY, sinStart, sinEnd)
		Dim dAngle
	    
	    If ltX = 0 Then
	        dAngle = Sgn(ltY) * PI / 2
	    ElseIf ltX < 0 And ltY < 0 Then
	        dAngle = PI + Atn(ltY / ltX)
	    ElseIf ltX < 0 Then
	        dAngle = PI - Atn(-ltY / ltX)
	    ElseIf ltY < 0 Then
	        dAngle = 2 * PI - Atn(-ltY / ltX)
	    Else
	        dAngle = Atn(ltY / ltX)
	    End If
	    
	    If dAngle < 0 Then dAngle = 2 * PI + dAngle

		' Compensation for radii spanning over 0 degree marker
		if sinEnd > DegreesToRadians(360) and dAngle < (sinEnd - DegreesToRadians(360)) then
			dAngle = dAngle + DegreesToRadians(360)
		end if
		
	    If sinStart < sinEnd And (dAngle > sinStart And dAngle < sinEnd) Then
	        'This is the "corrected" angle
	        'To change back, change the minus to a plus
	        Pixel(lX + ltX, lY + ltY) = ForegroundColourIndex
	    End If
	End Sub
	 
	' Arc Kindly donated by Richard Deeming (www.trinet.co.uk), vast improvement on the
	' previously kludgy Arc function.
	Public Sub Arc(ByVal lX, ByVal lY, ByVal lRadiusX, ByVal lRadiusY, ByVal sinStartAngle, ByVal sinArcAngle)
		' Draw an arc at point lX,lY with radius lRadius
		' running from sinStartAngle degrees for sinArcAngle degrees
		Dim lAlpha, lBeta, S, T, lTempX, lTempY
		Dim dStart, dEnd
	    
	    dStart = DegreesToRadians(sinStartAngle)
	    dEnd = dStart + DegreesToRadians(sinArcAngle)
	    
	    lAlpha = lRadiusX * lRadiusX
	    lBeta = lRadiusY * lRadiusY
	    lTempX = 0
	    lTempY = lRadiusY
	    S = lAlpha * (1 - 2 * lRadiusY) + 2 * lBeta
	    T = lBeta - 2 * lAlpha * (2 * lRadiusY - 1)
	    ArcPixel lX, lY, lTempX, lTempY, dStart, dEnd
	    ArcPixel lX, lY, -lTempX, lTempY, dStart, dEnd
	    ArcPixel lX, lY, lTempX, -lTempY, dStart, dEnd
	    ArcPixel lX, lY, -lTempX, -lTempY, dStart, dEnd

	    Do
	        If S < 0 Then
	            S = S + 2 * lBeta * (2 * lTempX + 3)
	            T = T + 4 * lBeta * (lTempX + 1)
	            lTempX = lTempX + 1
	        ElseIf T < 0 Then
	            S = S + 2 * lBeta * (2 * lTempX + 3) - 4 * lAlpha * (lTempY - 1)
	            T = T + 4 * lBeta * (lTempX + 1) - 2 * lAlpha * (2 * lTempY - 3)
	            lTempX = lTempX + 1
	            lTempY = lTempY - 1
	        Else
	            S = S - 4 * lAlpha * (lTempY - 1)
	            T = T - 2 * lAlpha * (2 * lTempY - 3)
	            lTempY = lTempY - 1
	        End If

	        ArcPixel lX, lY, lTempX, lTempY, dStart, dEnd
	        ArcPixel lX, lY, -lTempX, lTempY, dStart, dEnd
	        ArcPixel lX, lY, lTempX, -lTempY, dStart, dEnd
	        ArcPixel lX, lY, -lTempX, -lTempY, dStart, dEnd

	    Loop While lTempY > 0
	End Sub

	public sub AngleLine(ByVal lX,ByVal lY,ByVal lRadius,ByVal sinAngle)
		' Draw a line at an angle
		' Angles start from the top vertical and work clockwise
		' Work out the destination defined by length and angle
		Dim lX2
		Dim lY2
		
		lY2 = (Sin(DegreesToRadians(sinAngle)) * lRadius)
		lX2 = (Cos(DegreesToRadians(sinAngle)) * lRadius)
		
		Line lX,lY,lX + lX2,lY + lY2
	end sub

	' Bresenham line algorithm, this is pretty quick, only uses point to point to avoid the
	' mid-point problem
	public sub Line(ByVal lX1,ByVal lY1,ByVal lX2,ByVal lY2)
		Dim lDX
		Dim lDY
		Dim lXIncrement
		Dim lYIncrement
		Dim lDPr
		Dim lDPru
		Dim lP
		
		lDX = Abs(lX2 - lX1)
		lDY = Abs(lY2 - lY1)
		
		if lX1 > lX2 then
			lXIncrement = -1
		else
			lXIncrement = 1
		end if
		
		if lY1 > lY2 then
			lYIncrement = -1
		else
			lYIncrement = 1
		end if
		
		if lDX >= lDY then
			lDPr = ShiftLeft(lDY,1)
			lDPru = lDPr - ShiftLeft(lDX,1)
			lP = lDPr - lDX
			
			while lDX >= 0
				Pixel(lX1,lY1) = ForegroundColourIndex
				if lP > 0 then
					lX1 = lX1 + lXIncrement
					lY1 = lY1 + lYIncrement
					lP = lP + lDPru
				else
					lX1 = lX1 + lXIncrement
					lP = lP + lDPr

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜日本在线观看| 宅男在线国产精品| 国产精品视频免费看| 国产精品1区2区3区在线观看| 在线播放中文一区| 午夜欧美2019年伦理| 日韩视频免费直播| 久草在线在线精品观看| 91精品国产一区二区| 97精品国产露脸对白| 香蕉久久一区二区不卡无毒影院| 欧美一区二区福利视频| 国产一区二区三区久久久| 亚洲福利电影网| 国产无人区一区二区三区| av电影在线观看不卡 | 欧洲国内综合视频| 无码av免费一区二区三区试看 | 欧美老女人在线| 成人免费视频一区| 精品无人码麻豆乱码1区2区 | 日韩一级完整毛片| 色综合视频在线观看| 日韩国产在线观看| 国产亚洲短视频| 日韩午夜在线观看视频| 色综合久久99| 国产一区91精品张津瑜| 国产精品水嫩水嫩| 精品国产乱码久久久久久夜甘婷婷| 成人国产精品免费| 韩国av一区二区三区四区| 欧美激情在线看| 久久这里只精品最新地址| 91麻豆精品久久久久蜜臀| 色综合色狠狠综合色| 国产一区在线观看麻豆| 亚洲444eee在线观看| 亚洲成人av电影在线| 精品国产免费人成在线观看| 3d成人h动漫网站入口| 欧美日韩大陆一区二区| 在线观看成人免费视频| 91论坛在线播放| 国产·精品毛片| 国产传媒一区在线| 九色|91porny| 国产在线精品一区二区三区不卡| 亚洲国产成人av| 天天爽夜夜爽夜夜爽精品视频| 无码av免费一区二区三区试看| 亚洲国产视频直播| 亚洲国产精品综合小说图片区| 亚洲风情在线资源站| 国产一区二区三区在线观看免费 | 蜜桃久久精品一区二区| 国产福利91精品| av电影一区二区| 在线观看亚洲a| 欧美一区二区国产| 亚洲欧洲日本在线| 久久国产精品99久久久久久老狼| 国产呦精品一区二区三区网站| 成人午夜电影网站| 成人国产精品免费观看动漫| 一本久久a久久免费精品不卡| 91亚洲午夜精品久久久久久| 欧美色图激情小说| 欧美一区二区三区喷汁尤物| 亚洲国产经典视频| 久久精品99国产精品日本| 成人免费毛片app| 欧美一区国产二区| 亚洲一区二区视频| 一本久道久久综合中文字幕| 国产亚洲一区二区三区在线观看| 亚洲三级久久久| 国产一区二区女| 制服丝袜在线91| 亚洲成人精品影院| 欧美日本一区二区在线观看| 尤物av一区二区| 91麻豆自制传媒国产之光| 日本一区免费视频| 久久国产乱子精品免费女| 日韩精品一区二区三区swag | 中文字幕日韩一区二区| 国产一区二区三区香蕉| 亚洲免费视频中文字幕| 欧美日韩在线播放一区| 日本不卡视频在线观看| 欧美久久久影院| 日韩成人一区二区三区在线观看| a在线欧美一区| 美国十次综合导航| 国产精品成人在线观看| 99精品黄色片免费大全| 午夜精品久久久久影视| 欧美欧美欧美欧美| 久久99热99| 亚洲婷婷综合久久一本伊一区| 欧美视频完全免费看| 麻豆91精品91久久久的内涵| 久久综合九色综合欧美就去吻| 三级欧美韩日大片在线看| 日韩精品一区二区三区中文不卡| 国产一区不卡视频| 激情五月婷婷综合| 洋洋av久久久久久久一区| 国产亚洲人成网站| 欧美在线观看一二区| 肉色丝袜一区二区| 亚洲图片你懂的| 日韩毛片高清在线播放| 久久久国产精品麻豆| a美女胸又www黄视频久久| 日本aⅴ免费视频一区二区三区| 国产女同性恋一区二区| 91麻豆精品国产91久久久| 成人在线综合网站| 色狠狠色噜噜噜综合网| 99精品国产91久久久久久| 国产精品996| 国产成人午夜电影网| 久久se精品一区精品二区| 婷婷开心激情综合| 日韩av电影一区| 精品亚洲aⅴ乱码一区二区三区| 久久99国产精品免费| 国产成人综合在线观看| 色综合网色综合| 欧美性xxxxxxxx| 91精品国产欧美一区二区18| 色老综合老女人久久久| 成人激情视频网站| 在线不卡中文字幕| 欧美国产精品中文字幕| 综合久久久久久久| 青青草国产成人av片免费| 国模套图日韩精品一区二区| 国产成人在线影院| 精品免费视频.| 国产女人水真多18毛片18精品视频 | 久久久精品一品道一区| 日韩欧美黄色影院| 午夜久久久影院| 99视频有精品| 日韩精品资源二区在线| 亚洲欧洲制服丝袜| 久久se精品一区二区| 99久久婷婷国产| 日韩欧美亚洲另类制服综合在线| 国产精品久久久久一区二区三区 | 欧美日韩国产系列| 国产精品美女久久久久久久网站| 亚洲不卡av一区二区三区| 99久久精品99国产精品| 国产精品护士白丝一区av| 欧美aaa在线| 欧美日韩黄视频| 国产精品国产三级国产aⅴ中文| 极品少妇xxxx精品少妇| 欧美日韩一级片网站| 国产拍欧美日韩视频二区| 福利电影一区二区| 国产欧美一区二区在线| 国产麻豆精品在线观看| 久久综合狠狠综合久久综合88 | 99在线精品观看| 天天av天天翘天天综合网| 欧美视频精品在线| 日韩福利电影在线| 精品成人私密视频| 国产福利一区在线观看| 国产亚洲污的网站| 成人免费观看视频| 亚洲大片一区二区三区| 欧美美女一区二区在线观看| 久久99热狠狠色一区二区| 国产午夜精品一区二区| 白白色 亚洲乱淫| 亚洲国产乱码最新视频| 69久久夜色精品国产69蝌蚪网| 国产精品一区二区久激情瑜伽| 久久一区二区视频| 丁香激情综合国产| 亚洲欧美一区二区三区孕妇| 欧美在线观看视频一区二区| 精品在线你懂的| 亚洲午夜精品在线| 国产日产欧美一区二区视频| 欧美伊人精品成人久久综合97| 久久激情综合网| 午夜影院在线观看欧美| 精品国产1区2区3区| 成人理论电影网| 亚洲一区二区在线播放相泽| 国产视频一区二区在线| 欧美一区二区三区在线视频| jizz一区二区|