Selaa lähdekoodia

Changed to SuperStrict. Extended flags to Long.

Brucey 3 vuotta sitten
vanhempi
commit
352312d317

+ 10 - 10
d3d9sdlgraphics.mod/d3d9sdlgraphics.bmx

@@ -1,4 +1,4 @@
-Strict
+SuperStrict
 
 
 Module sdl.d3d9sdlgraphics
 Module sdl.d3d9sdlgraphics
 
 
@@ -34,7 +34,7 @@ Type TD3D9AutoRelease
 	Field unk:IUnknown_
 	Field unk:IUnknown_
 End Type
 End Type
 
 
-Function OpenD3DDevice:Int( hwnd:Byte Ptr,width:Int,height:Int,depth:Int,hertz:Int,flags:Int)
+Function OpenD3DDevice:Int( hwnd:Byte Ptr,width:Int,height:Int,depth:Int,hertz:Int,flags:Long)
 	If _d3dDevRefs
 	If _d3dDevRefs
 		If Not _presentParams.Windowed Return False
 		If Not _presentParams.Windowed Return False
 		If depth<>0 Return False
 		If depth<>0 Return False
@@ -144,7 +144,7 @@ Global UseDX9RenderLagFix:Int = 0
 
 
 Type TD3D9SDLGraphics Extends TGraphics
 Type TD3D9SDLGraphics Extends TGraphics
 
 
-	Method Attach:TD3D9SDLGraphics( hwnd:Byte Ptr,flags:Int )
+	Method Attach:TD3D9SDLGraphics( hwnd:Byte Ptr,flags:Long )
 		Local rect:Int[4]
 		Local rect:Int[4]
 		GetClientRect hwnd,rect
 		GetClientRect hwnd,rect
 		Local width:Int=rect[2]-rect[0]
 		Local width:Int=rect[2]-rect[0]
@@ -161,7 +161,7 @@ Type TD3D9SDLGraphics Extends TGraphics
 		Return Self
 		Return Self
 	End Method
 	End Method
 	
 	
-	Method Create:TD3D9SDLGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Int,x:Int,y:Int)
+	Method Create:TD3D9SDLGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Long,x:Int,y:Int)
 	
 	
 		
 		
 		_g = SDLGraphicsDriver().CreateGraphics( width, height, depth, hertz, flags | GRAPHICS_WIN32_DX, x, y )
 		_g = SDLGraphicsDriver().CreateGraphics( width, height, depth, hertz, flags | GRAPHICS_WIN32_DX, x, y )
@@ -250,15 +250,15 @@ Type TD3D9SDLGraphics Extends TGraphics
 		Return _driver
 		Return _driver
 	End Method
 	End Method
 	
 	
-	Method GetSettings:Int( width:Int Var,height:Int Var,depth:Int Var,hertz:Int Var,flags:Int Var,x:Int Var,y:Int Var ) Override
+	Method GetSettings( width:Int Var,height:Int Var,depth:Int Var,hertz:Int Var,flags:Long Var,x:Int Var,y:Int Var ) Override
 		'
 		'
 		ValidateSize
 		ValidateSize
 		'
 		'
 		_g.GetSettings(width, height, depth, hertz, flags, x, y)
 		_g.GetSettings(width, height, depth, hertz, flags, x, y)
 	End Method
 	End Method
 
 
-	Method Close:Int() Override
-		If Not _hwnd Return False
+	Method Close() Override
+		If Not _hwnd Return
 		CloseD3DDevice
 		CloseD3DDevice
 		If Not _attached Then
 		If Not _attached Then
 			_g.Close()
 			_g.Close()
@@ -359,11 +359,11 @@ Type TD3D9SDLGraphicsDriver Extends TGraphicsDriver
 		Return _modes
 		Return _modes
 	End Method
 	End Method
 	
 	
-	Method AttachGraphics:TD3D9SDLGraphics( widget:Byte Ptr,flags:Int ) Override
+	Method AttachGraphics:TD3D9SDLGraphics( widget:Byte Ptr,flags:Long ) Override
 		Return New TD3D9SDLGraphics.Attach( widget:Byte Ptr,flags:Int )
 		Return New TD3D9SDLGraphics.Attach( widget:Byte Ptr,flags:Int )
 	End Method
 	End Method
 	
 	
-	Method CreateGraphics:TD3D9SDLGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Int,x:Int,y:Int) Override
+	Method CreateGraphics:TD3D9SDLGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Long,x:Int,y:Int) Override
 		Return New TD3D9SDLGraphics.Create( width,height,depth,hertz,flags,x,y )
 		Return New TD3D9SDLGraphics.Create( width,height,depth,hertz,flags,x,y )
 	End Method
 	End Method
 
 
@@ -375,7 +375,7 @@ Type TD3D9SDLGraphicsDriver Extends TGraphicsDriver
 		_graphics=TD3D9SDLGraphics( g )
 		_graphics=TD3D9SDLGraphics( g )
 	End Method
 	End Method
 	
 	
-	Method Flip( sync:Int ) Override
+	Method Flip:Int( sync:Int ) Override
 		Local present:Int = _graphics.Flip(sync)
 		Local present:Int = _graphics.Flip(sync)
 		If UseDX9RenderLagFix Then
 		If UseDX9RenderLagFix Then
 			Local pixelsdrawn:Int
 			Local pixelsdrawn:Int

+ 46 - 43
d3d9sdlmax2d.mod/d3d9sdlmax2d.bmx

@@ -1,5 +1,5 @@
 
 
-Strict
+SuperStrict
 
 
 Rem
 Rem
 bbdoc: Direct3D9 Max2D with SDL backend
 bbdoc: Direct3D9 Max2D with SDL backend
@@ -8,11 +8,14 @@ The Direct3D9 Max2D module provides a Direct3D9 driver for #Max2D.
 End Rem
 End Rem
 Module SDL.D3D9SDLMax2D
 Module SDL.D3D9SDLMax2D
 
 
-ModuleInfo "Version: 1.00"
+ModuleInfo "Version: 1.01"
 ModuleInfo "License: zlib/libpng"
 ModuleInfo "License: zlib/libpng"
 ModuleInfo "Copyright: Blitz Research Ltd, Bruce A Henderson"
 ModuleInfo "Copyright: Blitz Research Ltd, Bruce A Henderson"
 
 
-ModuleInfo "History: 1.0"
+ModuleInfo "History: 1.01"
+ModuleInfo "History: Changed to SuperStrict"
+ModuleInfo "History: Extended flags to Long"
+ModuleInfo "History: 1.00"
 ModuleInfo "History: Port to bmx-ng."
 ModuleInfo "History: Port to bmx-ng."
 
 
 ?win32
 ?win32
@@ -20,30 +23,30 @@ ModuleInfo "History: Port to bmx-ng."
 Import BRL.Max2D
 Import BRL.Max2D
 Import SDL.D3D9SDLGraphics
 Import SDL.D3D9SDLGraphics
 
 
-Const LOG_ERRS=True'False
+Const LOG_ERRS:Int=True'False
 
 
 Private
 Private
 
 
-Global _gw,_gh,_gd,_gr,_gf,_gx,_gy
-Global _color
-Global _clscolor
+Global _gw:Int,_gh:Int,_gd:Int,_gr:Int,_gf:Long,_gx:Int,_gy:Int
+Global _color:Int
+Global _clscolor:Int
 Global _ix#,_iy#,_jx#,_jy#
 Global _ix#,_iy#,_jx#,_jy#
 Global _fverts#[24]
 Global _fverts#[24]
 Global _iverts:Int Ptr=Int Ptr( Varptr _fverts[0] )
 Global _iverts:Int Ptr=Int Ptr( Varptr _fverts[0] )
 Global _lineWidth#
 Global _lineWidth#
 
 
 Global _bound_texture:IDirect3DTexture9
 Global _bound_texture:IDirect3DTexture9
-Global _texture_enabled
+Global _texture_enabled:Int
 
 
-Global _active_blend
+Global _active_blend:Int
 
 
 Global _driver:TD3D9SDLMax2DDriver
 Global _driver:TD3D9SDLMax2DDriver
 Global _d3dDev:IDirect3DDevice9
 Global _d3dDev:IDirect3DDevice9
 Global _d3d9Graphics:TD3D9SDLGraphics
 Global _d3d9Graphics:TD3D9SDLGraphics
 Global _max2dGraphics:TMax2dGraphics
 Global _max2dGraphics:TMax2dGraphics
 
 
-Function Pow2Size( n )
-	Local t=1
+Function Pow2Size:Int( n:Int )
+	Local t:Int=1
 	While t<n
 	While t<n
 		t:*2
 		t:*2
 	Wend
 	Wend
@@ -78,10 +81,10 @@ Type TD3D9ImageFrame Extends TImageFrame
 		EndIf
 		EndIf
 	End Method
 	End Method
 
 
-	Method Create:TD3D9ImageFrame( pixmap:TPixmap,flags )
+	Method Create:TD3D9ImageFrame( pixmap:TPixmap,flags:Int )
 
 
-		Local width=pixmap.width,pow2width=Pow2Size( width )
-		Local height=pixmap.height,pow2height=Pow2Size( height )
+		Local width:Int=pixmap.width,pow2width:Int=Pow2Size( width )
+		Local height:Int=pixmap.height,pow2height:Int=Pow2Size( height )
 		
 		
 		If width<pow2width Or height<pow2height
 		If width<pow2width Or height<pow2height
 			Local src:TPixmap=pixmap
 			Local src:TPixmap=pixmap
@@ -100,21 +103,21 @@ Type TD3D9ImageFrame Extends TImageFrame
 			If pixmap.Format<>PF_BGRA8888 pixmap=pixmap.Convert( PF_BGRA8888 )
 			If pixmap.Format<>PF_BGRA8888 pixmap=pixmap.Convert( PF_BGRA8888 )
 		EndIf
 		EndIf
 
 
