Bladeren bron

Update glmax2d source to conform to sdl.sdlglmax2d source

Ronny Otto 2 jaren geleden
bovenliggende
commit
5c7a62b7ab
1 gewijzigde bestanden met toevoegingen van 232 en 188 verwijderingen
  1. 232 188
      glmax2d.mod/glmax2d.bmx

+ 232 - 188
glmax2d.mod/glmax2d.bmx

@@ -52,10 +52,10 @@ Global _CurrentRenderImageFrame:TGLRenderImageFrame
 Global _GLScissor_BMaxViewport:Rect = New Rect
 
 'Naughty!
-Const GL_BGR:Int=$80E0
-Const GL_BGRA:Int=$80E1
-Const GL_CLAMP_TO_EDGE:Int=$812F
-Const GL_CLAMP_TO_BORDER:Int=$812D
+Const GL_BGR:Int = $80E0
+Const GL_BGRA:Int = $80E1
+Const GL_CLAMP_TO_EDGE:Int = $812F
+Const GL_CLAMP_TO_BORDER:Int = $812D
 
 Global ix:Float,iy:Float,jx:Float,jy:Float
 Global color4ub:Byte[4]
@@ -65,28 +65,28 @@ Global state_boundtex:Int
 Global state_texenabled:Int
 
 Function BindTex( name:Int )
-	If name=state_boundtex Return
-	glBindTexture GL_TEXTURE_2D,name
-	state_boundtex=name
+	If name = state_boundtex Return
+	glBindTexture( GL_TEXTURE_2D, name )
+	state_boundtex = name
 End Function
 
 Function EnableTex( name:Int )
-	BindTex name
+	BindTex( name )
 	If state_texenabled Return
-	glEnable GL_TEXTURE_2D
-	state_texenabled=True
+	glEnable( GL_TEXTURE_2D )
+	state_texenabled = True
 End Function
 
 Function DisableTex()
 	If Not state_texenabled Return
-	glDisable GL_TEXTURE_2D
-	state_texenabled=False
+	glDisable( GL_TEXTURE_2D )
+	state_texenabled = False
 End Function
 
 Function Pow2Size:Int( n:Int )
-	Local t:Int=1
-	While t<n
-		t:*2
+	Local t:Int = 1
+	While t < n
+		t :* 2
 	Wend
 	Return t
 End Function
@@ -103,11 +103,11 @@ End Function
 
 Function CreateTex:Int( width:Int,height:Int,flags:Int,pixmap:TPixmap )
 	If pixmap.dds_fmt<>0 Then Return pixmap.tex_name ' if dds texture already exists
-	
+
 	'alloc new tex
 	Local name:Int
 	glGenTextures( 1, Varptr name )
-	
+
 	'flush dead texs
 	If dead_tex_seq=GraphicsSeq
 		Local n:Int = dead_texs.RemoveLast()
@@ -156,29 +156,29 @@ Function CreateTex:Int( width:Int,height:Int,flags:Int,pixmap:TPixmap )
 End Function
 
 'NOTE: Assumes a bound texture.
-Function UploadTex( pixmap:TPixmap,flags:Int )
+Function UploadTex( pixmap:TPixmap, flags:Int )
 	Local mip_level:Int
 	If pixmap.dds_fmt <> 0 Then Return ' if dds texture already exists
 	Repeat
 		glPixelStorei GL_UNPACK_ROW_LENGTH,pixmap.pitch/BytesPerPixel[pixmap.format]
 		glTexSubImage2D GL_TEXTURE_2D,mip_level,0,0,pixmap.width,pixmap.height,GL_RGBA,GL_UNSIGNED_BYTE,pixmap.pixels
 
-		If Not (flags & MIPMAPPEDIMAGE) Then Exit
-		If pixmap.width>1 And pixmap.height>1
-			pixmap=ResizePixmap( pixmap,pixmap.width/2,pixmap.height/2 )
-		Else If pixmap.width>1
-			pixmap=ResizePixmap( pixmap,pixmap.width/2,pixmap.height )
-		Else If pixmap.height>1
-			pixmap=ResizePixmap( pixmap,pixmap.width,pixmap.height/2 )
+		If Not ( flags & MIPMAPPEDIMAGE ) Then Exit
+		If pixmap.width > 1 And pixmap.height > 1
+			pixmap = ResizePixmap( pixmap, pixmap.width / 2, pixmap.height / 2 )
+		Else If pixmap.width > 1
+			pixmap = ResizePixmap( pixmap, pixmap.width / 2, pixmap.height )
+		Else If pixmap.height > 1
+			pixmap = ResizePixmap( pixmap, pixmap.width, pixmap.height / 2 )
 		Else
 			Exit
 		EndIf
