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