Code archives/BlitzPlus Gui/SLine

This code has been declared by its author to be Public Domain code.

Download source code

SLine by Snarty
(Posted 24 years ago)
This is the same SLine as the B3D/BB version, except it uses the new direct pixel method. Use need the "ConvertRGB()" function also.
Function SLineBP(stx#,sty#,enx#,eny#,r,g,b,Buffer)

	mvx#=Stx-enx:mvy#=sty-eny
	If mvx<0 mvx=-mvx
	If mvy<0 mvy=-mvy
	If mvy>mvx mv#=mvy Else mv#=mvx
	stpx#=(mvx/mv):If Stx>enx stpx=-stpx
	stpy#=(mvy/mv):If Sty>eny stpy=-stpy
	LockBuffer Buffer
	SL_Pitch=LockedPitch(Buffer)
	SL_Bank=LockedPixels(Buffer)
	SL_Mode=LockedFormat(Buffer)
	Col=ConvertRGB(r,g,b,SL_Mode)
	If SL_Mode=1 Or SL_Mode=2
		For nc=0 To Floor(mv)
			PokeShort SL_Bank,(Floor(stx)*2)+(Floor(sty)*SL_Pitch),Col
			stx=stx+stpx:sty=sty+stpy
		Next
	Else
		For nc=0 To Floor(mv)
			PokeInt SL_Bank,(Floor(sty)*SL_Pitch)+(Floor(stx)*4),Col
			stx=stx+stpx:sty=sty+stpy
		Next
	EndIf
	UnlockBuffer Buffer

End Function