Code archives/Graphics/TWindowMode
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| See below... The code has the documentation. This was a quick hit I decided to share with you. Since I usually like to choose whether or not I want full-screen or windowed graphical modes, this code was useful for me in my development. This code *DOES NOT* use MaxGUI. It could be modified easily for your needs. Enjoy! -- computercoder | |||||
Rem
TWindowMode
--------------------------------------------------
This type is designed to allow the user to select a screen mode
of Windowed, Full Screen, or Quit without using the MaxGUI framework
This *could* be easily modified a bit more into a full on OOP type,
*BUT* I decided to keep it simple :)
--------------------------------------------------
USEAGE:
intVar = TWindowMode.GetMode("Your Title", "Your Info")
--------------------------------------------------
OUTPUTS:
0 = Cancelled
1 = Windowed
2 = Full Screen
End Rem
Type TWindowMode
Const C_Cancelled:Int = 0
Const C_Window:Int = 1
Const C_FullScreen:Int = 2
Function GetMode:Int(strTitle:String,strInfo:String)
Local intWindowMode:Int = 0
Local intWindowW:Int = 340
Local intWindowH:Int = 100
Local intButtonOver:Int = -1
Local blnExitLoop:Byte = False
Local intMouseX:Int = 0
Local intMouseY:Int = 0
Local intTitleX:Int = (intWindowW - (8 * strTitle.length)) / 2
Local intInfoX:Int = (intWindowW - (8 * strInfo.length)) / 2
Local objGraphics:TGraphics
Const cWINDOW:String = "Windowed"
Const cFULLSCREEN:String = "Full Screen"
Const cQUIT:String = "Quit"
' Create the window
objGraphics = Graphics(intWindowW, intWindowH)
SetClsColor(215, 215, 215)
While blnExitLoop = False
intMouseX = MouseX()
intMouseY = MouseY()
Cls
SetColor(0, 0, 0)
DrawText(strTitle, intTitleX, 10)
DrawText(strInfo, intInfoX, 34)
intButtonOver = -1
If PointToBox(intMouseX, intMouseY, 10, 60, 110, 84) = True Then
DrawButton(cWINDOW, 10, 60, 100, 24, True)
intButtonOver = C_Window
Else
DrawButton(cWINDOW, 10, 60, 100, 24, False)
End If
If PointToBox(intMouseX, intMouseY, 120, 60, 220, 84) = True Then
DrawButton(cFULLSCREEN, 120, 60, 100, 24, True)
intButtonOver = C_FullScreen
Else
DrawButton(cFULLSCREEN, 120, 60, 100, 24, False)
End If
If PointToBox(intMouseX, intMouseY, 230, 60, 330, 84) = True Then
DrawButton(cQUIT, 230, 60, 100, 24, True)
intButtonOver = C_Cancelled
Else
DrawButton(cQUIT, 230, 60, 100, 24, False)
End If
If MouseHit(1) Or MouseHit(2) Or MouseHit(3) Then
If intButtonOver <> -1 Then
intWindowMode = intButtonOver
blnExitLoop = True
End If
End If
Flip
Wend
CloseGraphics(objGraphics)
Return intWindowMode
End Function
Function DrawButton(strText:String, intPosX:Int, intPosY:Int, intWidth:Int, intHeight:Int, blnIsDown:Byte)
' Draw a button
' Get text center
Local intTextPosX:Int = intPosX + ((intWidth - (8 * strText.length)) / 2)
Local intTextPosY:Int = intPosY + ((intHeight - 12) / 2)
' Draw background for button
If blnIsDown = False Then
SetColor(220, 220, 220)
Else
SetColor(175, 175, 175)
End If
' Draw Highlights
DrawRect(intPosX, intPosY, intWidth, intHeight)
SetColor(245, 245, 245)
DrawLine(intPosX, intPosY, intPosX + intWidth, intPosY)
DrawLine(intPosX, intPosY, intPosX, intPosY + intHeight)
' Draw Shadows
SetColor(150, 150, 150)
DrawLine(intPosX + intWidth, intPosY + 1, intPosX + intWidth, intPosY + intHeight)
DrawLine(intPosX + 1, intPosY + intHeight, intPosX + intWidth, intPosY + intHeight)
' Draw text
SetColor(0, 0, 0)
DrawText(strText, intTextPosX, intTextPosY)
End Function
Function PointToBox:Byte(px:Int, py:Int, x1:Int, y1:Int, x2:Int, y2:Int)
' Determines if a point is in a rect
Local blnReturn:Byte = False
If x1 <= px And x2 => px And y1 <= py And y2 => py Then
blnReturn = True
End If
Return blnReturn
End Function
End Type |
Comments
None.
Code Archives Forum