-		mip_level:+1
+		mip_level :+ 1
 	Forever
 	glPixelStorei GL_UNPACK_ROW_LENGTH,0
 End Function
 
-Function AdjustTexSize( width:Int Var,height:Int Var )
+Function AdjustTexSize( width:Int Var, height:Int Var )
 	'calc texture size
 	width = Pow2Size( width )
 	height = Pow2Size( height )
@@ -187,24 +187,24 @@ Function AdjustTexSize( width:Int Var,height:Int Var )
 		glTexImage2D GL_PROXY_TEXTURE_2D,0,4,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,Null
 		glGetTexLevelParameteriv GL_PROXY_TEXTURE_2D,0,GL_TEXTURE_WIDTH,Varptr t
 		If t Then Return
-		If width=1 And height=1 Then RuntimeError "Unable to calculate tex size"
-		If width>1 Then width :/ 2
-		If height>1 Then height :/ 2
+		If width = 1 And height = 1 Then RuntimeError "Unable to calculate tex size"
+		If width > 1 width :/ 2
+		If height > 1 height :/ 2
 	Forever
 End Function
 
 Type TDynamicArray
 
 	Private
-	
+
 	Field data:Int Ptr
 	Field size:Size_T
 	Field capacity:Size_T
-	
+
 	Field guard:TMutex
-	
+
 	Public
-	
+
 	Method New(initialCapacity:Int = 8)
 		capacity = initialCapacity
 		data = malloc_(Size_T(initialCapacity * 4))
@@ -221,25 +221,25 @@ Type TDynamicArray
 			End If
 			data = d
 		End If
-		
+
 		data[size] = value
 		size :+ 1
 		guard.Unlock()
 	End Method
-	
+
 	Method RemoveLast:Int()
 		guard.Lock()
 		Local v:Int
-		
+
 		If size > 0 Then
 			size :- 1
 			v = data[size]
 		Else
 			v = $FFFFFFFF
 		End If
-		
+
 		guard.Unlock()
-		
+
 		Return v
 	End Method
 
@@ -247,36 +247,35 @@ Type TDynamicArray
 		free_(data)
 		CloseMutex(guard)
 	End Method
-	
+
 End Type
 
 Global glewIsInit:Int
 
 Public
 
-Type TGLImageFrame Extends TImageFrame
 
-	Field u0:Float,v0:Float,u1:Float,v1:Float,uscale:Float,vscale:Float
+Type TGLImageFrame Extends TImageFrame
+	Field u0:Float, v0:Float, u1:Float, v1:Float, uscale:Float, vscale:Float
+	Field name:Int, seq:Int
 
-	Field name:Int,seq:Int
-	
 	Method New()
-		seq=GraphicsSeq
+		seq = GraphicsSeq
 	End Method
-	
+
 	Method Delete()
-		If Not seq Return
-		DeleteTex name,seq
-		seq=0
+		If Not seq Then Return
+		DeleteTex( name, seq )
+		seq = 0
 	End Method
 	
 	Method Draw( x0:Float,y0:Float,x1:Float,y1:Float,tx:Float,ty:Float,sx:Float,sy:Float,sw:Float,sh:Float ) Override
 		Assert seq=GraphicsSeq Else "Image does not exist"
 
-		Local u0:Float=sx * uscale
-		Local v0:Float=sy * vscale
-		Local u1:Float=(sx+sw) * uscale
-		Local v1:Float=(sy+sh) * vscale
+		Local u0:Float = sx * uscale
+		Local v0:Float = sy * vscale
+		Local u1:Float = (sx + sw) * uscale
+		Local v1:Float = (sy + sh) * vscale
 
 		EnableTex name
 		glBegin GL_QUADS
@@ -291,52 +290,52 @@ Type TGLImageFrame Extends TImageFrame
 		glEnd
 	End Method
 	