-		Local levels=(flags & MIPMAPPEDIMAGE)=0
-		Local format=D3DFMT_A8R8G8B8
-		Local usage=0
-		Local pool=D3DPOOL_MANAGED
+		Local levels:Int=(flags & MIPMAPPEDIMAGE)=0
+		Local format:Int=D3DFMT_A8R8G8B8
+		Local usage:Int=0
+		Local pool:Int=D3DPOOL_MANAGED
 		
 		
 		'_texture = New IDirect3DTexture9
 		'_texture = New IDirect3DTexture9
 		If _d3dDev.CreateTexture( pow2width,pow2height,levels,usage,format,pool,_texture,Null )<0
 		If _d3dDev.CreateTexture( pow2width,pow2height,levels,usage,format,pool,_texture,Null )<0
 			d3derr "Unable to create texture~n"
 			d3derr "Unable to create texture~n"
 			_texture = Null
 			_texture = Null
-			Return
+			Return Null
 		EndIf
 		EndIf
 		
 		
 		_d3d9Graphics.AutoRelease _texture
 		_d3d9Graphics.AutoRelease _texture
 
 
-		Local level
+		Local level:Int
 		Local dstsurf:IDirect3DSurface9' = New IDirect3DSurface9
 		Local dstsurf:IDirect3DSurface9' = New IDirect3DSurface9
 		Repeat
 		Repeat
 			If _texture.GetSurfaceLevel( level,dstsurf )<0
 			If _texture.GetSurfaceLevel( level,dstsurf )<0
@@ -129,7 +132,7 @@ Type TD3D9ImageFrame Extends TImageFrame
 				d3derr "dstsurf.LockRect failed~n"
 				d3derr "dstsurf.LockRect failed~n"
 			EndIf
 			EndIf
 		
 		
-			For Local y=0 Until pixmap.height
+			For Local y:Int=0 Until pixmap.height
 				Local src:Byte Ptr=pixmap.pixels+y*pixmap.pitch
 				Local src:Byte Ptr=pixmap.pixels+y*pixmap.pitch
 				Local dst:Byte Ptr=lockedrect.pBits+y*lockedrect.Pitch
 				Local dst:Byte Ptr=lockedrect.pBits+y*lockedrect.Pitch
 				MemCopy dst,src,Size_T(pixmap.width*4)
 				MemCopy dst,src,Size_T(pixmap.width*4)
@@ -228,9 +231,9 @@ Type TD3D9ImageFrame Extends TImageFrame
 		_d3dDev.DrawPrimitiveUP D3DPT_TRIANGLEFAN,2,_fverts,24
 		_d3dDev.DrawPrimitiveUP D3DPT_TRIANGLEFAN,2,_fverts,24
 	End Method
 	End Method
 	
 	
-	Field _texture:IDirect3DTexture9,_seq
+	Field _texture:IDirect3DTexture9,_seq:Int
 	
 	
-	Field _magfilter,_minfilter,_mipfilter,_uscale#,_vscale#
+	Field _magfilter:Int,_minfilter:Int,_mipfilter:Int,_uscale#,_vscale#
 	
 	
 	Field _fverts#[24],_iverts:Int Ptr=Int Ptr( Varptr _fverts[0] )
 	Field _fverts#[24],_iverts:Int Ptr=Int Ptr( Varptr _fverts[0] )
 
 
@@ -260,12 +263,12 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 		Return D3D9SDLGraphicsDriver().GraphicsModes()
 		Return D3D9SDLGraphicsDriver().GraphicsModes()
 	End Method
 	End Method
 	
 	
-	Method AttachGraphics:TGraphics( widget:Byte Ptr,flags ) Override
+	Method AttachGraphics:TGraphics( widget:Byte Ptr,flags:Long ) Override
 		Local g:TD3D9SDLGraphics=D3D9SDLGraphicsDriver().AttachGraphics( widget,flags )
 		Local g:TD3D9SDLGraphics=D3D9SDLGraphicsDriver().AttachGraphics( widget,flags )
 		If g Return TMax2DGraphics.Create( g,Self )
 		If g Return TMax2DGraphics.Create( g,Self )
 	End Method
 	End Method
 	
 	
-	Method CreateGraphics:TGraphics( width,height,depth,hertz,flags,x,y ) Override
+	Method CreateGraphics:TGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Long,x:Int,y:Int ) Override
 		Local g:TD3D9SDLGraphics=D3D9SDLGraphicsDriver().CreateGraphics( width,height,depth,hertz,flags,x,y )
 		Local g:TD3D9SDLGraphics=D3D9SDLGraphicsDriver().CreateGraphics( width,height,depth,hertz,flags,x,y )
 		If Not g Return Null
 		If Not g Return Null
 		Return TMax2DGraphics.Create( g,Self )
 		Return TMax2DGraphics.Create( g,Self )
@@ -305,7 +308,7 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 		
 		
 	End Method
 	End Method
 	
 	
-	Method Flip( sync ) Override
+	Method Flip:Int( sync:Int ) Override
 		_d3dDev.EndScene
 		_d3dDev.EndScene
 		If D3D9SDLGraphicsDriver().Flip( sync )
 		If D3D9SDLGraphicsDriver().Flip( sync )
 			_d3dDev.BeginScene
 			_d3dDev.BeginScene
@@ -363,11 +366,11 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 	End Method
 	End Method
 
 
 	'***** TMax2DDriver *****
 	'***** TMax2DDriver *****
-	Method CreateFrameFromPixmap:TImageFrame( pixmap:TPixmap,flags ) Override
+	Method CreateFrameFromPixmap:TImageFrame( pixmap:TPixmap,flags:Int ) Override
 		Return New TD3D9ImageFrame.Create( pixmap,flags )
 		Return New TD3D9ImageFrame.Create( pixmap,flags )
 	End Method
 	End Method
 	
 	
-	Method SetBlend( blend ) Override
+	Method SetBlend( blend:Int ) Override
 		If blend=_active_blend Return
 		If blend=_active_blend Return
 		Select blend
 		Select blend
 		Case SOLIDBLEND
 		Case SOLIDBLEND
@@ -404,7 +407,7 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 		_iverts[21]=_color
 		_iverts[21]=_color
 	End Method
 	End Method
 	
 	
-	Method SetColor( red,green,blue ) Override
+	Method SetColor( red:Int,green:Int,blue:Int ) Override
 		red=Max(Min(red,255),0)
 		red=Max(Min(red,255),0)
 		green=Max(Min(green,255),0)
 		green=Max(Min(green,255),0)
 		blue=Max(Min(blue,255),0)
 		blue=Max(Min(blue,255),0)
@@ -423,7 +426,7 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 		_iverts[21]=_color
 		_iverts[21]=_color
 	End Method
 	End Method
 	
 	
-	Method SetClsColor( red,green,blue ) Override
+	Method SetClsColor( red:Int,green:Int,blue:Int ) Override
 		red=Max(Min(red,255),0)
 		red=Max(Min(red,255),0)
 		green=Max(Min(green,255),0)
 		green=Max(Min(green,255),0)
 		blue=Max(Min(blue,255),0)
 		blue=Max(Min(blue,255),0)
@@ -434,12 +437,12 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 		_clscolor=$ff000000|color.ToARGB()
 		_clscolor=$ff000000|color.ToARGB()
 	End Method
 	End Method
 	
 	
-	Method SetViewport( x,y,width,height ) Override
+	Method SetViewport( x:Int,y:Int,width:Int,height:Int ) Override
 		If x=0 And y=0 And width=_gw And height=_gh 'GraphicsWidth() And height=GraphicsHeight()
 		If x=0 And y=0 And width=_gw And height=_gh 'GraphicsWidth() And height=GraphicsHeight()
 			_d3dDev.SetRenderState D3DRS_SCISSORTESTENABLE,False
 			_d3dDev.SetRenderState D3DRS_SCISSORTESTENABLE,False
 		Else
 		Else
 			_d3dDev.SetRenderState D3DRS_SCISSORTESTENABLE,True
 			_d3dDev.SetRenderState D3DRS_SCISSORTESTENABLE,True
-			Local rect[]=[x,y,x+width,y+height]
+			Local rect:Int[]=[x,y,x+width,y+height]
 			_d3dDev.SetScissorRect rect
 			_d3dDev.SetScissorRect rect
 		EndIf
 		EndIf
 	End Method
 	End Method
