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