-	Function CreateFromPixmap:TGLImageFrame( src:TPixmap,flags:Int )
+	Function CreateFromPixmap:TGLImageFrame( src:TPixmap, flags:Int )
 		'determine tex size
-		Local tex_w:Int=src.width
-		Local tex_h:Int=src.height
-		AdjustTexSize tex_w,tex_h
+		Local tex_w:Int = src.width
+		Local tex_h:Int = src.height
+		AdjustTexSize( tex_w, tex_h )
 		
 		'make sure pixmap fits texture
-		Local width:Int=Min( src.width,tex_w )
-		Local height:Int=Min( src.height,tex_h )
-		If src.width<>width Or src.height<>height src=ResizePixmap( src,width,height )
+		Local width:Int = Min( src.width, tex_w )
+		Local height:Int = Min( src.height, tex_h )
+		If src.width <> width Or src.height <> height Then src = ResizePixmap( src, width, height )
 
 		'create texture pixmap
-		Local tex:TPixmap=src
+		Local tex:TPixmap = src
 		
 		'"smear" right/bottom edges if necessary
-		If width<tex_w Or height<tex_h
-			tex=TPixmap.Create( tex_w,tex_h,PF_RGBA8888 )
-			tex.Paste src,0,0
-			If width<tex_w
-				tex.Paste src.Window( width-1,0,1,height ),width,0
+		If width < tex_w Or height < tex_h
+			tex = TPixmap.Create( tex_w, tex_h, PF_RGBA8888 )
+			tex.Paste( src, 0, 0 )
+			If width < tex_w
+				tex.Paste( src.Window( width - 1, 0, 1, height ), width, 0 )
 			EndIf
-			If height<tex_h
-				tex.Paste src.Window( 0,height-1,width,1 ),0,height
-				If width<tex_w 
-					tex.Paste src.Window( width-1,height-1,1,1 ),width,height
+			If height < tex_h
+				tex.Paste( src.Window( 0, height - 1, width, 1 ), 0, height )
+				If width < tex_w 
+					tex.Paste( src.Window( width - 1, height - 1, 1, 1 ), width, height )
 				EndIf
 			EndIf
 		Else
-			If tex.dds_fmt=0 ' not dds
-				If tex.format<>PF_RGBA8888 tex=tex.Convert( PF_RGBA8888 )
+			If tex.dds_fmt = 0 ' not dds
+				If tex.format <> PF_RGBA8888 Then tex = tex.Convert( PF_RGBA8888 )
 			EndIf
 		EndIf
 		
 		'create tex
-		Local name:Int=CreateTex( tex_w,tex_h,flags,tex )
+		Local name:Int = CreateTex( tex_w, tex_h, flags, tex )
 		
 		'upload it
-		UploadTex tex,flags
+		UploadTex( tex, flags )
 
 		'done!
-		Local frame:TGLImageFrame=New TGLImageFrame
-		frame.name=name
-		frame.uscale=1.0/tex_w
-		frame.vscale=1.0/tex_h
-		frame.u1=width * frame.uscale
-		frame.v1=height * frame.vscale
+		Local frame:TGLImageFrame = New TGLImageFrame
+		frame.name = name
+		frame.uscale = 1.0 / tex_w
+		frame.vscale = 1.0 / tex_h
+		frame.u1 = width * frame.uscale
+		frame.v1 = height * frame.vscale
 		Return frame
 
 	End Function
@@ -355,7 +354,7 @@ Type TGLRenderImageFrame Extends TGLImageFrame
 		Local u0:Float = sx * uscale
 		Local v0:Float = (sy + sh) * vscale
 		Local u1:Float = (sx + sw) * uscale
-		Local v1:Float = sy * vscale	
+		Local v1:Float = sy * vscale
 		
 		EnableTex name
 		glBegin GL_QUADS
@@ -433,7 +432,7 @@ EndType
 Type TGLMax2DDriver Extends TMax2DDriver
 	Method Create:TGLMax2DDriver()
 		If Not GLGraphicsDriver() Return Null
-		
+	
 		Return Self
 	End Method
 
@@ -443,12 +442,12 @@ Type TGLMax2DDriver Extends TMax2DDriver
 	End Method
 	
 	Method AttachGraphics:TMax2DGraphics( widget:Byte Ptr,flags:Long ) Override