@@ -520,13 +523,13 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 	Method DrawOval( x0#,y0#,x1#,y1#,tx#,ty# ) Override
 	Method DrawOval( x0#,y0#,x1#,y1#,tx#,ty# ) Override
 		Local xr#=(x1-x0)*.5
 		Local xr#=(x1-x0)*.5
 		Local yr#=(y1-y0)*.5
 		Local yr#=(y1-y0)*.5
-		Local segs=Abs(xr)+Abs(yr)
+		Local segs:Int=Abs(xr)+Abs(yr)
 		segs=Max(segs,12)&~3
 		segs=Max(segs,12)&~3
 		x0:+xr
 		x0:+xr
 		y0:+yr
 		y0:+yr
 		Local fverts#[segs*6]
 		Local fverts#[segs*6]
 		Local iverts:Int Ptr=Int Ptr( Varptr fverts[0] )
 		Local iverts:Int Ptr=Int Ptr( Varptr fverts[0] )
-		For Local i=0 Until segs
+		For Local i:Int=0 Until segs
 			Local th#=-i*360#/segs
 			Local th#=-i*360#/segs
 			Local x#=x0+Cos(th)*xr
 			Local x#=x0+Cos(th)*xr
 			Local y#=y0-Sin(th)*yr
 			Local y#=y0-Sin(th)*yr
@@ -540,10 +543,10 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 	
 	
 	Method DrawPoly( verts#[],handlex#,handley#,tx#,ty# ) Override
 	Method DrawPoly( verts#[],handlex#,handley#,tx#,ty# ) Override
 		If verts.length<6 Or (verts.length&1) Return
 		If verts.length<6 Or (verts.length&1) Return
-		Local segs=verts.length/2
+		Local segs:Int=verts.length/2
 		Local fverts#[segs*6]
 		Local fverts#[segs*6]
 		Local iverts:Int Ptr=Int Ptr( Varptr fverts[0] )
 		Local iverts:Int Ptr=Int Ptr( Varptr fverts[0] )
-		For Local i=0 Until segs
+		For Local i:Int=0 Until segs
 			Local x#=verts[i*2+0]+handlex
 			Local x#=verts[i*2+0]+handlex
 			Local y#=verts[i*2+1]+handley
 			Local y#=verts[i*2+1]+handley
 			fverts[i*6+0]= x*_ix + y*_iy + tx
 			fverts[i*6+0]= x*_ix + y*_iy + tx
@@ -555,8 +558,8 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 	End Method
 	End Method
 		
 		
 	'GetDC/BitBlt MUCH faster than locking backbuffer!	
 	'GetDC/BitBlt MUCH faster than locking backbuffer!	
-	Method DrawPixmap( pixmap:TPixmap,x,y ) Override
-		Local width=pixmap.width,height=pixmap.height
+	Method DrawPixmap( pixmap:TPixmap,x:Int,y:Int ) Override
+		Local width:Int=pixmap.width,height:Int=pixmap.height
 	
 	
 		Local dstsurf:IDirect3DSurface9' = New IDirect3DSurface9
 		Local dstsurf:IDirect3DSurface9' = New IDirect3DSurface9
 		If _d3dDev.GetRenderTarget( 0,dstsurf )<0
 		If _d3dDev.GetRenderTarget( 0,dstsurf )<0
@@ -569,7 +572,7 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 			d3derr "GetDesc failed~n"
 			d3derr "GetDesc failed~n"
 		EndIf
 		EndIf
 		
 		
-		Local rect[]=[x,y,x+width,y+height]
+		Local rect:Int[]=[x,y,x+width,y+height]
 		Local lockedrect:D3DLOCKED_RECT=New D3DLOCKED_RECT
 		Local lockedrect:D3DLOCKED_RECT=New D3DLOCKED_RECT
 		If dstsurf.LockRect( lockedrect,rect,0 )<0
 		If dstsurf.LockRect( lockedrect,rect,0 )<0
 			d3derr "Unable to lock render target surface~n"
 			d3derr "Unable to lock render target surface~n"
@@ -586,7 +589,7 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 	End Method
 	End Method
 
 
 	'GetDC/BitBlt MUCH faster than locking backbuffer!	
 	'GetDC/BitBlt MUCH faster than locking backbuffer!	
-	Method GrabPixmap:TPixmap( x,y,width,height ) Override
+	Method GrabPixmap:TPixmap( x:Int,y:Int,width:Int,height:Int ) Override
 	
 	
 		Local srcsurf:IDirect3DSurface9
 		Local srcsurf:IDirect3DSurface9
 		If _d3dDev.GetRenderTarget( 0,srcsurf )<0
 		If _d3dDev.GetRenderTarget( 0,srcsurf )<0
@@ -621,10 +624,10 @@ Type TD3D9SDLMax2DDriver Extends TMax2dDriver
 		Local pixmap:TPixmap=CreatePixmap( width,height,PF_BGRA8888 )
 		Local pixmap:TPixmap=CreatePixmap( width,height,PF_BGRA8888 )
 		
 		
 		'Copy and set alpha in the process...
 		'Copy and set alpha in the process...
-		For Local y=0 Until height
+		For Local y:Int=0 Until height
 			Local src:Int Ptr=Int Ptr( lockedrect.pBits+y*lockedrect.Pitch )
 			Local src:Int Ptr=Int Ptr( lockedrect.pBits+y*lockedrect.Pitch )
 			Local dst:Int Ptr=Int Ptr( pixmap.PixelPtr( 0,y ) )
 			Local dst:Int Ptr=Int Ptr( pixmap.PixelPtr( 0,y ) )
-			For Local x=0 Until width
+			For Local x:Int=0 Until width
 				dst[x]=src[x] | $ff000000
 				dst[x]=src[x] | $ff000000
 			Next
 			Next
 		Next
 		Next
@@ -653,7 +656,7 @@ about:
 The returned driver can be used with #SetGraphicsDriver to enable Direct3D9 Max2D rendering.
 The returned driver can be used with #SetGraphicsDriver to enable Direct3D9 Max2D rendering.
 End Rem
 End Rem
 Function D3D9SDLMax2DDriver:TD3D9SDLMax2DDriver()
 Function D3D9SDLMax2DDriver:TD3D9SDLMax2DDriver()
-	Global _done
+	Global _done:Int
 	If Not _done
 	If Not _done
 		_driver=New TD3D9SDLMax2DDriver.Create()
 		_driver=New TD3D9SDLMax2DDriver.Create()
 		_done=True
 		_done=True

+ 5 - 2
gl2sdlmax2d.mod/gl2sdlmax2d.bmx

@@ -1,4 +1,4 @@
-Strict
+SuperStrict
 
 
 Rem
 Rem
 bbdoc: Graphics/OpenGL 2+ Max2D
 bbdoc: Graphics/OpenGL 2+ Max2D
@@ -8,11 +8,14 @@ Legacy fixed functionality is included for testing purposes if GLMAX2D_USE_LEGAC
 End Rem
 End Rem
 Module SDL.GL2SDLMax2D
 Module SDL.GL2SDLMax2D
 
 
-ModuleInfo "Version: 1.00"
+ModuleInfo "Version: 1.01"
 ModuleInfo "Author: Mark Sibly, Bruce Henderson, Emil Andersson"
 ModuleInfo "Author: Mark Sibly, Bruce Henderson, Emil Andersson"
 ModuleInfo "License: zlib/libpng"
 ModuleInfo "License: zlib/libpng"
 ModuleInfo "Copyright: Blitz Research Ltd"
 ModuleInfo "Copyright: Blitz Research Ltd"
 
 
+ModuleInfo "History: 1.01"
+ModuleInfo "History: Changed to SuperStrict"
+ModuleInfo "History: Extended flags to Long"
 ModuleInfo "History: 1.00"
 ModuleInfo "History: 1.00"
 ModuleInfo "History: Initial version."
 ModuleInfo "History: Initial version."
 
 

+ 55 - 55
gl2sdlmax2d.mod/main.bmx

@@ -1,4 +1,4 @@
-Strict
+SuperStrict
 
 
 Import brl.Max2D
 Import brl.Max2D
 Import SDL.SDLGraphics
 Import SDL.SDLGraphics
@@ -16,25 +16,25 @@ Private
 Global _driver:TGL2Max2DDriver
 Global _driver:TGL2Max2DDriver
 
 
 'Naughty!
 'Naughty!
-Const GL_BGR = $80E0
-Const GL_BGRA = $80E1
-Const GL_CLAMP_TO_EDGE = $812F
-Const GL_CLAMP_TO_BORDER = $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#, iy#, jx#, jy#
 Global ix#, iy#, jx#, jy#
 Global color4ub:Byte[4]
 Global color4ub:Byte[4]
 
 
-Global state_blend
-Global state_boundtex
-Global state_texenabled
+Global state_blend:Int
+Global state_boundtex:Int
+Global state_texenabled:Int
 
 
-Function BindTex( name )
+Function BindTex( name:Int )
 	If name = state_boundtex Return
 	If name = state_boundtex Return
 	glBindTexture( GL_TEXTURE_2D, name )
 	glBindTexture( GL_TEXTURE_2D, name )
 	state_boundtex = name
 	state_boundtex = name
 End Function
 End Function
 
 
-Function EnableTex( name )
+Function EnableTex( name:Int )
 	BindTex( name )
 	BindTex( name )
 	If state_texenabled Return
 	If state_texenabled Return
 	glEnable( GL_TEXTURE_2D )
 	glEnable( GL_TEXTURE_2D )
@@ -48,22 +48,22 @@ Function DisableTex()
 	state_texenabled = False
 	state_texenabled = False
 End Function
 End Function
 
 
-Function Pow2Size( n )
-	Local t = 1
+Function Pow2Size:Int( n:Int )
+	Local t:Int = 1
 	While t < n
 	While t < n
 		t :* 2
 		t :* 2
 	Wend
 	Wend
 	Return t
 	Return t
 End Function
 End Function
 
 
-Global dead_texs[],n_dead_texs,dead_tex_seq,n_live_texs
+Global dead_texs:Int[],n_dead_texs:Int,dead_tex_seq:Int,n_live_texs:Int
 
 
 Extern
 Extern
 	Function bbAtomicAdd:Int( target:Int Ptr,value:Int )="int bbAtomicAdd( int *,int )!"
 	Function bbAtomicAdd:Int( target:Int Ptr,value:Int )="int bbAtomicAdd( int *,int )!"
 End Extern
 End Extern
 
 
 'Enqueues a texture for deletion, to prevent release textures on wrong thread.
 'Enqueues a texture for deletion, to prevent release textures on wrong thread.
-Function DeleteTex( name,seq )
+Function DeleteTex( name:Int,seq:Int )
 	If seq<>dead_tex_seq Return
 	If seq<>dead_tex_seq Return
 	
 	
 	Local n:Int = bbAtomicAdd(Varptr n_dead_texs, 1)
 	Local n:Int = bbAtomicAdd(Varptr n_dead_texs, 1)
@@ -79,10 +79,10 @@ Function _ManageDeadTexArray()
 	EndIf
 	EndIf
 End Function
 End Function
 
 
-Function CreateTex( width, height, flags )
+Function CreateTex:Int( width:Int, height:Int, flags:Int )
 
 
 	'alloc new tex
 	'alloc new tex
-	Local name
+	Local name:Int
 	glGenTextures( 1, Varptr name )
 	glGenTextures( 1, Varptr name )
 
 
 	n_live_texs :+ 1
 	n_live_texs :+ 1
@@ -90,7 +90,7 @@ Function CreateTex( width, height, flags )
 
 
 	'flush dead texs
 	'flush dead texs
 	If dead_tex_seq = GraphicsSeq
 	If dead_tex_seq = GraphicsSeq
-		For Local i = 0 Until n_dead_texs
+		For Local i:Int = 0 Until n_dead_texs
 			glDeleteTextures( 1, Varptr dead_texs[i] )
 			glDeleteTextures( 1, Varptr dead_texs[i] )
 		Next
 		Next
 	EndIf
 	EndIf
@@ -120,7 +120,7 @@ Function CreateTex( width, height, flags )
 		EndIf
 		EndIf
 	EndIf
 	EndIf
 
 
-	Local mip_level
+	Local mip_level:Int
 	Repeat
 	Repeat
 		glTexImage2D( GL_TEXTURE_2D, mip_level, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Null )
 		glTexImage2D( GL_TEXTURE_2D, mip_level, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Null )
 		If Not ( flags & MIPMAPPEDIMAGE ) Exit
 		If Not ( flags & MIPMAPPEDIMAGE ) Exit
@@ -135,13 +135,13 @@ Function CreateTex( width, height, flags )
 End Function
 End Function
 
 
 'NOTE: Assumes a bound texture.
 'NOTE: Assumes a bound texture.
-Function UploadTex( pixmap:TPixmap, flags )
+Function UploadTex( pixmap:TPixmap, flags:Int )
 
 
-	Local mip_level
+	Local mip_level:Int
 	Repeat
 	Repeat
 
 
 		glTexImage2D( GL_TEXTURE_2D, mip_level, GL_RGBA, pixmap.width, pixmap.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Null )
 		glTexImage2D( GL_TEXTURE_2D, mip_level, GL_RGBA, pixmap.width, pixmap.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Null )
-		For Local y = 0 Until pixmap.height
+		For Local y:Int = 0 Until pixmap.height
 			Local row:Byte Ptr = pixmap.pixels + ( y * pixmap.width ) * 4
 			Local row:Byte Ptr = pixmap.pixels + ( y * pixmap.width ) * 4
 			glTexSubImage2D( GL_TEXTURE_2D, mip_level, 0, y, pixmap.width, 1, GL_RGBA, GL_UNSIGNED_BYTE, row )
 			glTexSubImage2D( GL_TEXTURE_2D, mip_level, 0, y, pixmap.width, 1, GL_RGBA, GL_UNSIGNED_BYTE, row )
 		Next
 		Next
@@ -161,7 +161,7 @@ Function UploadTex( pixmap:TPixmap, flags )
 
 
 End Function
 End Function
 
 
-Function AdjustTexSize( width Var, height Var )
+Function AdjustTexSize( width:Int Var, height:Int Var )
 
 
 	'calc texture size
 	'calc texture size
 	width = Pow2Size( width )
 	width = Pow2Size( width )
@@ -169,7 +169,7 @@ Function AdjustTexSize( width Var, height Var )
 
 
 	Return ' assume this size is fine...
 	Return ' assume this size is fine...
 	Repeat
 	Repeat
-		Local t
+		Local t:Int
 		glTexImage2D( GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Null )
 		glTexImage2D( GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Null )
 		?Not opengles
 		?Not opengles
 		glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, Varptr t )
 		glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, Varptr t )
@@ -299,7 +299,7 @@ Public
 Type TGLImageFrame Extends TImageFrame
 Type TGLImageFrame Extends TImageFrame
 
 
 	Field u0#, v0#, u1#, v1#, uscale#, vscale#
 	Field u0#, v0#, u1#, v1#, uscale#, vscale#
-	Field name, seq
+	Field name:Int, seq:Int
 
 
 	Method New()
 	Method New()
 
 
@@ -328,16 +328,16 @@ Type TGLImageFrame Extends TImageFrame
 
 
 	End Method
 	End Method
 	
 	
-	Function CreateFromPixmap:TGLImageFrame( src:TPixmap, flags )
+	Function CreateFromPixmap:TGLImageFrame( src:TPixmap, flags:Int )
 
 
 		'determine tex size
 		'determine tex size
-		Local tex_w = src.width
-		Local tex_h = src.height
+		Local tex_w:Int = src.width
+		Local tex_h:Int = src.height
 		AdjustTexSize( tex_w, tex_h )
 		AdjustTexSize( tex_w, tex_h )
 		
 		
 		'make sure pixmap fits texture
 		'make sure pixmap fits texture
-		Local width = Min( src.width, tex_w )
-		Local height = Min( src.height, tex_h )
+		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 )
 		If src.width <> width Or src.height <> height Then src = ResizePixmap( src, width, height )
 
 
 		'create texture pixmap
 		'create texture pixmap
@@ -361,7 +361,7 @@ Type TGLImageFrame Extends TImageFrame
 		EndIf
 		EndIf
 		
 		
 		'create tex
 		'create tex
-		Local name = CreateTex( tex_w, tex_h, flags )
+		Local name:Int = CreateTex( tex_w, tex_h, flags )
 		
 		
 		'upload it
 		'upload it
 		UploadTex( tex, flags )
 		UploadTex( tex, flags )
@@ -451,7 +451,7 @@ Type TGLSLShader
 
 
 	End Method
 	End Method
 
 
-	Method Compile()
+	Method Compile:Int()
 		
 		
 		If source = "" Then
 		If source = "" Then
 			'Print "ERROR (CompileShader) No shader source!"
 			'Print "ERROR (CompileShader) No shader source!"
@@ -734,7 +734,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 
 
-	Method AttachGraphics:TMax2DGraphics( widget:Byte Ptr, flags ) Override
+	Method AttachGraphics:TMax2DGraphics( widget:Byte Ptr, flags:Long ) Override
 
 
 		Local g:TSDLGraphics = SDLGraphicsDriver().AttachGraphics( widget, flags )
 		Local g:TSDLGraphics = SDLGraphicsDriver().AttachGraphics( widget, flags )
 
 
@@ -742,7 +742,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 	
 	
-	Method CreateGraphics:TMax2DGraphics( width, height, depth, hertz, flags, x, y ) Override
+	Method CreateGraphics:TMax2DGraphics( width:Int, height:Int, depth:Int, hertz:Int, flags:Long, x:Int, y:Int ) Override
 
 
 		Local g:TSDLGraphics = SDLGraphicsDriver().CreateGraphics( width, height, depth, hertz, flags | SDL_GRAPHICS_GL, x, y )
 		Local g:TSDLGraphics = SDLGraphicsDriver().CreateGraphics( width, height, depth, hertz, flags | SDL_GRAPHICS_GL, x, y )
 		
 		
@@ -776,7 +776,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 	
 	
 	Method ResetGLContext( g:TGraphics )
 	Method ResetGLContext( g:TGraphics )
 
 
-		Local 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 )
 		g.GetSettings( gw, gh, gd, gr, gf, gx, gy )
 
 
 		If Not inited Then
 		If Not inited Then
