Use sdl3 in MoonBit
fn main {
match (try! main_err()) {
Ok(_) => ()
Err(e) => println(e)
}
}
fn main_err() -> Unit raise {
let ctx = @sdl3.Context::new()
let window = ctx.createWindow("Simple Black Window", width=800, height=600)
let renderer = window.createRenderer()
let timer = ctx.getTimer()
let mut quit = false
while !quit {
let events = ctx.getEvents()
if events.iter().any(e => e.getType() is Quit) {
quit = true
}
// 清除屏幕为白色
renderer.setDrawColor(White)
renderer.clear()
// 绘制黑色点和线
renderer.setDrawColor(Black)
renderer.point(400, 300)
renderer.line((100, 100), (700, 500))
// 绘制红色矩形
renderer.setDrawColor(Red)
let rect = ctx.createRect(anchor=(200, 200), width=300, height=300)
renderer.drawRect(rect)
renderer.present()
timer.delay(16)
}
ctx.quit()
}pub(all) enum Color {
Red
Green
Blue
Yellow
Cyan
Magenta
Black
White
Gray
LightGray
DarkGray
Orange
Purple
Pink
Brown
Lime
Navy
Maroon
Olive
Teal
Silver
Crimson
FireBrick
DarkRed
LightPink
HotPink
DeepPink
MediumVioletRed
PaleVioletRed
DarkOrange
OrangeRed
Tomato
Coral
LightSalmon
Salmon
DarkSalmon
LightCoral
Gold
LightYellow
LemonChiffon
LightGoldenrodYellow
PapayaWhip
Moccasin
PeachPuff
PaleGoldenrod
Khaki
DarkKhaki
LightGreen
DarkGreen
ForestGreen
SeaGreen
MediumSeaGreen
LightSeaGreen
DarkSeaGreen
YellowGreen
OliveDrab
LawnGreen
Chartreuse
GreenYellow
SpringGreen
MediumSpringGreen
LimeGreen
LightBlue
DarkBlue
MediumBlue
SkyBlue
LightSkyBlue
DeepSkyBlue
DodgerBlue
CornflowerBlue
SteelBlue
LightSteelBlue
PowderBlue
LightCyan
CadetBlue
Turquoise
DarkTurquoise
MediumTurquoise
PaleTurquoise
Aqua
DarkCyan
Violet
Plum
Thistle
Lavender
MediumOrchid
MediumPurple
BlueViolet
DarkViolet
DarkOrchid
DarkMagenta
Indigo
SlateBlue
DarkSlateBlue
MediumSlateBlue
SaddleBrown
Sienna
Chocolate
Peru
SandyBrown
BurlyWood
Tan
RosyBrown
Goldenrod
DarkGoldenrod
Gainsboro
DimGray
SlateGray
LightSlateGray
DarkSlateGray
Beige
Bisque
BlanchedAlmond
Cornsilk
Ivory
FloralWhite
Snow
GhostWhite
MintCream
Azure
AliceBlue
Lavenderblush
Seashell
Honeydew
Transparent
RGB(Byte, Byte, Byte)
} derive(Eq, Show)pub(all) enum EventType {
Quit
Terminating
LowMemory
WILL_ENTER_BACKGROUND
DID_ENTER_BACKGROUND
WILL_ENTER_FOREGROUND
DID_ENTER_FOREGROUND
LOCALE_CHANGED
SYSTEM_THEME_CHANGED
DISPLAY_ORIENTATION
DISPLAY_ADDED
DISPLAY_REMOVED
DISPLAY_MOVED
DISPLAY_DESKTOP_MODE_CHANGED
DISPLAY_CURRENT_MODE_CHANGED
DISPLAY_CONTENT_SCALE_CHANGED
WINDOW_SHOWN
WINDOW_HIDDEN
WINDOW_EXPOSED
WINDOW_MOVED
WINDOW_RESIZED
WINDOW_PIXEL_SIZE_CHANGED
WINDOW_METAL_VIEW_RESIZED
WINDOW_MINIMIZED
WINDOW_MAXIMIZED
WINDOW_RESTORED
WINDOW_MOUSE_ENTER
WINDOW_MOUSE_LEAVE
WINDOW_FOCUS_GAINED
WINDOW_FOCUS_LOST
WINDOW_CLOSE_REQUESTED
WINDOW_HIT_TEST
WINDOW_ICCPROF_CHANGED
WINDOW_DISPLAY_CHANGED
WINDOW_DISPLAY_SCALE_CHANGED
WINDOW_SAFE_AREA_CHANGED
WINDOW_OCCLUDED
WINDOW_ENTER_FULLSCREEN
WINDOW_LEAVE_FULLSCREEN
WINDOW_DESTROYED
WINDOW_HDR_STATE_CHANGED
KEY_DOWN
KEY_UP
TEXT_EDITING
TEXT_INPUT
KEYMAP_CHANGED
KEYBOARD_ADDED
KEYBOARD_REMOVED
TEXT_EDITING_CANDIDATES
MOUSE_MOTION
MOUSE_BUTTON_DOWN
MOUSE_BUTTON_UP
MOUSE_WHEEL
MOUSE_ADDED
MOUSE_REMOVED
JOYSTICK_AXIS_MOTION
JOYSTICK_BALL_MOTION
JOYSTICK_HAT_MOTION
JOYSTICK_BUTTON_DOWN
JOYSTICK_BUTTON_UP
JOYSTICK_ADDED
JOYSTICK_REMOVED
JOYSTICK_BATTERY_UPDATED
JOYSTICK_UPDATE_COMPLETE
GAMEPAD_AXIS_MOTION
GAMEPAD_BUTTON_DOWN
GAMEPAD_BUTTON_UP
GAMEPAD_ADDED
GAMEPAD_REMOVED
GAMEPAD_REMAPPED
GAMEPAD_TOUCHPAD_DOWN
GAMEPAD_TOUCHPAD_MOTION
GAMEPAD_TOUCHPAD_UP
GAMEPAD_SENSOR_UPDATE
GAMEPAD_UPDATE_COMPLETE
GAMEPAD_STEAM_HANDLE_UPDATED
FINGER_DOWN
FINGER_UP
FINGER_MOTION
FINGER_CANCELED
CLIPBOARD_UPDATE
DROP_FILE
DROP_TEXT
DROP_BEGIN
DROP_COMPLETE
DROP_POSITION
AUDIO_DEVICE_ADDED
AUDIO_DEVICE_REMOVED
AUDIO_DEVICE_FORMAT_CHANGED
SENSOR_UPDATE
PEN_PROXIMITY_IN
PEN_PROXIMITY_OUT
PEN_DOWN
PEN_UP
PEN_BUTTON_DOWN
PEN_BUTTON_UP
PEN_MOTION
PEN_AXIS
CAMERA_DEVICE_ADDED
CAMERA_DEVICE_REMOVED
CAMERA_DEVICE_APPROVED
CAMERA_DEVICE_DENIED
RENDER_TARGETS_RESET
RENDER_DEVICE_RESET
RENDER_DEVICE_LOST
PRIVATE0
PRIVATE1
PRIVATE2
PRIVATE3
POLL_SENTINEL
USER
InValidEventType
}fn Renderer::setDrawColor(self : Renderer, color : Color, alpha? : Int) -> Unit raise SetDrawColorErrorpub struct Timer {
}Use sdl3 in MoonBit