-		Local g:TGLGraphics=GLGraphicsDriver().AttachGraphics( widget,flags )
+		Local g:TGLGraphics = GLGraphicsDriver().AttachGraphics( widget,flags )
 		If g Return TMax2DGraphics.Create( g,Self )
 	End Method
 	
 	Method CreateGraphics:TMax2DGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Long,x:Int,y:Int ) Override
-		Local g:TGLGraphics=GLGraphicsDriver().CreateGraphics( width,height,depth,hertz,flags,x,y )
+		Local g:TGLGraphics = GLGraphicsDriver().CreateGraphics( width,height,depth,hertz,flags,x,y )
 		If g Return TMax2DGraphics.Create( g,Self )
 	End Method
 	
@@ -459,8 +458,8 @@ Type TGLMax2DDriver Extends TMax2DDriver
 			Return
 		EndIf
 	
-		Local t:TMax2DGraphics=TMax2DGraphics(g)
-		Assert t And TGLGraphics(t._backendGraphics)
+		Local t:TMax2DGraphics = TMax2DGraphics( g )
+		Assert t And TGLGraphics( t._backendGraphics )
 
 		GLGraphicsDriver().SetGraphics(t._backendGraphics)
 
@@ -470,13 +469,14 @@ Type TGLMax2DDriver Extends TMax2DDriver
 	End Method
 	
 	Method ResetGLContext( g:TGraphics )
-		Local gw:Int,gh:Int,gd:Int,gr:Int,gf:Long,gx:Int,gy:Int
-		g.GetSettings gw,gh,gd,gr,gf,gx,gy
+		Local gw:Int, gh:Int, gd:Int, gr:Int, gf:Long, gx:Int, gy:Int
+		g.GetSettings( gw, gh, gd, gr, gf, gx, gy )
 		
-		state_blend=0
-		state_boundtex=0
-		state_texenabled=0
-		glDisable GL_TEXTURE_2D
+		state_blend = 0
+		state_boundtex = 0
+		state_texenabled = 0
+		glDisable( GL_TEXTURE_2D )
+
 		glMatrixMode GL_PROJECTION
 		glLoadIdentity
 		glOrtho 0,gw,gh,0,-1,1
@@ -491,7 +491,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 	
 		' cache it
 		_BackBufferRenderImageFrame = BackBufferRenderImageFrame
-		_CurrentRenderImageFrame = _BackBufferRenderImageFrame 
+		_CurrentRenderImageFrame = _BackBufferRenderImageFrame
 	End Method
 	
 	Method Flip:Int( sync:Int ) Override
@@ -501,56 +501,58 @@ Type TGLMax2DDriver Extends TMax2DDriver
 	Method ToString:String() Override
 		Return "OpenGL"
 	End Method
-	
-	Method CreateFrameFromPixmap:TGLImageFrame( pixmap:TPixmap,flags:Int ) Override
-		Return TGLImageFrame.CreateFromPixmap( pixmap,flags )
+
+	Method CreateFrameFromPixmap:TGLImageFrame( pixmap:TPixmap, flags:Int ) Override
+		Return TGLImageFrame.CreateFromPixmap( pixmap, flags )
 	End Method
 
 	Method SetBlend( blend:Int ) Override
-		If blend=state_blend Return
-		state_blend=blend
+		If state_blend = blend Return
+
+		state_blend = blend
+
 		Select blend
 		Case MASKBLEND
-			glDisable GL_BLEND
-			glEnable GL_ALPHA_TEST
-			glAlphaFunc GL_GEQUAL,.5
+			glDisable( GL_BLEND )
+			glEnable( GL_ALPHA_TEST )
+			glAlphaFunc( GL_GEQUAL, 0.5 )
 		Case SOLIDBLEND
-			glDisable GL_BLEND
-			glDisable GL_ALPHA_TEST
+			glDisable( GL_BLEND )
+			glDisable( GL_ALPHA_TEST )
 		Case ALPHABLEND
-			glEnable GL_BLEND
-			glBlendFunc GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA
-			glDisable GL_ALPHA_TEST
+			glEnable( GL_BLEND )
+			glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA )
+			glDisable( GL_ALPHA_TEST )
 		Case LIGHTBLEND
-			glEnable GL_BLEND
-			glBlendFunc GL_SRC_ALPHA,GL_ONE
-			glDisable GL_ALPHA_TEST
+			glEnable( GL_BLEND )
+			glBlendFunc( GL_SRC_ALPHA, GL_ONE )
+			glDisable( GL_ALPHA_TEST )
 		Case SHADEBLEND