@@ -801,7 +801,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 	
 	
-	Method Flip( sync ) Override
+	Method Flip:Int( sync:Int ) Override
 
 
 		Flush()
 		Flush()
 
 
@@ -817,7 +817,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 
 
-	Method CreateFrameFromPixmap:TGLImageFrame( pixmap:TPixmap, flags ) Override
+	Method CreateFrameFromPixmap:TGLImageFrame( pixmap:TPixmap, flags:Int ) Override
 
 
 		Local frame:TGLImageFrame
 		Local frame:TGLImageFrame
 		frame = TGLImageFrame.CreateFromPixmap( pixmap, flags )
 		frame = TGLImageFrame.CreateFromPixmap( pixmap, flags )
@@ -825,7 +825,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 
 
-	Method SetBlend( blend ) Override
+	Method SetBlend( blend:Int ) Override
 
 
 		If state_blend = blend Return
 		If state_blend = blend Return
 
 
@@ -894,7 +894,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 
 
-	Method SetColor( red, green, blue ) Override
+	Method SetColor( red:Int, green:Int, blue:Int ) Override
 
 
 		color4f[0] = Min( Max( red, 0 ), 255 ) / 255.0
 		color4f[0] = Min( Max( red, 0 ), 255 ) / 255.0
 		color4f[1] = Min( Max( green, 0 ), 255 ) / 255.0
 		color4f[1] = Min( Max( green, 0 ), 255 ) / 255.0
@@ -908,7 +908,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 		color4f[2]=color.b / 255.0
 		color4f[2]=color.b / 255.0
 	End Method
 	End Method
 
 
-	Method SetClsColor( red, green, blue ) Override
+	Method SetClsColor( red:Int, green:Int, blue:Int ) Override
 
 
 		red = Min( Max( red, 0 ), 255 )
 		red = Min( Max( red, 0 ), 255 )
 		green = Min( Max( green, 0 ), 255 )
 		green = Min( Max( green, 0 ), 255 )
@@ -921,7 +921,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 		glClearColor( color.r / 255.0, color.g / 255.0, color.b / 255.0, 1.0 )
 		glClearColor( color.r / 255.0, color.g / 255.0, color.b / 255.0, 1.0 )
 	End Method
 	End Method
 	
 	
-	Method SetViewport( x, y, w, h ) Override
+	Method SetViewport( x:Int, y:Int, w:Int, h:Int ) Override
 		'render what has been batched till now
 		'render what has been batched till now
 		FlushTest( PRIMITIVE_VIEWPORT )
 		FlushTest( PRIMITIVE_VIEWPORT )
 
 
