Code archives/Graphics/Screen mode selector

This code has been declared by its author to be Public Domain code.

Download source code

Screen mode selector by Filax2009
Quick screen mode selector without graphics :)
ChoosescreenMode()

While Not KeyHit(1) 
	RenderWorld 

	Color 255,255,0
	Text 0,20,GraphicsWidth()+" / "+GraphicsHeight()+" / "+GraphicsDepth() 
	
	Flip False
Wend

ClearWorld 
End



Type tMode

	Field Width%
	Field Height%
	Field Depth%
	Field Mode%
	Field Id%
	
End Type


Function ChooseScreenMode(Title$="My App",MinWidth=1024)

	Graphics3D 400,240,0,2
	SetBuffer BackBuffer ()
	AppTitle Title$
	
	Local Count%=CountGfxModes3D()
	
	Local Total%
	Local Current%=0
	
	Local Width%
	Local Height%
	Local Depth%
	Local Mode%
	
	Local C%
	Local Y%
	Local O%
	
	Local Sx%=GraphicsWidth()
	Local Sy%=GraphicsHeight()
	Local ScrollY#=50
	
		
	Local Size%=20	
	Local Font=LoadFont("arial",Size%-2,1,0,0)
	SetFont Font
	
	For i=1 To Count%
	
		If GfxModeWidth(I)>=MinWidth
		
		Current%=Current%+1
		
		m.tMode=New tMode
		m\Width%=GfxModeWidth(I)
		m\Height%=GfxModeHeight(I)
		m\Depth%=GfxModeDepth(I)
		m\Mode%=1
		m\Id%=Current%


		Total%=Total%+1
				
		EndIf
		
	Next	
	
	Current=1
		
	Repeat
		
		Cls

		; ---
		; back
		; ---
		Viewport 0, 0, Sx%,Sy%
			
		Color 0,49,72
		Rect 0,0,Sx%,Sy%,1
		
		ScrollY#=ScrollY#+0.8 : If ScrollY#>Sy%-50 Then ScrollY#=50
		
		Color 0,53,76 : Line 0,ScrollY#+0,Sx%,ScrollY#+0
		Color 0,57,80 : Line 0,ScrollY#+1,Sx%,ScrollY#+1
		Color 0,61,84 : Line 0,ScrollY#+2,Sx%,ScrollY#+2
		Color 0,65,88 : Line 0,ScrollY#+3,Sx%,ScrollY#+3
		Color 5,76,99 : Line 0,ScrollY#+4,Sx%,ScrollY#+4
		Color 0,65,88 : Line 0,ScrollY#+5,Sx%,ScrollY#+5
		Color 0,61,84 : Line 0,ScrollY#+6,Sx%,ScrollY#+6
												
		Color 0,29,52
		Rect 0,0,Sx%,50,1
		Rect 0,Sy%-50,Sx%,50,1
		
		Color 0,69,112
		Text Sx%/2,Sy%-25,"Press <up><down> / <left><right>",True,True
				
		; ---
		; Bar
		; ---
		Color 0,128,192
		Rect 0,110,Sx%,Size%,1

		Color 20,169,192
		Rect 0,110,Sx%,Size%,0
		
		Viewport 0, 60, Sx%, Sy%-120

		; -------
		; Refresh
		; -------
		C%=0
		Y%=101
										
		For d.tMode =Each tMode

			C%=C%+Size%

			If d\Id%=Current% Then	
				Color 255,128,0
				
				If KeyHit(203) Then 
					d\Mode%=1
				EndIf
				
				If KeyHit(205) Then 
					d\Mode%=2
				EndIf
			Else
				Color 168,54,0
			EndIf

			Text 70,Y%+C%-O%,d\Width%,True,True
			Text 105,Y%+C%-O%,"/",True,True
			Text 140,Y%+C%-O%,d\Height%,True,True
						
			Text 190,Y%+C%-O%,d\Depth%,True,True
			Text 220,Y%+C%-O%,"Bits",True,True
			
			Select d\Mode%
				Case 1
					Caption$="Screen"
				Case 2
					Caption$="Windowed"
			End Select


			Text 300,Y%+C%-O%,Caption$,True,True

		Next
		
		

		If KeyHit(200) Then 
			If Current%>1 Then
				O%=O%-Size%
				
				Current%=Current%-1
			EndIf
		EndIf

		If KeyHit(208) Then 
			If Current%<Total% Then
				O%=O%+Size%
				
				Current%=Current%+1
			EndIf
		EndIf


			
		If KeyHit(28)
			For e.tMode =Each tMode
				If e\Id=Current% Then
				
					Graphics3D e\Width%,e\Height%,e\Depth%,e\Mode%
					Return True
			
				EndIf
			Next
		EndIf		
			
		Flip
	Forever

End Function

Comments

None.

Code Archives Forum