-			glEnable GL_BLEND
-			glBlendFunc GL_DST_COLOR,GL_ZERO
-			glDisable GL_ALPHA_TEST
+			glEnable( GL_BLEND )
+			glBlendFunc( GL_DST_COLOR, GL_ZERO )
+			glDisable( GL_ALPHA_TEST )
 		Default
-			glDisable GL_BLEND
-			glDisable GL_ALPHA_TEST
+			glDisable( GL_BLEND )
+			glDisable( GL_ALPHA_TEST )
 		End Select
 	End Method
 
 	Method SetAlpha( alpha:Float ) Override
-		If alpha>1.0 alpha=1.0
-		If alpha<0.0 alpha=0.0
-		color4ub[3]=alpha*255
-		glColor4ubv color4ub
+		If alpha > 1.0 Then alpha = 1.0
+		If alpha < 0.0 Then alpha = 0.0
+		color4ub[3] = alpha * 255
+		glColor4ubv( color4ub )
 	End Method
 
 	Method SetLineWidth( width:Float ) Override
-		glLineWidth width
+		glLineWidth( width )
 	End Method
 	
 	Method SetColor( red:Int,green:Int,blue:Int ) Override
-		color4ub[0]=Min(Max(red,0),255)
-		color4ub[1]=Min(Max(green,0),255)
-		color4ub[2]=Min(Max(blue,0),255)
-		glColor4ubv color4ub
+		color4ub[0] = Min( Max( red, 0 ), 255 )
+		color4ub[1] = Min( Max( green, 0 ), 255 )
+		color4ub[2] = Min( Max( blue, 0 ), 255 )
+		glColor4ubv( color4ub )
 	End Method
 
 	Method SetClsColor( red:Int, green:Int, blue:Int, alpha:Float ) Override
@@ -561,7 +563,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		glClearColor(red/255.0, green/255.0, blue/255.0, alpha)
 	End Method
 	
-	Method SetViewport( x:Int,y:Int,w:Int,h:Int ) Override
+	Method SetViewport( x:Int, y:Int, w:Int, h:Int ) Override
 		_GLScissor_BMaxViewport.x = x
 		_GLScissor_BMaxViewport.y = y
 		_GLScissor_BMaxViewport.width = w
@@ -569,40 +571,40 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		SetScissor(x, y, w, h)
 	End Method
 
-	Method SetTransform( xx:Float,xy:Float,yx:Float,yy:Float ) Override
-		ix=xx
-		iy=xy
-		jx=yx
-		jy=yy
+	Method SetTransform( xx:Float, xy:Float, yx:Float, yy:Float ) Override
+		ix = xx
+		iy = xy
+		jx = yx
+		jy = yy
 	End Method
 
 	Method Cls() Override
-		glClear GL_COLOR_BUFFER_BIT
+		glClear( GL_COLOR_BUFFER_BIT )
 	End Method
 
-	Method Plot( x:Float,y:Float ) Override
-		DisableTex
-		glBegin GL_POINTS
-		glVertex2f x+.5,y+.5
-		glEnd
+	Method Plot( x:Float, y:Float ) Override
+		DisableTex()
+		glBegin( GL_POINTS )
+		glVertex2f( x+.5,y+.5 )
+		glEnd()
 	End Method
 
-	Method DrawLine( x0:Float,y0:Float,x1:Float,y1:Float,tx:Float,ty:Float ) Override
-		DisableTex
-		glBegin GL_LINES
-		glVertex2f x0*ix+y0*iy+tx+.5,x0*jx+y0*jy+ty+.5
-		glVertex2f x1*ix+y1*iy+tx+.5,x1*jx+y1*jy+ty+.5
-		glEnd
+	Method DrawLine( x0:Float, y0:Float, x1:Float, y1:Float, tx:Float, ty:Float ) Override
+		DisableTex()
+		glBegin( GL_LINES )
+		glVertex2f( x0 * ix + y0 * iy + tx + .5, x0 * jx + y0 * jy + ty + .5 )
+		glVertex2f( x1 * ix + y1 * iy + tx + .5, x1 * jx + y1 * jy + ty + .5 )
+		glEnd()
 	End Method
 