@@ -1049,7 +1049,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 		Local xr# = ( x1 - x0 ) * 0.5
 		Local xr# = ( x1 - x0 ) * 0.5
 		Local yr# = ( y1 - y0 ) * 0.5
 		Local yr# = ( y1 - y0 ) * 0.5
-		Local segs = Abs( xr ) + Abs( yr )
+		Local segs:Int = Abs( xr ) + Abs( yr )
 
 
 		segs = Max( segs, 12 ) &~ 3
 		segs = Max( segs, 12 ) &~ 3
 
 
@@ -1063,7 +1063,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 		Local off:Int = 2
 		Local off:Int = 2
 
 
-		For Local i = 0 To segs
+		For Local i:Int = 0 To segs
 			Local th# = i * 360# / segs
 			Local th# = i * 360# / segs
 			Local x# = x0 + Cos( th ) * xr
 			Local x# = x0 + Cos( th ) * xr
 			Local y# = y0 - Sin( th ) * yr
 			Local y# = y0 - Sin( th ) * yr
@@ -1081,7 +1081,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 		off = 4
 		off = 4
 
 
-		For Local i = 0 To segs
+		For Local i:Int = 0 To segs
 			col_array[in + off + 0] = color4f[0] 'red
 			col_array[in + off + 0] = color4f[0] 'red
 			col_array[in + off + 1] = color4f[1] 'green
 			col_array[in + off + 1] = color4f[1] 'green
 			col_array[in + off + 2] = color4f[2] 'blue
 			col_array[in + off + 2] = color4f[2] 'blue
@@ -1102,7 +1102,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 		Local in:Int = vert_index * 2
 		Local in:Int = vert_index * 2
 
 
-		For Local i = 0 Until xy.length Step 2
+		For Local i:Int = 0 Until xy.length Step 2
 			Local x# = handle_x + xy[i]
 			Local x# = handle_x + xy[i]
 			Local y# = handle_y + xy[i + 1]
 			Local y# = handle_y + xy[i + 1]
 			vert_array[in + i    ] = x * ix + y * iy + origin_x
 			vert_array[in + i    ] = x * ix + y * iy + origin_x
@@ -1111,7 +1111,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 		in = vert_index * 4
 		in = vert_index * 4
 
 
-		For Local i = 0 Until xy.length / 2
+		For Local i:Int = 0 Until xy.length / 2
 			col_array[in + i * 4    ] = color4f[0] 'red
 			col_array[in + i * 4    ] = color4f[0] 'red
 			col_array[in + i * 4 + 1] = color4f[1] 'green
 			col_array[in + i * 4 + 1] = color4f[1] 'green
 			col_array[in + i * 4 + 2] = color4f[2] 'blue
 			col_array[in + i * 4 + 2] = color4f[2] 'blue
@@ -1122,9 +1122,9 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 
 
-	Method DrawPixmap( p:TPixmap, x, y ) Override
+	Method DrawPixmap( p:TPixmap, x:Int, y:Int ) Override
 
 
-		Local blend = state_blend
+		Local blend:Int = state_blend
 		SetBlend( SOLIDBLEND )
 		SetBlend( SOLIDBLEND )
 
 
 		Local t:TPixmap = p
 		Local t:TPixmap = p
@@ -1137,7 +1137,7 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 
 
