aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/sokol/sapp
diff options
context:
space:
mode:
authorIndrajith K L2022-12-03 17:00:20 +0530
committerIndrajith K L2022-12-03 17:00:20 +0530
commitf5c4671bfbad96bf346bd7e9a21fc4317b4959df (patch)
tree2764fc62da58f2ba8da7ed341643fc359873142f /v_windows/v/vlib/sokol/sapp
downloadcli-tools-windows-f5c4671bfbad96bf346bd7e9a21fc4317b4959df.tar.gz
cli-tools-windows-f5c4671bfbad96bf346bd7e9a21fc4317b4959df.tar.bz2
cli-tools-windows-f5c4671bfbad96bf346bd7e9a21fc4317b4959df.zip
Adds most of the toolsHEADmaster
Diffstat (limited to 'v_windows/v/vlib/sokol/sapp')
-rw-r--r--v_windows/v/vlib/sokol/sapp/enums.v165
-rw-r--r--v_windows/v/vlib/sokol/sapp/sapp.c.v247
-rw-r--r--v_windows/v/vlib/sokol/sapp/sapp_funcs.c.v111
-rw-r--r--v_windows/v/vlib/sokol/sapp/sapp_structs.c.v104
4 files changed, 627 insertions, 0 deletions
diff --git a/v_windows/v/vlib/sokol/sapp/enums.v b/v_windows/v/vlib/sokol/sapp/enums.v
new file mode 100644
index 0000000..8e0efd7
--- /dev/null
+++ b/v_windows/v/vlib/sokol/sapp/enums.v
@@ -0,0 +1,165 @@
+module sapp
+
+pub enum EventType {
+ invalid
+ key_down
+ key_up
+ char
+ mouse_down
+ mouse_up
+ mouse_scroll
+ mouse_move
+ mouse_enter
+ mouse_leave
+ touches_began
+ touches_moved
+ touches_ended
+ touches_cancelled
+ resized
+ iconified
+ restored
+ suspended
+ resumed
+ update_cursor
+ quit_requested
+ clipboard_pasted
+ num
+}
+
+pub enum MouseButton {
+ invalid = -1
+ left = 0
+ right = 1
+ middle = 2
+}
+
+pub enum Modifier {
+ shift = 1 //(1<<0)
+ ctrl = 2 //(1<<1)
+ alt = 4 //(1<<2)
+ super = 8 //(1<<3)
+}
+
+pub enum KeyCode {
+ invalid = 0
+ space = 32
+ apostrophe = 39 //'
+ comma = 44 //,
+ minus = 45 //-
+ period = 46 //.
+ slash = 47 ///
+ _0 = 48
+ _1 = 49
+ _2 = 50
+ _3 = 51
+ _4 = 52
+ _5 = 53
+ _6 = 54
+ _7 = 55
+ _8 = 56
+ _9 = 57
+ semicolon = 59 //;
+ equal = 61 //=
+ a = 65
+ b = 66
+ c = 67
+ d = 68
+ e = 69
+ f = 70
+ g = 71
+ h = 72
+ i = 73
+ j = 74
+ k = 75
+ l = 76
+ m = 77
+ n = 78
+ o = 79
+ p = 80
+ q = 81
+ r = 82
+ s = 83
+ t = 84
+ u = 85
+ v = 86
+ w = 87
+ x = 88
+ y = 89
+ z = 90
+ left_bracket = 91 //[
+ backslash = 92 //\
+ right_bracket = 93 //]
+ grave_accent = 96 //`
+ world_1 = 161 // non-us #1
+ world_2 = 162 // non-us #2
+ escape = 256
+ enter = 257
+ tab = 258
+ backspace = 259
+ insert = 260
+ delete = 261
+ right = 262
+ left = 263
+ down = 264
+ up = 265
+ page_up = 266
+ page_down = 267
+ home = 268
+ end = 269
+ caps_lock = 280
+ scroll_lock = 281
+ num_lock = 282
+ print_screen = 283
+ pause = 284
+ f1 = 290
+ f2 = 291
+ f3 = 292
+ f4 = 293
+ f5 = 294
+ f6 = 295
+ f7 = 296
+ f8 = 297
+ f9 = 298
+ f10 = 299
+ f11 = 300
+ f12 = 301
+ f13 = 302
+ f14 = 303
+ f15 = 304
+ f16 = 305
+ f17 = 306
+ f18 = 307
+ f19 = 308
+ f20 = 309
+ f21 = 310
+ f22 = 311
+ f23 = 312
+ f24 = 313
+ f25 = 314
+ kp_0 = 320
+ kp_1 = 321
+ kp_2 = 322
+ kp_3 = 323
+ kp_4 = 324
+ kp_5 = 325
+ kp_6 = 326
+ kp_7 = 327
+ kp_8 = 328
+ kp_9 = 329
+ kp_decimal = 330
+ kp_divide = 331
+ kp_multiply = 332
+ kp_subtract = 333
+ kp_add = 334
+ kp_enter = 335
+ kp_equal = 336
+ left_shift = 340
+ left_control = 341
+ left_alt = 342
+ left_super = 343
+ right_shift = 344
+ right_control = 345
+ right_alt = 346
+ right_super = 347
+ menu = 348
+}
diff --git a/v_windows/v/vlib/sokol/sapp/sapp.c.v b/v_windows/v/vlib/sokol/sapp/sapp.c.v
new file mode 100644
index 0000000..28b7562
--- /dev/null
+++ b/v_windows/v/vlib/sokol/sapp/sapp.c.v
@@ -0,0 +1,247 @@
+module sapp
+
+import sokol.gfx
+
+pub const used_import = gfx.used_import
+
+// Android needs a global reference to `g_desc`
+__global (
+ g_desc C.sapp_desc
+)
+
+pub fn create_desc() C.sg_desc {
+ metal_desc := C.sg_metal_context_desc{
+ device: metal_get_device()
+ renderpass_descriptor_cb: metal_get_renderpass_descriptor
+ drawable_cb: metal_get_drawable
+ }
+ d3d11_desc := C.sg_d3d11_context_desc{
+ device: d3d11_get_device()
+ device_context: d3d11_get_device_context()
+ render_target_view_cb: d3d11_get_render_target_view
+ depth_stencil_view_cb: d3d11_get_depth_stencil_view
+ }
+ return C.sg_desc{
+ context: C.sg_context_desc{
+ metal: metal_desc
+ d3d11: d3d11_desc
+ color_format: .bgra8
+ }
+ image_pool_size: 1000
+ }
+}
+
+// returns true after sokol-app has been initialized
+[inline]
+pub fn isvalid() bool {
+ return C.sapp_isvalid()
+}
+
+// returns the current framebuffer width in pixels
+[inline]
+pub fn width() int {
+ return C.sapp_width()
+}
+
+// returns the current framebuffer height in pixels
+[inline]
+pub fn height() int {
+ return C.sapp_height()
+}
+
+// returns true when high_dpi was requested and actually running in a high-dpi scenario
+[inline]
+pub fn high_dpi() bool {
+ return C.sapp_high_dpi()
+}
+
+// returns the dpi scaling factor (window pixels to framebuffer pixels)
+[inline]
+pub fn dpi_scale() f32 {
+ return C.sapp_dpi_scale()
+}
+
+// show or hide the mobile device onscreen keyboard
+[inline]
+pub fn show_keyboard(visible bool) {
+ C.sapp_show_keyboard(visible)
+}
+
+// return true if the mobile device onscreen keyboard is currently shown
+[inline]
+pub fn keyboard_shown() bool {
+ return C.sapp_keyboard_shown()
+}
+
+// show or hide the mouse cursor
+[inline]
+pub fn show_mouse(visible bool) {
+ C.sapp_show_mouse(visible)
+}
+
+// show or hide the mouse cursor
+[inline]
+pub fn mouse_shown() bool {
+ return C.sapp_mouse_shown()
+}
+
+[inline]
+pub fn lock_mouse(locked bool) {
+ C.sapp_lock_mouse(locked)
+}
+
+[inline]
+pub fn mouse_locked() bool {
+ return C.sapp_mouse_locked()
+}
+
+// return the userdata pointer optionally provided in sapp_desc
+[inline]
+pub fn userdata() voidptr {
+ return C.sapp_userdata()
+}
+
+// return a copy of the sapp_desc structure
+[inline]
+pub fn query_desc() C.sapp_desc {
+ return C.sapp_query_desc()
+}
+
+// initiate a "soft quit" (sends SAPP_EVENTTYPE_QUIT_REQUESTED)
+[inline]
+pub fn request_quit() {
+ C.sapp_request_quit()
+}
+
+// cancel a pending quit (when SAPP_EVENTTYPE_QUIT_REQUESTED has been received)
+[inline]
+pub fn cancel_quit() {
+ C.sapp_cancel_quit()
+}
+
+// intiate a "hard quit" (quit application without sending SAPP_EVENTTYPE_QUIT_REQUSTED)
+[inline]
+pub fn quit() {
+ C.sapp_quit()
+}
+
+// call from inside event callback to consume the current event (don't forward to platform)
+[inline]
+pub fn consume_event() {
+ C.sapp_consume_event()
+}
+
+// get the current frame counter (for comparison with sapp_event.frame_count)
+[inline]
+pub fn frame_count() u64 {
+ return C.sapp_frame_count()
+}
+
+// write string into clipboard
+[inline]
+pub fn set_clipboard_string(str &char) {
+ C.sapp_set_clipboard_string(str)
+}
+
+// read string from clipboard (usually during SAPP_EVENTTYPE_CLIPBOARD_PASTED)
+[inline]
+pub fn get_clipboard_string() &char {
+ return &char(C.sapp_get_clipboard_string())
+}
+
+// special run-function for SOKOL_NO_ENTRY (in standard mode this is an empty stub)
+[inline]
+pub fn run(desc &C.sapp_desc) {
+ g_desc = desc
+ C.sapp_run(desc)
+}
+
+// GL: return true when GLES2 fallback is active (to detect fallback from GLES3)
+[inline]
+pub fn gles2() bool {
+ return C.sapp_gles2()
+}
+
+// HTML5: enable or disable the hardwired "Leave Site?" dialog box
+[inline]
+pub fn html5_ask_leave_site(ask bool) {
+ C.sapp_html5_ask_leave_site(ask)
+}
+
+// Metal: get ARC-bridged pointer to Metal device object
+[inline]
+pub fn metal_get_device() voidptr {
+ return voidptr(C.sapp_metal_get_device())
+}
+
+// Metal: get ARC-bridged pointer to this frame's renderpass descriptor
+[inline]
+pub fn metal_get_renderpass_descriptor() voidptr {
+ return voidptr(C.sapp_metal_get_renderpass_descriptor())
+}
+
+// Metal: get ARC-bridged pointer to current drawable
+[inline]
+pub fn metal_get_drawable() voidptr {
+ return voidptr(C.sapp_metal_get_drawable())
+}
+
+// macOS: get ARC-bridged pointer to macOS NSWindow
+[inline]
+pub fn macos_get_window() voidptr {
+ return voidptr(C.sapp_macos_get_window())
+}
+
+// iOS: get ARC-bridged pointer to iOS UIWindow
+[inline]
+pub fn ios_get_window() voidptr {
+ return voidptr(C.sapp_ios_get_window())
+}
+
+// D3D11: get pointer to ID3D11Device object
+[inline]
+pub fn d3d11_get_device() voidptr {
+ return voidptr(C.sapp_d3d11_get_device())
+}
+
+// D3D11: get pointer to ID3D11DeviceContext object
+[inline]
+pub fn d3d11_get_device_context() voidptr {
+ return voidptr(C.sapp_d3d11_get_device_context())
+}
+
+// D3D11: get pointer to ID3D11RenderTargetView object
+[inline]
+pub fn d3d11_get_render_target_view() voidptr {
+ return voidptr(C.sapp_d3d11_get_render_target_view())
+}
+
+// D3D11: get pointer to ID3D11DepthStencilView
+[inline]
+pub fn d3d11_get_depth_stencil_view() voidptr {
+ return voidptr(C.sapp_d3d11_get_depth_stencil_view())
+}
+
+// Win32: get the HWND window handle
+[inline]
+pub fn win32_get_hwnd() voidptr {
+ return voidptr(C.sapp_win32_get_hwnd())
+}
+
+// Android: get native activity handle
+[inline]
+pub fn android_get_native_activity() voidptr {
+ return voidptr(C.sapp_android_get_native_activity())
+}
+
+// Toggle full screen
+[inline]
+pub fn toggle_fullscreen() {
+ C.sapp_toggle_fullscreen()
+}
+
+// Check if full screen rendering
+[inline]
+pub fn is_fullscreen() bool {
+ return C.sapp_is_fullscreen()
+}
diff --git a/v_windows/v/vlib/sokol/sapp/sapp_funcs.c.v b/v_windows/v/vlib/sokol/sapp/sapp_funcs.c.v
new file mode 100644
index 0000000..3d177bd
--- /dev/null
+++ b/v_windows/v/vlib/sokol/sapp/sapp_funcs.c.v
@@ -0,0 +1,111 @@
+module sapp
+
+// returns true after sokol-app has been initialized
+fn C.sapp_isvalid() bool
+
+// returns the current framebuffer width in pixels
+fn C.sapp_width() int
+fn C.sapp_widthf() f32
+
+// returns the current framebuffer height in pixels
+fn C.sapp_height() int
+fn C.sapp_heightf() f32
+
+// returns true when high_dpi was requested and actually running in a high-dpi scenario
+fn C.sapp_high_dpi() bool
+
+// returns the dpi scaling factor (window pixels to framebuffer pixels)
+fn C.sapp_dpi_scale() f32
+
+// show or hide the mobile device onscreen keyboard
+fn C.sapp_show_keyboard(visible bool)
+
+// return true if the mobile device onscreen keyboard is currently shown
+fn C.sapp_keyboard_shown() bool
+
+// show or hide the mouse cursor
+fn C.sapp_show_mouse(visible bool)
+
+// return true if the mouse cursor is shown
+fn C.sapp_mouse_shown() bool
+
+// lock or unlock the mouse cursor
+fn C.sapp_lock_mouse(locked bool)
+
+// return true if the mouse cursor is locked
+fn C.sapp_mouse_locked() bool
+
+// return the userdata pointer optionally provided in sapp_desc
+fn C.sapp_userdata() voidptr
+
+// return a copy of the sapp_desc structure
+fn C.sapp_query_desc() C.sapp_desc
+
+// initiate a "soft quit" (sends SAPP_EVENTTYPE_QUIT_REQUESTED)
+fn C.sapp_request_quit()
+
+// cancel a pending quit (when SAPP_EVENTTYPE_QUIT_REQUESTED has been received)
+fn C.sapp_cancel_quit()
+
+// intiate a "hard quit" (quit application without sending SAPP_EVENTTYPE_QUIT_REQUSTED)
+fn C.sapp_quit()
+
+// call from inside event callback to consume the current event (don't forward to platform)
+fn C.sapp_consume_event()
+
+// get the current frame counter (for comparison with sapp_event.frame_count)
+fn C.sapp_frame_count() u64
+
+// write string into clipboard
+fn C.sapp_set_clipboard_string(str &byte)
+
+// read string from clipboard (usually during SAPP_EVENTTYPE_CLIPBOARD_PASTED)
+fn C.sapp_get_clipboard_string() &byte
+
+// special run-function for SOKOL_NO_ENTRY (in standard mode this is an empty stub)
+fn C.sapp_run(desc &C.sapp_desc) int
+
+// GL: return true when GLES2 fallback is active (to detect fallback from GLES3)
+fn C.sapp_gles2() bool
+
+// HTML5: enable or disable the hardwired "Leave Site?" dialog box
+fn C.sapp_html5_ask_leave_site(ask bool)
+
+// Metal: get ARC-bridged pointer to Metal device object
+fn C.sapp_metal_get_device() voidptr
+
+// Metal: get ARC-bridged pointer to this frame's renderpass descriptor
+fn C.sapp_metal_get_renderpass_descriptor() voidptr
+
+// Metal: get ARC-bridged pointer to current drawable
+fn C.sapp_metal_get_drawable() voidptr
+
+// macOS: get ARC-bridged pointer to macOS NSWindow
+fn C.sapp_macos_get_window() voidptr
+
+// iOS: get ARC-bridged pointer to iOS UIWindow
+fn C.sapp_ios_get_window() voidptr
+
+// D3D11: get pointer to ID3D11Device object
+fn C.sapp_d3d11_get_device() voidptr
+
+// D3D11: get pointer to ID3D11DeviceContext object
+fn C.sapp_d3d11_get_device_context() voidptr
+
+// D3D11: get pointer to ID3D11RenderTargetView object
+fn C.sapp_d3d11_get_render_target_view() voidptr
+
+// D3D11: get pointer to ID3D11DepthStencilView
+fn C.sapp_d3d11_get_depth_stencil_view() voidptr
+
+// Win32: get the HWND window handle
+fn C.sapp_win32_get_hwnd() voidptr
+
+// Android: get native activity handle
+fn C.sapp_android_get_native_activity() voidptr
+
+// Toggle full screen
+fn C.sapp_toggle_fullscreen()
+
+// Check if full screen rendering
+fn C.sapp_is_fullscreen() bool
diff --git a/v_windows/v/vlib/sokol/sapp/sapp_structs.c.v b/v_windows/v/vlib/sokol/sapp/sapp_structs.c.v
new file mode 100644
index 0000000..a8ff8b1
--- /dev/null
+++ b/v_windows/v/vlib/sokol/sapp/sapp_structs.c.v
@@ -0,0 +1,104 @@
+module sapp
+
+pub struct C.sapp_desc {
+pub:
+ init_cb fn () // these are the user-provided callbacks without user data
+ frame_cb fn ()
+ cleanup_cb fn ()
+ event_cb fn (&C.sapp_event) //&sapp_event)
+ fail_cb fn (&byte)
+
+ user_data voidptr // these are the user-provided callbacks with user data
+ init_userdata_cb fn (voidptr)
+ frame_userdata_cb fn (voidptr)
+ cleanup_userdata_cb fn (voidptr)
+ event_userdata_cb fn (&C.sapp_event, voidptr)
+ fail_userdata_cb fn (&char, voidptr)
+
+ width int // the preferred width of the window / canvas
+ height int // the preferred height of the window / canvas
+ sample_count int // MSAA sample count
+ swap_interval int // the preferred swap interval (ignored on some platforms)
+ high_dpi bool // whether the rendering canvas is full-resolution on HighDPI displays
+ fullscreen bool // whether the window should be created in fullscreen mode
+ alpha bool // whether the framebuffer should have an alpha channel (ignored on some platforms)
+ window_title &char // the window title as UTF-8 encoded string
+ user_cursor bool // if true, user is expected to manage cursor image in SAPP_EVENTTYPE_UPDATE_CURSOR
+ enable_clipboard bool // enable clipboard access, default is false
+ clipboard_size int // max size of clipboard content in bytes
+ enable_dragndrop bool // enable file dropping (drag'n'drop), default is false
+ max_dropped_files int // max number of dropped files to process (default: 1)
+ max_dropped_file_path_length int // max length in bytes of a dropped UTF-8 file path (default: 2048)
+ // backend-specific options
+ gl_force_gles2 bool // if true, setup GLES2/WebGL even if GLES3/WebGL2 is available
+ win32_console_utf8 bool // if true, set the output console codepage to UTF-8
+ win32_console_create bool // if true, attach stdout/stderr to a new console window
+ win32_console_attach bool // if true, attach stdout/stderr to parent process
+ html5_canvas_name &char // the name (id) of the HTML5 canvas element, default is "canvas"
+ html5_canvas_resize bool // if true, the HTML5 canvas size is set to sapp_desc.width/height, otherwise canvas size is tracked
+ html5_preserve_drawing_buffer bool // HTML5 only: whether to preserve default framebuffer content between frames
+ html5_premultiplied_alpha bool // HTML5 only: whether the rendered pixels use premultiplied alpha convention
+ html5_ask_leave_site bool // initial state of the internal html5_ask_leave_site flag (see sapp_html5_ask_leave_site())
+ ios_keyboard_resizes_canvas bool // if true, showing the iOS keyboard shrinks the canvas
+ // V patches
+ __v_native_render bool // V patch to allow for native rendering
+}
+
+pub struct Event {
+pub:
+ frame_count u64
+ typ EventType
+ key_code KeyCode
+ char_code u32
+ key_repeat bool
+ modifiers u32
+ mouse_button MouseButton
+ mouse_x f32
+ mouse_y f32
+ mouse_dx f32
+ mouse_dy f32
+ scroll_x f32
+ scroll_y f32
+ num_touches int
+ touches [8]C.sapp_touchpoint
+ window_width int
+ window_height int
+ framebuffer_width int
+ framebuffer_height int
+}
+
+pub struct C.sapp_event {
+pub:
+ frame_count u64
+ @type EventType
+ key_code KeyCode
+ char_code u32
+ key_repeat bool
+ modifiers u32
+ mouse_button MouseButton
+ mouse_x f32
+ mouse_y f32
+ mouse_dx f32
+ mouse_dy f32
+ scroll_x f32
+ scroll_y f32
+ num_touches int
+ touches [8]C.sapp_touchpoint
+ window_width int
+ window_height int
+ framebuffer_width int
+ framebuffer_height int
+}
+
+pub fn (e &C.sapp_event) str() string {
+ t := e.@type
+ return 'evt: frame_count=$e.frame_count, type=$t'
+}
+
+pub struct C.sapp_touchpoint {
+pub:
+ identifier u64
+ pos_x f32
+ pos_y f32
+ changed bool
+}