-	Method DrawRect( x0:Float,y0:Float,x1:Float,y1:Float,tx:Float,ty:Float ) Override
-		DisableTex
-		glBegin GL_QUADS
-		glVertex2f x0*ix+y0*iy+tx,x0*jx+y0*jy+ty
-		glVertex2f x1*ix+y0*iy+tx,x1*jx+y0*jy+ty
-		glVertex2f x1*ix+y1*iy+tx,x1*jx+y1*jy+ty
-		glVertex2f x0*ix+y1*iy+tx,x0*jx+y1*jy+ty
-		glEnd
+	Method DrawRect( x0:Float, y0:Float, x1:Float, y1:Float, tx:Float, ty:Float ) Override
+		DisableTex()
+		glBegin( GL_QUADS )
+		glVertex2f( x0 * ix + y0 * iy + tx, x0 * jx + y0 * jy + ty )
+		glVertex2f( x1 * ix + y0 * iy + tx, x1 * jx + y0 * jy + ty )
+		glVertex2f( x1 * ix + y1 * iy + tx, x1 * jx + y1 * jy + ty )
+		glVertex2f( x0 * ix + y1 * iy + tx, x0 * jx + y1 * jy + ty )
+		glEnd()
 	End Method
 	
 	Method DrawOval( x0:Float,y0:Float,x1:Float,y1:Float,tx:Float,ty:Float ) Override
@@ -623,47 +625,89 @@ Type TGLMax2DDriver Extends TMax2DDriver
 			Local x:Float=x0+Cos(th)*xr
 			Local y:Float=y0-Sin(th)*yr
 			glVertex2f x*ix+y*iy+tx,x*jx+y*jy+ty
+=======
+	Method Plot( x:Float, y:Float ) Override
+		DisableTex()
+		glBegin( GL_POINTS )
+		glVertex2f( x+.5,y+.5 )
+		glEnd()
+	End Method
+
+	Method DrawLine( x0:Float, y0:Float, x1:Float, y1:Float, tx:Float, ty:Float ) Override
+		DisableTex()
+		glBegin( GL_LINES )
+		glVertex2f( x0 * ix + y0 * iy + tx + .5, x0 * jx + y0 * jy + ty + .5 )
+		glVertex2f( x1 * ix + y1 * iy + tx + .5, x1 * jx + y1 * jy + ty + .5 )
+		glEnd()
+	End Method
+
+	Method DrawRect( x0:Float, y0:Float, x1:Float, y1:Float, tx:Float, ty:Float ) Override
+		DisableTex()
+		glBegin( GL_QUADS )
+		glVertex2f( x0 * ix + y0 * iy + tx, x0 * jx + y0 * jy + ty )
+		glVertex2f( x1 * ix + y0 * iy + tx, x1 * jx + y0 * jy + ty )
+		glVertex2f( x1 * ix + y1 * iy + tx, x1 * jx + y1 * jy + ty )
+		glVertex2f( x0 * ix + y1 * iy + tx, x0 * jx + y1 * jy + ty )
+		glEnd()
+	End Method
+	
+	Method DrawOval( x0:Float,y0:Float,x1:Float,y1:Float,tx:Float,ty:Float ) Override
+		Local xr:Float = ( x1 - x0 ) * 0.5
+		Local yr:Float = ( y1 - y0 ) * 0.5
+		Local segs:Int = Abs( xr ) + Abs( yr )
+
+		segs = Max( segs, 12 ) &~ 3
+
+		x0 :+ xr
+		y0 :+ yr
+
+		DisableTex()
+		glBegin( GL_POLYGON )
+		For Local i:Int = 0 Until segs
+			Local th:Float = i * 360.0 / segs
+			Local x:Float = x0 +Cos(th) * xr
+			Local y:Float = y0 -Sin(th) * yr
+			glVertex2f( x * ix + y * iy + tx, x * jx + y * jy + ty )
 		Next
-		glEnd
-		
+		glEnd()
 	End Method
 	