-	Method DrawTexture( name, u0#, v0#, u1#, v1#, x0#, y0#, x1#, y1#, tx#, ty#, img:TImageFrame = Null )
+	Method DrawTexture( name:Int, u0#, v0#, u1#, v1#, x0#, y0#, x1#, y1#, tx#, ty#, img:TImageFrame = Null )
 
 
 		FlushTest( PRIMITIVE_TEXTURED_TRIANGLE, name )
 		FlushTest( PRIMITIVE_TEXTURED_TRIANGLE, name )
 
 
@@ -1192,9 +1192,9 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 
 
 	End Method
 	End Method
 
 
-	Method GrabPixmap:TPixmap( x, y, w, h ) Override
+	Method GrabPixmap:TPixmap( x:Int, y:Int, w:Int, h:Int ) Override
 
 
-		Local blend = state_blend
+		Local blend:Int = state_blend
 		SetBlend( SOLIDBLEND )
 		SetBlend( SOLIDBLEND )
 		Local p:TPixmap = CreatePixmap( w, h, PF_RGBA8888 )
 		Local p:TPixmap = CreatePixmap( w, h, PF_RGBA8888 )
 		' flush everything to ensure there's something to read
 		' flush everything to ensure there's something to read
@@ -1227,15 +1227,15 @@ Type TGL2Max2DDriver Extends TMax2DDriver
 		color4f[2] = 1.0
 		color4f[2] = 1.0
 		color4f[3] = 1.0
 		color4f[3] = 1.0
 
 
-		For Local i = 0 Until BATCHSIZE
-			Local in = i * 3
+		For Local i:Int = 0 Until BATCHSIZE
+			Local in:Int = i * 3
 			TRI_INDS[in    ] = in
 			TRI_INDS[in    ] = in
 			TRI_INDS[in + 1] = in + 1
 			TRI_INDS[in + 1] = in + 1
 			TRI_INDS[in + 2] = in + 2
 			TRI_INDS[in + 2] = in + 2
 		Next
 		Next
 		For Local i:Int = 0 Until BATCHSIZE
 		For Local i:Int = 0 Until BATCHSIZE
-			Local i4 = i * 4
-			Local i6 = i * 6
+			Local i4:Int = i * 4
+			Local i6:Int = i * 6
 			QUAD_INDS[i6    ] = i4
 			QUAD_INDS[i6    ] = i4
 			QUAD_INDS[i6 + 1] = i4 + 1
 			QUAD_INDS[i6 + 1] = i4 + 1
 			QUAD_INDS[i6 + 2] = i4 + 2
 			QUAD_INDS[i6 + 2] = i4 + 2
@@ -1434,7 +1434,7 @@ The returned driver can be used with #SetGraphicsDriver to enable OpenGL Max2D r
 End Rem
 End Rem
 Function GL2Max2DDriver:TGL2Max2DDriver()
 Function GL2Max2DDriver:TGL2Max2DDriver()
 	Print "GL2 (with shaders) Active"
 	Print "GL2 (with shaders) Active"
-	Global _done
+	Global _done:Int
 	If Not _done
 	If Not _done
 		_driver = New TGL2Max2DDriver.Create()
 		_driver = New TGL2Max2DDriver.Create()
 		_done = True
 		_done = True

+ 50 - 47
glsdlmax2d.mod/glsdlmax2d.bmx

@@ -1,5 +1,5 @@
 
 
-Strict
+SuperStrict
 
 
 Rem
 Rem
 bbdoc: Graphics/OpenGL Max2D
 bbdoc: Graphics/OpenGL Max2D
@@ -8,12 +8,15 @@ The OpenGL Max2D module provides an SDL-backend OpenGL driver for #Max2D.
 End Rem
 End Rem
 Module SDL.GLSDLMax2D
 Module SDL.GLSDLMax2D
 
 
-ModuleInfo "Version: 1.14"
+ModuleInfo "Version: 1.15"
 ModuleInfo "Author: Mark Sibly"
 ModuleInfo "Author: Mark Sibly"
 ModuleInfo "License: zlib/libpng"
 ModuleInfo "License: zlib/libpng"
 ModuleInfo "Copyright: Blitz Research Ltd"
 ModuleInfo "Copyright: Blitz Research Ltd"
 ModuleInfo "Modserver: BRL"
 ModuleInfo "Modserver: BRL"
 
 
+ModuleInfo "History: 1.15"
+ModuleInfo "History: Changed to SuperStrict"
+ModuleInfo "History: Extended flags to Long"
 ModuleInfo "History: 1.14 Release"
 ModuleInfo "History: 1.14 Release"
 ModuleInfo "History: Port to SDL backend"
 ModuleInfo "History: Port to SDL backend"
 ModuleInfo "History: 1.13 Release"
 ModuleInfo "History: 1.13 Release"
@@ -45,25 +48,25 @@ Private
 Global _driver:TGLMax2DDriver
 Global _driver:TGLMax2DDriver
 
 
 'Naughty!
 'Naughty!
-Const GL_BGR=$80E0
-Const GL_BGRA=$80E1
-Const GL_CLAMP_TO_EDGE=$812F
-Const GL_CLAMP_TO_BORDER=$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#,iy#,jx#,jy#
 Global ix#,iy#,jx#,jy#
 Global color4ub:Byte[4]
 Global color4ub:Byte[4]
 
 
-Global state_blend
-Global state_boundtex
-Global state_texenabled
+Global state_blend:Int
+Global state_boundtex:Int
+Global state_texenabled:Int
 
 
-Function BindTex( name )
+Function BindTex( name:Int )
 	If name=state_boundtex Return
 	If name=state_boundtex Return
 	glBindTexture GL_TEXTURE_2D,name
 	glBindTexture GL_TEXTURE_2D,name
 	state_boundtex=name
 	state_boundtex=name
 End Function
 End Function
 
 
-Function EnableTex( name )
+Function EnableTex( name:Int )
 	BindTex name
 	BindTex name
 	If state_texenabled Return
 	If state_texenabled Return
 	glEnable GL_TEXTURE_2D
 	glEnable GL_TEXTURE_2D
@@ -76,22 +79,22 @@ Function DisableTex()
 	state_texenabled=False
 	state_texenabled=False
 End Function
 End Function
 
 
-Function Pow2Size( n )
-	Local t=1
+Function Pow2Size:Int( n:Int )
+	Local t:Int=1
 	While t<n
 	While t<n
 		t:*2
 		t:*2
 	Wend
 	Wend
 	Return t
 	Return t
 End Function
 End Function
 
 
-Global dead_texs[],n_dead_texs,dead_tex_seq,n_live_texs
+Global dead_texs:Int[],n_dead_texs:Int,dead_tex_seq:Int,n_live_texs:Int
 
 
 Extern
 Extern
 	Function bbAtomicAdd:Int( target:Int Ptr,value:Int )="int bbAtomicAdd( int *,int )!"
 	Function bbAtomicAdd:Int( target:Int Ptr,value:Int )="int bbAtomicAdd( int *,int )!"
 End Extern
 End Extern
 
 
 'Enqueues a texture for deletion, to prevent release textures on wrong thread.
 'Enqueues a texture for deletion, to prevent release textures on wrong thread.
-Function DeleteTex( name,seq )
+Function DeleteTex( name:Int,seq:Int )
 	If seq<>dead_tex_seq Return
 	If seq<>dead_tex_seq Return
 	
 	
 	Local n:Int = bbAtomicAdd(Varptr n_dead_texs, 1)
 	Local n:Int = bbAtomicAdd(Varptr n_dead_texs, 1)
@@ -107,9 +110,9 @@ Function _ManageDeadTexArray()
 	EndIf
 	EndIf
 End Function
 End Function
 
 
-Function CreateTex( width,height,flags )
+Function CreateTex:Int( width:Int,height:Int,flags:Int )
 	'alloc new tex
 	'alloc new tex
-	Local name
+	Local name:Int
 	glGenTextures 1,Varptr name
 	glGenTextures 1,Varptr name
 
 
 	n_live_texs :+ 1
 	n_live_texs :+ 1
@@ -117,7 +120,7 @@ Function CreateTex( width,height,flags )
 
 
 	'flush dead texs
 	'flush dead texs
 	If dead_tex_seq=GraphicsSeq
 	If dead_tex_seq=GraphicsSeq
-		For Local i=0 Until n_dead_texs
+		For Local i:Int=0 Until n_dead_texs
 			glDeleteTextures 1,Varptr dead_texs[i]
 			glDeleteTextures 1,Varptr dead_texs[i]
 		Next
 		Next
 	EndIf
 	EndIf
@@ -147,7 +150,7 @@ Function CreateTex( width,height,flags )
 		EndIf
 		EndIf
 	EndIf
 	EndIf
 
 
-	Local mip_level
+	Local mip_level:Int
 
 
 	Repeat
 	Repeat
 		glTexImage2D GL_TEXTURE_2D,mip_level,GL_RGBA8,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,Null
 		glTexImage2D GL_TEXTURE_2D,mip_level,GL_RGBA8,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,Null
@@ -161,8 +164,8 @@ Function CreateTex( width,height,flags )
 	Return name
 	Return name
 End Function
 End Function
 
 
-Function UploadTex( pixmap:TPixmap,flags )
-	Local mip_level
+Function UploadTex( pixmap:TPixmap,flags:Int )
+	Local mip_level:Int
 	Repeat
 	Repeat
 		glPixelStorei GL_UNPACK_ROW_LENGTH,pixmap.pitch/BytesPerPixel[pixmap.format]
 		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
 		glTexSubImage2D GL_TEXTURE_2D,mip_level,0,0,pixmap.width,pixmap.height,GL_RGBA,GL_UNSIGNED_BYTE,pixmap.pixels
@@ -181,12 +184,12 @@ Function UploadTex( pixmap:TPixmap,flags )
 	glPixelStorei GL_UNPACK_ROW_LENGTH,0
 	glPixelStorei GL_UNPACK_ROW_LENGTH,0
 End Function
 End Function
 
 
-Function AdjustTexSize( width Var,height Var )
+Function AdjustTexSize( width:Int Var,height:Int Var )
 	'calc texture size
 	'calc texture size
 	width=Pow2Size( width )
 	width=Pow2Size( width )
 	height=Pow2Size( height )
 	height=Pow2Size( height )
 	Repeat
 	Repeat
-		Local t
+		Local t:Int
 		glTexImage2D GL_PROXY_TEXTURE_2D,0,4,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,Null
 		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
 		glGetTexLevelParameteriv GL_PROXY_TEXTURE_2D,0,GL_TEXTURE_WIDTH,Varptr t
 		If t Return
 		If t Return
@@ -202,7 +205,7 @@ Type TGLImageFrame Extends TImageFrame
 
 
 	Field u0#,v0#,u1#,v1#,uscale#,vscale#
 	Field u0#,v0#,u1#,v1#,uscale#,vscale#
 
 
-	Field name,seq
+	Field name:Int,seq:Int
 	
 	
 	Method New()
 	Method New()
 		seq=GraphicsSeq
 		seq=GraphicsSeq
@@ -235,15 +238,15 @@ Type TGLImageFrame Extends TImageFrame
 		glEnd
 		glEnd
 	End Method
 	End Method
 	
 	
-	Function CreateFromPixmap:TGLImageFrame( src:TPixmap,flags )
+	Function CreateFromPixmap:TGLImageFrame( src:TPixmap,flags:Int )
 		'determine tex size
 		'determine tex size
-		Local tex_w=src.width
-		Local tex_h=src.height
+		Local tex_w:Int=src.width
+		Local tex_h:Int=src.height
 		AdjustTexSize tex_w,tex_h
 		AdjustTexSize tex_w,tex_h
 		
 		
 		'make sure pixmap fits texture
 		'make sure pixmap fits texture
-		Local width=Min( src.width,tex_w )
-		Local height=Min( src.height,tex_h )
+		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 )
 		If src.width<>width Or src.height<>height src=ResizePixmap( src,width,height )
 
 
 		'create texture pixmap
 		'create texture pixmap
@@ -267,7 +270,7 @@ Type TGLImageFrame Extends TImageFrame
 		EndIf
 		EndIf
 		
 		
 		'create tex
 		'create tex
-		Local name=CreateTex( tex_w,tex_h,flags )
+		Local name:Int=CreateTex( tex_w,tex_h,flags )
 		
 		
 		'upload it
 		'upload it
 		UploadTex tex,flags
 		UploadTex tex,flags
@@ -298,12 +301,12 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		Return SDLGraphicsDriver().GraphicsModes()
 		Return SDLGraphicsDriver().GraphicsModes()
 	End Method
 	End Method
 	
 	
-	Method AttachGraphics:TMax2DGraphics( widget:Byte Ptr,flags ) Override
+	Method AttachGraphics:TMax2DGraphics( widget:Byte Ptr,flags:Long ) Override
 		Local g:TSDLGraphics=SDLGraphicsDriver().AttachGraphics( widget,flags )
 		Local g:TSDLGraphics=SDLGraphicsDriver().AttachGraphics( widget,flags )
 		If g Return TMax2DGraphics.Create( g,Self )
 		If g Return TMax2DGraphics.Create( g,Self )
 	End Method
 	End Method
 	
 	
-	Method CreateGraphics:TMax2DGraphics( width,height,depth,hertz,flags,x,y ) Override
+	Method CreateGraphics:TMax2DGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Long,x:Int,y:Int ) Override
 		Local g:TSDLGraphics=SDLGraphicsDriver().CreateGraphics( width,height,depth,hertz,flags | SDL_GRAPHICS_GL,x,y )
 		Local g:TSDLGraphics=SDLGraphicsDriver().CreateGraphics( width,height,depth,hertz,flags | SDL_GRAPHICS_GL,x,y )
 		If g Return TMax2DGraphics.Create( g,Self )
 		If g Return TMax2DGraphics.Create( g,Self )
 	End Method
 	End Method
@@ -326,7 +329,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 	End Method
 	End Method
 	
 	
 	Method ResetGLContext( g:TGraphics )
 	Method ResetGLContext( g:TGraphics )
-		Local 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
 		g.GetSettings gw,gh,gd,gr,gf,gx,gy
 		
 		
 		state_blend=0
 		state_blend=0
@@ -341,7 +344,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		glViewport 0,0,gw,gh
 		glViewport 0,0,gw,gh
 	End Method
 	End Method
 	
 	
-	Method Flip( sync ) Override
+	Method Flip:Int( sync:Int ) Override
 		SDLGraphicsDriver().Flip sync
 		SDLGraphicsDriver().Flip sync
 	End Method
 	End Method
 	
 	
@@ -349,13 +352,13 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		Return "OpenGL"
 		Return "OpenGL"
 	End Method
 	End Method
 
 
-	Method CreateFrameFromPixmap:TGLImageFrame( pixmap:TPixmap,flags ) Override
+	Method CreateFrameFromPixmap:TGLImageFrame( pixmap:TPixmap,flags:Int ) Override
 		Local frame:TGLImageFrame
 		Local frame:TGLImageFrame
 		frame=TGLImageFrame.CreateFromPixmap( pixmap,flags )
 		frame=TGLImageFrame.CreateFromPixmap( pixmap,flags )
 		Return frame
 		Return frame
 	End Method
 	End Method
 
 
-	Method SetBlend( blend ) Override
+	Method SetBlend( blend:Int ) Override
 		If blend=state_blend Return
 		If blend=state_blend Return
 		state_blend=blend
 		state_blend=blend
 		Select blend
 		Select blend
@@ -395,7 +398,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		glLineWidth width
 		glLineWidth width
 	End Method
 	End Method
 	
 	
-	Method SetColor( red,green,blue ) Override
+	Method SetColor( red:Int,green:Int,blue:Int ) Override
 		color4ub[0]=Min(Max(red,0),255)
 		color4ub[0]=Min(Max(red,0),255)
 		color4ub[1]=Min(Max(green,0),255)
 		color4ub[1]=Min(Max(green,0),255)
 		color4ub[2]=Min(Max(blue,0),255)
 		color4ub[2]=Min(Max(blue,0),255)
@@ -409,7 +412,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		glColor4ubv color4ub
 		glColor4ubv color4ub
 	End Method
 	End Method
 
 
