Files
llgo/c/raylib/raylib.go
xushiwei 4d57f414f5 c/raylib
2024-06-25 08:40:23 +08:00

289 lines
8.2 KiB
Go

/*
* Copyright (c) 2024 The GoPlus Authors (goplus.org). All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package raylib
import (
_ "unsafe"
"github.com/goplus/llgo/c"
)
const (
LLGoPackage = "link: $(pkg-config --libs raylib); -lraylib"
)
// -----------------------------------------------------------------------------
// Vector2, 2 components
type Vector2 struct {
X float32 // Vector x component
Y float32 // Vector y component
}
// Vector3, 3 components
type Vector3 struct {
X float32 // Vector x component
Y float32 // Vector y component
Z float32 // Vector z component
}
// Vector4, 4 components
type Vector4 struct {
X float32 // Vector x component
Y float32 // Vector y component
Z float32 // Vector z component
W float32 // Vector w component
}
// Quaternion, 4 components (Vector4 alias)
type Quaternion = Vector4
// -----------------------------------------------------------------------------
// Window-related functions
//go:linkname InitWindow C.InitWindow
func InitWindow(width, height c.Int, title *c.Char)
//go:linkname CloseWindow C.CloseWindow
func CloseWindow()
//go:linkname WindowShouldClose C.WindowShouldClose
func WindowShouldClose() bool
//go:linkname IsWindowReady C.IsWindowReady
func IsWindowReady() bool
//go:linkname IsWindowFullscreen C.IsWindowFullscreen
func IsWindowFullscreen() bool
//go:linkname IsWindowHidden C.IsWindowHidden
func IsWindowHidden() bool
//go:linkname IsWindowMinimized C.IsWindowMinimized
func IsWindowMinimized() bool
//go:linkname IsWindowMaximized C.IsWindowMaximized
func IsWindowMaximized() bool
//go:linkname IsWindowFocused C.IsWindowFocused
func IsWindowFocused() bool
//go:linkname IsWindowResized C.IsWindowResized
func IsWindowResized() bool
//go:linkname IsWindowState C.IsWindowState
func IsWindowState(flag c.Int) bool
//go:linkname SetWindowState C.SetWindowState
func SetWindowState(flags c.Int)
//go:linkname ClearWindowState C.ClearWindowState
func ClearWindowState(flags c.Int)
//go:linkname ToggleFullscreen C.ToggleFullscreen
func ToggleFullscreen()
//go:linkname MaximizeWindow C.MaximizeWindow
func MaximizeWindow()
//go:linkname MinimizeWindow C.MinimizeWindow
func MinimizeWindow()
//go:linkname RestoreWindow C.RestoreWindow
func RestoreWindow()
//go:linkname SetWindowIcon C.SetWindowIcon
func SetWindowIcon(icon Image)
//go:linkname SetWindowIcons C.SetWindowIcons
func SetWindowIcons(icons *Image, count c.Int)
//go:linkname SetWindowTitle C.SetWindowTitle
func SetWindowTitle(title *c.Char)
//go:linkname SetWindowPosition C.SetWindowPosition
func SetWindowPosition(x, y c.Int)
//go:linkname SetWindowMonitor C.SetWindowMonitor
func SetWindowMonitor(monitor c.Int)
//go:linkname SetWindowMinSize C.SetWindowMinSize
func SetWindowMinSize(width, height c.Int)
//go:linkname SetWindowSize C.SetWindowSize
func SetWindowSize(width, height c.Int)
//go:linkname SetWindowOpacity C.SetWindowOpacity
func SetWindowOpacity(opacity c.Float)
//go:linkname SetWindowFocused C.SetWindowFocused
func SetWindowFocused()
//go:linkname GetWindowHandle C.GetWindowHandle
func GetWindowHandle() c.Pointer
//go:linkname GetScreenWidth C.GetScreenWidth
func GetScreenWidth() c.Int
//go:linkname GetScreenHeight C.GetScreenHeight
func GetScreenHeight() c.Int
// Get current render width (it considers HiDPI)
//
//go:linkname GetRenderWidth C.GetRenderWidth
func GetRenderWidth() c.Int
// Get current render height (it considers HiDPI)
//
//go:linkname GetRenderHeight C.GetRenderHeight
func GetRenderHeight() c.Int
// Get number of connected monitors
//
//go:linkname GetMonitorCount C.GetMonitorCount
func GetMonitorCount() c.Int
// Get current connected monitor
//
//go:linkname GetCurrentMonitor C.GetCurrentMonitor
func GetCurrentMonitor() c.Int
// Get specified monitor position
//
//go:linkname GetMonitorPosition C.GetMonitorPosition
func GetMonitorPosition(monitor c.Int) Vector2
//go:linkname GetMonitorWidth C.GetMonitorWidth
func GetMonitorWidth(monitor c.Int) c.Int
//go:linkname GetMonitorHeight C.GetMonitorHeight
func GetMonitorHeight(monitor c.Int) c.Int
//go:linkname GetMonitorPhysicalWidth C.GetMonitorPhysicalWidth
func GetMonitorPhysicalWidth(monitor c.Int) c.Int
//go:linkname GetMonitorPhysicalHeight C.GetMonitorPhysicalHeight
func GetMonitorPhysicalHeight(monitor c.Int) c.Int
//go:linkname GetMonitorRefreshRate C.GetMonitorRefreshRate
func GetMonitorRefreshRate(monitor c.Int) c.Int
//go:linkname GetWindowPosition C.GetWindowPosition
func GetWindowPosition() Vector2
//go:linkname GetWindowScaleDPI C.GetWindowScaleDPI
func GetWindowScaleDPI() Vector2
//go:linkname GetMonitorName C.GetMonitorName
func GetMonitorName(monitor c.Int) *c.Char
//go:linkname SetClipboardText C.SetClipboardText
func SetClipboardText(text *c.Char)
//go:linkname GetClipboardText C.GetClipboardText
func GetClipboardText() *c.Char
// Enable waiting for events on EndDrawing(), no automatic event polling
//
//go:linkname EnableEventWaiting C.EnableEventWaiting
func EnableEventWaiting()
// Disable waiting for events on EndDrawing(), automatic events polling
//
//go:linkname DisableEventWaiting C.DisableEventWaiting
func DisableEventWaiting()
// -----------------------------------------------------------------------------
// Cursor-related functions
//go:linkname ShowCursor C.ShowCursor
func ShowCursor()
//go:linkname HideCursor C.HideCursor
func HideCursor()
//go:linkname IsCursorHidden C.IsCursorHidden
func IsCursorHidden() bool
//go:linkname EnableCursor C.EnableCursor
func EnableCursor()
//go:linkname DisableCursor C.DisableCursor
func DisableCursor()
//go:linkname IsCursorOnScreen C.IsCursorOnScreen
func IsCursorOnScreen() bool
// -----------------------------------------------------------------------------
// Shader management functions
// -----------------------------------------------------------------------------
// Screen-space-related functions
// -----------------------------------------------------------------------------
// Timing-related functions
// Set target FPS (maximum)
//
//go:linkname SetTargetFPS C.SetTargetFPS
func SetTargetFPS(fps c.Int)
// Returns current FPS
//
//go:linkname GetFPS C.GetFPS
func GetFPS() c.Int
// Returns time in seconds for last frame drawn (delta time)
//
//go:linkname GetFrameTime C.GetFrameTime
func GetFrameTime() c.Float
// Returns elapsed time in seconds since InitWindow()
//
//go:linkname GetTime C.GetTime
func GetTime() c.Double
// -----------------------------------------------------------------------------
// Custom frame control functions
// NOTE: Those functions are intended for advance users that want full control over the frame processing
// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents()
// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL
// -----------------------------------------------------------------------------
// Random values generation functions
// -----------------------------------------------------------------------------
// Misc. functions
// -----------------------------------------------------------------------------
// Input-related functions: keyboard
// -----------------------------------------------------------------------------
// Input-related functions: gamepads
// -----------------------------------------------------------------------------
// Input-related functions: mouse
// -----------------------------------------------------------------------------
// Input-related functions: touch
// -----------------------------------------------------------------------------
// Gestures and Touch Handling Functions (Module: rgestures)
// -----------------------------------------------------------------------------