-	Method DrawPoly( xy:Float[],handle_x:Float,handle_y:Float,origin_x:Float,origin_y:Float, indices:Int[] ) Override
-		If xy.length<6 Or (xy.length&1) Return
-		
-		DisableTex
-		glBegin GL_POLYGON
-		For Local i:Int=0 Until Len xy Step 2
-			Local x:Float=xy[i+0]+handle_x
-			Local y:Float=xy[i+1]+handle_y
-			glVertex2f x*ix+y*iy+origin_x,x*jx+y*jy+origin_y
+	Method DrawPoly( xy:Float[], handle_x:Float, handle_y:Float, origin_x:Float, origin_y:Float, indices:Int[] ) Override
+		If xy.length < 6 Or ( xy.length & 1 ) Then Return
+
+		DisableTex()
+		glBegin( GL_POLYGON )
+		For Local i:Int = 0 Until xy.length Step 2
+			Local x:Float = xy[i + 0] + handle_x
+			Local y:Float = xy[i + 1] + handle_y
+			glVertex2f( x * ix + y * iy + origin_x, x * jx + y * jy + origin_y )
 		Next
-		glEnd
+		glEnd()
 	End Method
-		
-	Method DrawPixmap( p:TPixmap,x:Int,y:Int ) Override
-		Local blend:Int=state_blend
-		DisableTex
-		SetBlend SOLIDBLEND
+
+	Method DrawPixmap( p:TPixmap, x:Int, y:Int ) Override
+		Local blend:Int = state_blend
+		DisableTex()
+		SetBlend( SOLIDBLEND )
 	
-		Local t:TPixmap=p
-		If t.format<>PF_RGBA8888 t=ConvertPixmap( t,PF_RGBA8888 )
-
-		glPixelZoom 1,-1
-		glRasterPos2i 0,0
-		glBitmap 0,0,0,0,x,-y,Null
-		glPixelStorei GL_UNPACK_ROW_LENGTH, t.pitch Shr 2
-		glDrawPixels t.width,t.height,GL_RGBA,GL_UNSIGNED_BYTE,t.pixels
-		glPixelStorei GL_UNPACK_ROW_LENGTH,0
-		glPixelZoom 1,1
+		Local t:TPixmap = p
+		If t.format <> PF_RGBA8888 Then t = ConvertPixmap( t, PF_RGBA8888 )
+
+		glPixelZoom( 1, -1 )
+		glRasterPos2i( 0, 0 )
+		glBitmap( 0, 0, 0, 0, x, -y, Null)
+		glPixelStorei( GL_UNPACK_ROW_LENGTH, t.pitch Shr 2 )
+		glDrawPixels( t.width, t.height, GL_RGBA, GL_UNSIGNED_BYTE, t.pixels )
+		glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 )
+		glPixelZoom( 1, 1 )
 		
-		SetBlend blend
+		SetBlend( blend )
 	End Method
 
-	Method GrabPixmap:TPixmap( x:Int,y:Int,w:Int,h:Int ) Override
-		Local blend:Int=state_blend
-		SetBlend SOLIDBLEND
-		Local p:TPixmap=CreatePixmap( w,h,PF_RGBA8888 )
+	Method GrabPixmap:TPixmap( x:Int, y:Int, w:Int, h:Int ) Override
+		Local blend:Int = state_blend
+		SetBlend( SOLIDBLEND )
+		Local p:TPixmap=CreatePixmap( w, h, PF_RGBA8888 )
 
 		'The default backbuffer in Max2D was opaque so overwrote any
 		'trash data of a freshly created pixmap. Potentially transparent
@@ -675,16 +719,16 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		Else
 			glReadPixels(x, _BackbufferRenderImageFrame.height - h - y, w, h, GL_RGBA, GL_UNSIGNED_BYTE, p.pixels)
 		EndIf
-		p=YFlipPixmap( p )
-		SetBlend blend
+		p = YFlipPixmap( p )
+		SetBlend( blend )
 		Return p
 	End Method
 	
-	Method SetResolution( width:Float,height:Float ) Override
-		glMatrixMode GL_PROJECTION
-		glLoadIdentity
-		glOrtho 0,width,height,0,-1,1
-		glMatrixMode GL_MODELVIEW
+	Method SetResolution( width:Float, height:Float ) Override
+		glMatrixMode( GL_PROJECTION )
+		glLoadIdentity()
+		glOrtho( 0, width, height, 0, -1, 1 )
+		glMatrixMode( GL_MODELVIEW )
 	End Method
 
 	Method CreateRenderImageFrame:TImageFrame(width:UInt, height:UInt, flags:Int) Override