-	Method SetClsColor( red,green,blue ) Override
+	Method SetClsColor( red:Int,green:Int,blue:Int ) Override
 		red=Min(Max(red,0),255)
 		red=Min(Max(red,0),255)
 		green=Min(Max(green,0),255)
 		green=Min(Max(green,0),255)
 		blue=Min(Max(blue,0),255)
 		blue=Min(Max(blue,0),255)
@@ -420,7 +423,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		glClearColor color.r/255.0,color.g/255.0,color.b/255.0,1.0
 		glClearColor color.r/255.0,color.g/255.0,color.b/255.0,1.0
 	End Method
 	End Method
 	
 	
-	Method SetViewport( x,y,w,h ) Override
+	Method SetViewport( x:Int,y:Int,w:Int,h:Int ) Override
 		If x=0 And y=0 And w=GraphicsWidth() And h=GraphicsHeight()
 		If x=0 And y=0 And w=GraphicsWidth() And h=GraphicsHeight()
 			glDisable GL_SCISSOR_TEST
 			glDisable GL_SCISSOR_TEST
 		Else
 		Else
@@ -469,7 +472,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 	
 	
 		Local xr#=(x1-x0)*.5
 		Local xr#=(x1-x0)*.5
 		Local yr#=(y1-y0)*.5
 		Local yr#=(y1-y0)*.5
-		Local segs=Abs(xr)+Abs(yr)
+		Local segs:Int=Abs(xr)+Abs(yr)
 		
 		
 		segs=Max(segs,12)&~3
 		segs=Max(segs,12)&~3
 
 
@@ -478,7 +481,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		
 		
 		DisableTex
 		DisableTex
 		glBegin GL_POLYGON
 		glBegin GL_POLYGON
-		For Local i=0 Until segs
+		For Local i:Int=0 Until segs
 			Local th#=i*360#/segs
 			Local th#=i*360#/segs
 			Local x#=x0+Cos(th)*xr
 			Local x#=x0+Cos(th)*xr
 			Local y#=y0-Sin(th)*yr
 			Local y#=y0-Sin(th)*yr
@@ -493,7 +496,7 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		
 		
 		DisableTex
 		DisableTex
 		glBegin GL_POLYGON
 		glBegin GL_POLYGON
-		For Local i=0 Until Len xy Step 2
+		For Local i:Int=0 Until Len xy Step 2
 			Local x#=xy[i+0]+handle_x
 			Local x#=xy[i+0]+handle_x
 			Local y#=xy[i+1]+handle_y
 			Local y#=xy[i+1]+handle_y
 			glVertex2f x*ix+y*iy+origin_x,x*jx+y*jy+origin_y
 			glVertex2f x*ix+y*iy+origin_x,x*jx+y*jy+origin_y
@@ -501,8 +504,8 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		glEnd
 		glEnd
 	End Method
 	End Method
 		
 		
-	Method DrawPixmap( p:TPixmap,x,y ) Override
-		Local blend=state_blend
+	Method DrawPixmap( p:TPixmap,x:Int,y:Int ) Override
+		Local blend:Int=state_blend
 		DisableTex
 		DisableTex
 		SetBlend SOLIDBLEND
 		SetBlend SOLIDBLEND
 	
 	
@@ -520,8 +523,8 @@ Type TGLMax2DDriver Extends TMax2DDriver
 		SetBlend blend
 		SetBlend blend
 	End Method
 	End Method
 
 
-	Method GrabPixmap:TPixmap( x,y,w,h ) Override
-		Local blend=state_blend
+	Method GrabPixmap:TPixmap( x:Int,y:Int,w:Int,h:Int ) Override
+		Local blend:Int=state_blend
 		SetBlend SOLIDBLEND
 		SetBlend SOLIDBLEND
 		Local p:TPixmap=CreatePixmap( w,h,PF_RGBA8888 )
 		Local p:TPixmap=CreatePixmap( w,h,PF_RGBA8888 )
 		glReadPixels x,GraphicsHeight()-h-y,w,h,GL_RGBA,GL_UNSIGNED_BYTE,p.pixels
 		glReadPixels x,GraphicsHeight()-h-y,w,h,GL_RGBA,GL_UNSIGNED_BYTE,p.pixels
@@ -546,7 +549,7 @@ The returned driver can be used with #SetGraphicsDriver to enable OpenGL Max2D
 rendering.
 rendering.
 End Rem
 End Rem
 Function GLMax2DDriver:TGLMax2DDriver()
 Function GLMax2DDriver:TGLMax2DDriver()
-	Global _done
+	Global _done:Int
 	If Not _done
 	If Not _done
 		_driver=New TGLMax2DDriver.Create()
 		_driver=New TGLMax2DDriver.Create()
 		_done=True
 		_done=True

+ 0 - 26
sdlgraphics.mod/common.bmx

@@ -60,33 +60,7 @@ Import "../../sdl.mod/sdl.mod/SDL/include/*.h"
 Import "glue.c"
 Import "glue.c"
 
 
 Extern
 Extern
-
 	Function bbSDLGraphicsGraphicsModes:Int( display:Int, buf:Byte Ptr,size:Int )
 	Function bbSDLGraphicsGraphicsModes:Int( display:Int, buf:Byte Ptr,size:Int )
-	Function bbSDLGraphicsShareContexts()
-	'Function bbSDLGraphicsAttachGraphics:Byte Ptr( widget:Byte Ptr,flags )
-	Function bbSDLGraphicsCreateGraphics:Byte Ptr( width:Int,height:Int,depth:Int,hertz:Int,flags:Int )
-	Function bbSDLGraphicsGetSettings( context:Byte Ptr,width:Int Var,height:Int Var,depth:Int Var,hertz:Int Var,flags:Int Var )
-	Function bbSDLGraphicsClose( context:Byte Ptr )	
-	Function bbSDLGraphicsSetGraphics( context:Byte Ptr )
-	Function bbSDLGraphicsFlip( sync:Int )
-	Function bbSDLExit()
-	Function bbSDLGraphicsGetHandle:Byte Ptr(context:Byte Ptr)
-	
-	Function SDL_GetNumVideoDisplays:Int()
-	
-	
-	' system stuff
-'	Function SDL_ShowCursor(visible:Int)
-	Function bmx_SDL_WarpMouseInWindow(x:Int, y:Int)
-		
-'	Function bmx_SDL_GetDisplayWidth:Int(display:Int)
-'	Function bmx_SDL_GetDisplayHeight:Int(display:Int)
-'	Function bmx_SDL_GetDisplayDepth:Int(display:Int)
-'	Function bmx_SDL_GetDisplayhertz:Int(display:Int)
-
-'	Function bmx_SDL_Poll()
-'	Function bmx_SDL_WaitEvent()
-	
 End Extern
 End Extern
 Rem
 Rem
 Const SDL_WINDOW_FULLSCREEN:Int = $00000001         ' fullscreen window
 Const SDL_WINDOW_FULLSCREEN:Int = $00000001         ' fullscreen window

+ 0 - 175
sdlgraphics.mod/glue.c

@@ -27,45 +27,6 @@
 
 
 #include <brl.mod/blitz.mod/blitz.h>
 #include <brl.mod/blitz.mod/blitz.h>
 
 
-enum{
-	MODE_SHARED=0,
-	MODE_WIDGET=1,
-	MODE_WINDOW=2,
-	MODE_DISPLAY=3
-};
-
-enum{
-	FLAGS_BACKBUFFER    = 0x02,
-	FLAGS_ALPHABUFFER   = 0x04,
-	FLAGS_DEPTHBUFFER   = 0x08,
-	FLAGS_STENCILBUFFER = 0x10,
-	FLAGS_ACCUMBUFFER   = 0x20,
-	FLAGS_BORDERLESS    = 0x40,
-	FLAGS_RPI_TV_FULLSCREEN = 0x1000,
-	FLAGS_DX            = 0x1000000,
-	FLAGS_FULLSCREEN    = 0x80000000
-};
-
-typedef struct BBSDLContext BBSDLContext;
-
-struct BBSDLContext{
-	int mode,width,height,depth,hertz,flags,sync;
-	SDL_Window * window;
-	SDL_GLContext context;
-	SDL_SysWMinfo info;
-};
-
-
-int bbSDLGraphicsGraphicsModes( int display, int *imodes,int maxcount );
-void bbSDLGraphicsFlip( int sync );
-void bbSDLGraphicsSetGraphics( BBSDLContext *context );
-void bbSDLGraphicsGetSettings( BBSDLContext *context, int * width,int * height,int * depth,int * hertz,int * flags);
-void bbSDLGraphicsClose( BBSDLContext *context );
-void bmx_SDL_Poll();
-void bmx_SDL_WaitEvent();
-void * bbSDLGraphicsGetHandle(BBSDLContext *context);
-
-static BBSDLContext *_currentContext;
 
 
 int bbSDLGraphicsGraphicsModes( int display, int *imodes,int maxcount ) {
 int bbSDLGraphicsGraphicsModes( int display, int *imodes,int maxcount ) {
 	SDL_DisplayMode mode;
 	SDL_DisplayMode mode;
@@ -83,139 +44,3 @@ int bbSDLGraphicsGraphicsModes( int display, int *imodes,int maxcount ) {
 	}
 	}
 	return count;
 	return count;
 }
 }
