All pastes #514010 Raw Edit

Untitled

public text v1 · immutable
#514010 ·published 2007-05-27 14:38 UTC
rendered paste body
	Method Render()
		Self.DrawGrid(Self.Style)
	EndMethod

	Method DrawGrid(style:Int,small:Int = False) 'WAS FUNCTION
		If Self.FullGrid
		        Self.GWLow = 0
		        Self.GWHi = Self.NumGPointsW
		        Self.GHHi = 0
		        Self.GHHi = Self.NumGPointsH
		Else
		        Self.GWLow = Max(Self.GXOff/Self.GridWidth,0)
		        Self.GWHi = Min(Self.GWLow+(Self.ScreenW/Self.GridWidth)+GRIDHILIGHT,Self.NumGPointsW)
		        Self.GHHi = Max(Self.GYOff/Self.GridHeight,0)
		        Self.GHHi = Min(Self.GHHi+(Self.ScreenH/Self.GridHeight)+GRIDHILIGHT,Self.NumGPointsH)
		EndIf
		If small
				 Self.GXOff = -Self.ScreenW/8
				 Self.GYOff = -Self.ScreenH/8
		        Self.GWLow = 0
		        Self.GWHi = -Self.GXOff/Self.GridWidth*6
		        Self.GHHi = 0
		        Self.GHHi = -Self.GYOff/Self.GridHeight*6
		EndIf
		If style > 7 Or style < 0 Then style = 0
		Select style
			Case 0
			        ' points, 1 colour
			        SetAlpha Abs(Self.Opacity)
			        SetColor Self.Red,Self.Green,Self.Blue
			        SetBlend LIGHTBLEND
			        DrawGridPoints()
			Case 1
			        ' points(bigger), solid
			        SetAlpha Abs(Self.Opacity)
			        SetColor Self.Red,Self.Green,Self.Blue
			        SetBlend LIGHTBLEND
			        DrawGridPointsC(Self.Opacity)
			Case 2
			        ' line quads, solid 
			        SetAlpha Abs(Self.Opacity)
			        SetColor Self.Red,Self.Green,Self.Blue
			        SetBlend LIGHTBLEND
			        DrawGridLines3(Self.Opacity)
			Case 3
					' dense mesh - solid
					SetAlpha Abs(Self.Opacity)
					SetColor Self.Red,Self.Green,Self.Blue
					SetBlend LIGHTBLEND
					DrawGridLines7b()
			Case 4
			        ' draw lines [original,blue,stretch]
			        SetAlpha Abs(Self.Opacity)
			        SetColor Self.Red,Self.Green,Self.Blue
			        SetBlend LIGHTBLEND
			        DrawGridLines6()
			Case 5
			        ' solid quads, 1 colour
			        SetAlpha Abs(Self.Opacity)
			        SetColor Self.Red,Self.Green,Self.Blue
			        SetBlend LIGHTBLEND
			        DrawGridLines2b()
			Case 6
			        ' draw line_strip [vcs like]
			        SetAlpha Abs(Self.Opacity)
			        SetColor Self.Red,Self.Green,Self.Blue
			        SetBlend LIGHTBLEND
			        DrawGridLines3b()
			Case 7
			        'no grid
		End Select
		SetScale 1,1
		SetAlpha 1
		SetLineWidth 2
	End Method

	Method DrawGridPoints()
    	Local a:Int,b:Int
        Local boldw:Int
        Local boldh:Int
        boldw = GRIDHILIGHT-(Self.GWLow Mod GRIDHILIGHT)
        boldh = GRIDHILIGHT-(Self.GHHi Mod GRIDHILIGHT)

        SetScale 1,1
        
		SetLineWidth 1
        
		Local TempText:String
		For a = Self.GWLow To Self.GWHi-1
        	For b = Self.GHLow To Self.GHHi-1
            	DrawRect Self.Grid[a,b].x-Self.GXOff, Self.Grid[a,b].y-Self.GYOff,2,2
            Next
        Next
        
		SetLineWidth 2
        
		For a = Self.GWLow+boldw To Self.GWHi-1 Step GRIDHILIGHT
        	For b = Self.GHLow To Self.GHHi-1
            	DrawRect Self.Grid[a,b].x-Self.GXOff, Self.Grid[a,b].y-Self.GYOff,3,3
            Next
        Next
        
		For a = Self.GWLow To Self.GWHi-1
        	For b = Self.GHLow+boldh To Self.GHHi-1 Step GRIDHILIGHT
            	DrawRect Self.Grid[a,b].x-Self.GXOff, Self.Grid[a,b].y-Self.GYOff,3,3
            Next
        Next

		'RuntimeError("MONKEY!")
	End Method

	Method DrawGridLines7b()
		Local a:Int,b:Int
		SetScale 1,1
		Local boldw:Int
		Local boldh:Int
		
		boldw = 2-(Self.GWLow Mod 2)
		boldh = 2-(Self.GHLow Mod 2)
		
		glLineWidth(2)
		For b = Self.GHLow+boldh-2 To Self.GHHi-1 Step 1
			glBegin GL_LINE_STRIP
			For a = Self.GWLow+boldw-2 To Self.GWHi Step 1
				If a>0 Then
				End If
				glVertex2f(Self.Grid[a,b].x-Self.GXOff,Self.Grid[a,b].y-Self.GYOff)
			Next
			glEnd
		Next
		For a = Self.GWLow+boldw-2 To Self.GWHi-1 Step 1
			glBegin GL_LINE_STRIP
			For b = Self.GHLow+boldh-2 To Self.GHHi Step 1
				glVertex2f(Self.Grid[a,b].x-Self.GXOff,Self.Grid[a,b].y-Self.GYOff)
			Next
			glEnd
		Next
		glLineWidth(1.5)
		Local xmax:Int=Self.GWHi,ymax:Int=Self.GHHi
		Local anz:Int=xmax+ymax,i:Int=0,j:Int=0,anzB:Int=0,xa:Int=0,ya:Int=ymax+1,x:Int=0,y:Int=0
		For i=0 To anz-1
			If i<=ymax Then
				anzB:+1
				ya:-1
			Else
				anzB=Min(ymax+1,xmax-xa)
				xa:+1
			End If
			x=xa
			y=ya
			glBegin GL_LINE_STRIP
			For j=1 To anzB
				glVertex2f(Self.Grid[x,y].x-Self.GXOff,Self.Grid[x,y].y-Self.GYOff)
				x:+1
				y:+1
			Next
			glEnd
		Next
		anzB=0;xa=-1;ya=0;x=0;y=0
		For i=0 To anz-1
			If i<=xmax Then
				anzB=Min(ymax+1,anzB+1)
				xa:+1
			Else
				anzB:-1
				ya:+1
			End If
			x=xa
			y=ya
			glBegin GL_LINE_STRIP
			For j=1 To anzB
				glVertex2f(Self.Grid[x,y].x-Self.GXOff,Self.Grid[x,y].y-Self.GYOff)
				x:-1
				y:+1
			Next
			glEnd
		Next		
	End Method