-
-BBSDLContext *bbSDLGraphicsCreateGraphics( int width,int height,int depth,int hz,int flags ) {
-
-	int mode;
-	char * appTitle = bbStringToUTF8String( bbAppTitle );
-	
-	int windowFlags = 0;
-
-	if ((flags & FLAGS_DX) == 0) {
-		windowFlags = SDL_WINDOW_OPENGL;
-	}
-	
-	if (flags & FLAGS_BORDERLESS) windowFlags |= SDL_WINDOW_BORDERLESS;
-	
-	if( depth ){
-		windowFlags |= SDL_WINDOW_FULLSCREEN;
-		mode=MODE_DISPLAY;
-	} else {
-		if (flags & FLAGS_FULLSCREEN) {
-			windowFlags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
-		}
-		mode=MODE_WINDOW;
-	}
-
-	if ((flags & FLAGS_DX) == 0) {
-		if (flags & FLAGS_BACKBUFFER) SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
-		if (flags & FLAGS_ALPHABUFFER) SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 1);
-		if (flags & FLAGS_DEPTHBUFFER) SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
-		if (flags & FLAGS_STENCILBUFFER) SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1);
-	}
-#ifdef __ANDROID__
-	SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
-	SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
-	SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
-#endif
-
-	SDL_Window *window = SDL_CreateWindow(appTitle, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
-		width, height, windowFlags);
-		
-	if (window == NULL) {
-		printf("error... %s\n", SDL_GetError());fflush(stdout);
-		return NULL;
-	}
-
-	SDL_GLContext context = 0;
-	
-	if ((flags & FLAGS_DX) == 0) {
-		SDL_GL_SetSwapInterval(-1);
-	
-		context = SDL_GL_CreateContext(window);
-	}
-
-	BBSDLContext *bbcontext=(BBSDLContext*)malloc( sizeof(BBSDLContext) );
-	memset( bbcontext,0,sizeof(BBSDLContext) );
-	bbcontext->mode=mode;	
-	bbcontext->width=width;	
-	bbcontext->height=height;
-	bbcontext->depth=24;	
-	bbcontext->hertz=hz;
-	bbcontext->flags=flags;
-	bbcontext->sync=-1;	
-	bbcontext->window=window;
-	bbcontext->context=context;
-	SDL_GetWindowWMInfo(window, &bbcontext->info);
-
-	return bbcontext;
-
-}
-
-void bbSDLGraphicsFlip( int sync ) {
-	if( !_currentContext ) return;
-	
-	sync=sync ? 1 : 0;
-	
-	static int _sync=-1;
-	
-	if( sync!=_currentContext->sync ){
-		_currentContext->sync=sync;
-		SDL_GL_SetSwapInterval(sync);
-	}
-	
-	SDL_GL_SwapWindow(_currentContext->window);
-	bmx_SDL_Poll();
-}
-
-void bbSDLGraphicsClose( BBSDLContext *context ){
-	if (context){
-		if (_currentContext==context) _currentContext=0;
-		if (context->context) 
-		{
-			SDL_GL_DeleteContext(context->context);	
-		}
-		if (context->window && context->mode!=MODE_WIDGET){
-			SDL_DestroyWindow(context->window);
-		}
-		free( context );
-	}
-}
-
-void bbSDLGraphicsSetGraphics( BBSDLContext *context ) {
-	if( context ){
-		SDL_GL_MakeCurrent(context->window, context->context);
-	}
-	_currentContext=context;
-}
-
-void bmx_SDL_WarpMouseInWindow(int x, int y) {
-	if( _currentContext ){
-		SDL_WarpMouseInWindow(_currentContext->window, x, y);
-	} else {
-		SDL_WarpMouseInWindow(SDL_GL_GetCurrentWindow(), x, y);
-	}
-}
-
-void bbSDLGraphicsGetSettings( BBSDLContext *context, int * width,int * height,int * depth,int * hertz,int * flags) {
-	if( context ){
-		SDL_GL_GetDrawableSize(context->window, &context->width, &context->height);
-		*width=context->width;
-		*height=context->height;
-		*depth=context->depth;
-		*hertz=context->hertz;
-		*flags=context->flags;
-	}
-}
-
-void bbSDLExit(){
-	bbSDLGraphicsClose( _currentContext );
-	_currentContext=0;
-}
-
-void * bbSDLGraphicsGetHandle(BBSDLContext *context) {
-#ifdef _WIN32
-	return context->info.info.win.window;
-#endif
-	return 0;
-}

+ 20 - 10
sdlgraphics.mod/sdlgraphics.bmx

@@ -19,7 +19,7 @@
 '    3. This notice may not be removed or altered from any source
 '    3. This notice may not be removed or altered from any source
 '    distribution.
 '    distribution.
 '
 '
-Strict
+SuperStrict
 
 
 Module SDL.SDLGraphics
 Module SDL.SDLGraphics
 
 
@@ -46,7 +46,7 @@ Type TGraphicsContext
 	Field height:Int
 	Field height:Int
 	Field depth:Int
 	Field depth:Int
 	Field hertz:Int
 	Field hertz:Int
-	Field flags:Int
+	Field flags:Long
 	Field sync:Int
 	Field sync:Int
 	Field x:Int
 	Field x:Int
 	Field y:Int
 	Field y:Int
@@ -64,7 +64,7 @@ Type TSDLGraphics Extends TGraphics
 		Return SDLGraphicsDriver()
 		Return SDLGraphicsDriver()
 	End Method
 	End Method
 
 
-	Method GetSettings( width:Int Var,height:Int Var,depth:Int Var,hertz:Int Var,flags:Int Var,x:Int Var,y:Int Var ) Override
+	Method GetSettings( width:Int Var,height:Int Var,depth:Int Var,hertz:Int Var,flags:Long Var,x:Int Var,y:Int Var ) Override
 		Assert _context
 		Assert _context
 		'Local w:Int,h:Int,d:Int,r:Int,f:Int
 		'Local w:Int,h:Int,d:Int,r:Int,f:Int
 		'bbSDLGraphicsGetSettings _context,w,h,d,r,f
 		'bbSDLGraphicsGetSettings _context,w,h,d,r,f
@@ -133,19 +133,19 @@ Type TSDLGraphicsDriver Extends TGraphicsDriver
 		Return modes
 		Return modes
 	End Method
 	End Method
 
 
-	Method AttachGraphics:TSDLGraphics( widget:Byte Ptr,flags:Int ) Override
+	Method AttachGraphics:TSDLGraphics( widget:Byte Ptr,flags:Long ) Override
 		Local t:TSDLGraphics=New TSDLGraphics
 		Local t:TSDLGraphics=New TSDLGraphics
 		't._context=bbGLGraphicsAttachGraphics( widget,flags )
 		't._context=bbGLGraphicsAttachGraphics( widget,flags )
 		Return t
 		Return t
 	End Method
 	End Method
 
 
-	Method CreateGraphics:TSDLGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Int,x:Int,y:Int ) Override
+	Method CreateGraphics:TSDLGraphics( width:Int,height:Int,depth:Int,hertz:Int,flags:Long,x:Int,y:Int ) Override
 		Local t:TSDLGraphics=New TSDLGraphics
 		Local t:TSDLGraphics=New TSDLGraphics
 		t._context=SDLGraphicsCreateGraphics( width,height,depth,hertz,flags,x,y )
 		t._context=SDLGraphicsCreateGraphics( width,height,depth,hertz,flags,x,y )
 		Return t
 		Return t
 	End Method
 	End Method
 
 
-	Method SDLGraphicsCreateGraphics:TGraphicsContext(width:Int,height:Int,depth:Int,hertz:Int,flags:Int,x:Int,y:Int)
+	Method SDLGraphicsCreateGraphics:TGraphicsContext(width:Int,height:Int,depth:Int,hertz:Int,flags:Long,x:Int,y:Int)
 		Local context:TGraphicsContext = New TGraphicsContext
 		Local context:TGraphicsContext = New TGraphicsContext
 
 
 		Local windowFlags:UInt = SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_OPENGL
 		Local windowFlags:UInt = SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_OPENGL
@@ -231,7 +231,7 @@ Type TSDLGraphicsDriver Extends TGraphicsDriver
 		_currentContext = context
 		_currentContext = context
 	End Method
 	End Method
 
 
-	Method Flip( sync:Int ) Override
+	Method Flip:int( sync:Int ) Override
 		'BRL  SDL
 		'BRL  SDL
 		'-1   -1   sdl: adaptive vsync, brl: "use graphics object's refresh rate"
 		'-1   -1   sdl: adaptive vsync, brl: "use graphics object's refresh rate"
 		' 1    1   vsync
 		' 1    1   vsync
@@ -239,7 +239,7 @@ Type TSDLGraphicsDriver Extends TGraphicsDriver
 
 
 		'bbSDLGraphicsFlip sync
 		'bbSDLGraphicsFlip sync
 		If Not _currentContext Then
 		If Not _currentContext Then
-			Return
+			Return 0
 		End If
 		End If
 
 
 		If sync <> _currentContext.sync Then
 		If sync <> _currentContext.sync Then
@@ -254,7 +254,7 @@ Type TSDLGraphicsDriver Extends TGraphicsDriver
 		End If
 		End If
 	End Method
 	End Method
 
 
-	Function GraphicsHook:Object( id,data:Object,context:Object )
+	Function GraphicsHook:Object( id:Int,data:Object,context:Object )
 		Local ev:TEvent=TEvent(data)
 		Local ev:TEvent=TEvent(data)
 		If Not ev Return data
 		If Not ev Return data
 
 
@@ -313,10 +313,20 @@ End Function
 SDL_Init(SDL_INIT_VIDEO)
 SDL_Init(SDL_INIT_VIDEO)
 
 
 ' cleanup context on exit
 ' cleanup context on exit
-OnEnd(bbSDLExit)
+'OnEnd(bbSDLExit)
 
 
 ' set mouse warp function
 ' set mouse warp function
 _sdl_WarpMouse = bmx_SDL_WarpMouseInWindow
 _sdl_WarpMouse = bmx_SDL_WarpMouseInWindow
 
 
+Private
+
+Function bmx_SDL_WarpMouseInWindow( x:Int, y:Int )
+	If _currentContext Then
+		_currentContext.window.WarpMouse(x, y)
+	End If
+End Function
+
+Public
+
 SetGraphicsDriver SDLGraphicsDriver()
 SetGraphicsDriver SDLGraphicsDriver()