Commit Graph

131 Commits

Author SHA1 Message Date
martinfouilleul 46ef9ee7e8 don't hide debug overlay, paint it transparent instead, brought to you by Windows stuttering and crashing on close if you call SwapBuffer on a hidden window :*) 2023-08-29 16:14:20 +00:00
Martin Fouilleul f268f031af Set user-created surfaces to non-blocking and use the debug overlay surface to block on vsync. 2023-08-29 16:14:20 +00:00
Martin Fouilleul 07414af087 [mtl canvas] Fix nTilesX/nTilesY computation in oc_mtl_canvas_render (don't multiply twice by scale) 2023-08-29 18:13:01 +02:00
Martin Fouilleul 9164e66cc6 [mtl canvas] fixed bug were order of mtl_segment_setup arguments tileOpMax and segmentMax were interverted, which would cull tile ops based on max number of segments, causing weird artifacts for some lengths of the segment buffer 2023-08-29 17:36:30 +02:00
martinfouilleul ec97c6d9ca win32 implementation of oc_surface_bring_to_front/send_to_back 2023-08-28 17:04:55 +02:00
Martin Fouilleul 02bfe30672 Expose oc_surface_bring_to_front/send_to_back() to orca apps, and always bring debug layer to front when displaying it 2023-08-28 16:11:55 +02:00
Martin Fouilleul b5034d3c81 [osx] implement oc_surface_bring_to_front() and oc_surface_send_to_back() 2023-08-28 15:48:24 +02:00
Reuben Dunnington ceb4a3a95d [osx canvas] Early out when eltCount or pathCount == 0, which avoid encoding empty passes and firing metal asserts when running in debug mode from xcode. 2023-08-28 12:16:31 +02:00
Martin Fouilleul 4b1ab4db97 expose oc_surface_contents_scaling() to get dpi scaling from a surface 2023-08-28 12:10:29 +02:00
Ilia Demianenko 3c199dce34 minor 2023-08-25 15:46:11 +02:00
Ilia Demianenko 53cf85db53 Support move/select/delete word with keyboard in textbox 2023-08-25 15:46:04 +02:00
Reuben Dunnington 1917085990 win32: initialize clock in oc_init() 2023-08-25 13:39:04 +00:00
Ilia Demianenko 396d52edcd Clamp rounded rect radius 2023-08-25 13:33:49 +00:00
Reuben Dunnington fad375c403
macos window title/size
* add macOS implmentation for oc_window_set_title()
* move implementation of oc_window_set_content_size() to a block that
  is guaranteed to run on the main thread
2023-08-24 11:57:41 -07:00
Reuben Dunnington bfd4c2a450
update oc_window_set_content_size to use oc_vec2 for consistency 2023-08-24 11:42:27 -07:00
Reuben Dunnington d4cb93c61a
oc_runtime_window_set_title and oc_runtime_window_set_size 2023-08-24 11:42:27 -07:00
Reuben Dunnington e4ac212408
wip window title and size API 2023-08-24 11:42:26 -07:00
Reuben Dunnington 72209200b5
format app.h 2023-08-24 11:42:26 -07:00
Reuben Dunnington b9e843f4bb
fix some crashes in metal implementation when pathCount and etlCount are 0 2023-08-24 11:33:21 -07:00
Martin Fouilleul 42738195b5 Don't assume oc_scratch() is cleared at the frame boundary. Use oc_scratch_begin()/oc_scratch_end() instead 2023-08-23 16:24:13 +02:00
Martin Fouilleul 98f131cb30 Fix leak in metal surface: command buffer must not be committed if there is no surface to present it to, or it will result in a huge leak in metal resources. Also wrap oc_mtl_surface_acquire_command_buffer() in an @autoreleasepool to fix a smaller leak 2023-08-23 15:09:06 +02:00
Martin Fouilleul edaffcb649 implement oc_window_is_minimized on macos 2023-08-23 12:16:01 +02:00
Reuben Dunnington 7b48c20c26 remove stray declaration 2023-08-22 21:32:13 +00:00
Reuben Dunnington 9ca7e82c82 flatten oc_request_quit() binding 2023-08-22 21:32:13 +00:00
Reuben Dunnington 0973e26150 expose oc_request_quit() to wasm runtime 2023-08-22 21:32:13 +00:00
Reuben Dunnington 9d1d8e5306
add win32 impl for oc_clock_time() 2023-08-22 13:42:01 -07:00
Ilia Demianenko 2c07c9b665 Bring back the main modifier, get rid of _impl 2023-08-22 20:15:21 +00:00
Ilia Demianenko a6f81a1320 Use textbox shortcuts from the host platform 2023-08-22 20:15:21 +00:00
Reuben Dunnington 7755827485 ensure focus remains on main window when creating child windows 2023-08-22 20:10:57 +00:00
Reuben Dunnington c27e1c6b62
don't attempt to draw when the window is minimized 2023-08-22 07:43:22 -07:00
Reuben Dunnington 464a25c55d
fixes for a couple compile errors 2023-08-21 11:50:42 -07:00
Martin Fouilleul 94b9cb2bbf Auto-formatting with clang-format 2023-08-19 15:52:11 +02:00
Ilia Demianenko 40887a9a2d Small textbox fixes
Lose focus on mouse click outside
Update selection while dragging outside the box
Stop trying to flip the selection on drag, keep shift+click
2023-08-18 18:15:39 +02:00
Reuben Dunnington 9a125361d6 forward sys keys to default window proc to get alt+f4 handling 2023-08-18 17:22:08 +02:00
Martin Fouilleul 75621d85a5 Big renaming and consistency pass, including:
- "Namespacing" the Orca APIs by adding the oc_ prefix everywhere
- Naming consistency tweaks, eg create_from_memory vs. create_from_data
- Adhering to a more consistent convention when pairing functions defining entities lifetime, eg. create/destroy, push/clear, alloc/recycle, init/cleanup
- Preferring oc_str8 to const char*, except when we expect lots of C string literals (e.g. when tagging UI widgets) or when it would be annoying to systematically wrap data we want to read/write into a string
- Reorganize macros for asserts/logging, and properly exposing them to the apps with non conflicting names
- Generally rearrange some bits and pruning unused stuff to make things more navigable
2023-08-18 16:30:55 +02:00
Martin Fouilleul cf88ba6290 This commit restructures the codebase to melt the milepost platform layer into the main orca codebase.
Here's a list of commits squashed in this update:

- move angle files to ext/ and pull includes/libs from there when needed
- remove milepost/ext/angle_headers
- Collapsed milepost/ext into ext
- Collapse milepost/scripts into scripts/
- collapse milepost/resources into resources/. WARN: this temporarily breaks milepost's native examples
- collapse milepost/test into test/
- renamed test/ to tests/
- build milepost directly into build/bin
- remove unused GLES and KHR folders from sdk/
- reorganizing milepost directory tree into app, graphics, platfrom, ui, util
- collapse milepost/src to src/
- Move all native examples to sketches/ and remove milepost repo
- Moving sketches resources into their own shared folder separate from the runtime's resource folder
- Moving all binding code to src/wasmbind
- Moving all binding code to src/wasmbind
- pong: fix typo in error log
- fixing log parameter order
- add error logs to mg_image_create_*
- Fix build scripts on windows
- fixed include mistake after rebase
- collapsing milepost.{h|c|m} to orca.{h|c|m} and moving from sdk/ to src/
- rename orca_app.h/main.c to runtime.h/c
- collapsed sdk/ to src/
- put old sdk files into their respective dirs
- renamed canvas_api.json to surface_api.json
- moved all stb headers in ext/stb/
- remove unused OpenSansLatinSubset.ttf font
- moving cstdlib to src/wasmlibc and removing some duplicates with src/platform
- move libc stdarg and string functions from platform/ to wasmlibc/
- rename wasmlibc to libc-shim to reflect non-completeness
- Expose abort/assert variadic functions and macros to orca apps, and forward libc-shim abort/assert to these
- move Orca API runtime implementations to runtime_xxx
- fix missing math constants when including math.h with msvc in graphics_common.c
- Change name of runtime to orca_runtime. When bundling on Windows, change name of runtime executable to the name of the app.
2023-08-13 15:28:57 +02:00
Martin Fouilleul e4d9955e83 [gles] expose GLES surface and GLES API to orca apps.
- Allow orca app to request either Canvas or GLES surfaces
- Add bounds check specifications to the json bindings spec format and to the bindings generator scripts.
- Generate GLES API json bindings spec from gl.xml
- Remove APIs that can't be bound with current wasm memory model (ie buffer mapping)
- Manually link remaining APIs, except glGetString
- Add fluid simulation sample
- Add abort messages for wasm loading and runtime fatal errors
- Adapt orca build tool to generate GLES json spec from gl.xml
- Adapt glesTriangle and fluid samples build scripts to new orca build tool
2023-08-08 22:54:29 +02:00
Reuben Dunnington b9bd2723a9
replace pthread with mp_thread 2023-07-30 21:35:08 -07:00
Reuben Dunnington 71236240ab
fully replace bindgen.py with bindgen2.py
* Removes core_api and gles_api .txt bindings and replaces them with .json versions
* Rename bindgen2.py to bindgen.py, effectively deleting the old script
* Update build.bat to reflect new changes
2023-07-28 22:20:26 -07:00
Martin Fouilleul 756b085c5f [osx] update milepost, more consistent window rect api 2023-07-26 15:58:39 +02:00
Martin Fouilleul 213663a09c [milepost update] use autoresizeMask to resize surfaces to the parent window's client area 2023-07-25 17:02:38 +02:00
martinfouilleul 225b506dd4 [win32, surface] automatically resize surfaces to parent window's client area 2023-07-25 14:21:44 +02:00
Ilia Demianenko d9ab264f81 Bring back exports 2023-07-15 15:56:02 -07:00
Ilia Demianenko 6c91caddc0 Fix event passing 2023-07-15 15:55:50 -07:00
Ilia Demianenko 7450930ae8 minor 2023-07-15 00:20:45 -07:00
Ilia Demianenko bffcaa4abf Feedback 2023-07-15 00:15:07 -07:00
Ilia Demianenko 0eefeb3747 UI demo 2023-07-13 21:39:39 -07:00
Martin Fouilleul b7e3e83f3e Block for events in main thread, and avoid burning the planet 2023-06-26 20:00:29 +02:00
Martin Fouilleul 0a83f26f7b avoid some unnecessary str8 copies now that arena-allocating string functions null terminate strings 2023-06-26 16:07:44 +02:00
Martin Fouilleul d0ad92f0b8 Load images in pong example 2023-06-25 20:36:02 +02:00
Martin Fouilleul 1f75f40536 give read _and_ write access to data dir capability, so that we can both read and create files inside it. (warning for when we implement delete/rename etc: Write access to a directory shouldn't permit deleting/renaming it, just to delete/rename stuff inside it) 2023-06-23 17:26:19 +02:00
Martin Fouilleul da2b0867a6 explicitly deselect surfaces before using them in the runloop thread 2023-06-23 15:38:13 +02:00
martinfouilleul 472d3031b2 [win32, multisurface] putting 'present' call for guest and surface overlay next to each other. 2023-06-22 17:28:32 +02:00
martinfouilleul 238963df0b [wip, win32] got debug overlay ~working, with a couple hacks: use top-level transparent windows as child windows (see milepost), and create a dummy surface just to deselect normal and debug surface before using them in render thread. TODO: make an API for deselecting those surfaces. Investigate multisurface options more... 2023-06-21 19:27:15 +02:00
martinfouilleul a09b10714c [win32] debugging multi surface 2023-06-21 15:49:03 +02:00
Martin Fouilleul 93ee157da0 silence clang warning on const qualifiers 2023-06-20 10:26:28 +02:00
martinfouilleul 19c82cfe14 Fix mem_arena_alloc bug in milepost, now debug overlay doesn crash, but doesn't display either (instead it flashes pretty hard, so I disabled it for now. Epilepsy warning if you re-enable it!) 2023-06-19 17:13:56 +02:00
martinfouilleul be84dbc6d1 [win32, wip] Pong sample running on win32 (but debug overlay crashes the app). 2023-06-19 16:51:43 +02:00
martinfouilleul 0312c7c56a add an error popup and quit when the web assembly module can't load 2023-06-19 14:17:40 +02:00
martinfouilleul 3ba2488541 [win32] runtime compiles, and boots (without loading wasm module) 2023-06-17 20:10:11 +02:00
martinfouilleul f5f7c5d8ff [wip, win32] wip implementing missing win32 platform functions 2023-06-16 20:07:26 +02:00
martinfouilleul ea4a19b074 [win32, build] first iteration on build script for win32 2023-06-16 19:57:19 +02:00
Martin Fouilleul 37ab5ca5e4 Sanbox file IO to app data directory with IO_OP_OPEN_AT and FILE_OPEN_RESTRICT 2023-06-11 18:21:04 +02:00
Martin Fouilleul a4a3423907 re-integrating file IO with common platform API 2023-06-09 17:28:33 +02:00
Martin Fouilleul 02014a6ddf update milepost and use new file path functions 2023-05-24 16:31:01 +02:00
Martin Fouilleul bfc81fd062 [io] check that file path doesn't escape app's local data folder when opening files 2023-05-11 19:42:12 +02:00
Martin Fouilleul e82225116b [io] Store last error in file handle, lockdown on fatal error 2023-05-11 19:42:12 +02:00
Martin Fouilleul 25f66b3954 [io, wip] read/write/seek/pos/size operations (todo: error on handle) 2023-05-11 19:42:12 +02:00
Martin Fouilleul 4ae51d7a23 [file io, wip] open/close file API 2023-05-11 19:42:12 +02:00
Martin Fouilleul 3874e798c3 Compile canvas command buffer into wasm and bind host surface/render API 2023-04-26 14:57:12 +02:00
Martin Fouilleul 58effcb413 fixed using wrong length when copying debug entries function name 2023-04-21 10:02:17 +02:00
Martin Fouilleul 28a4fe0579 First draft of in-app debug console 2023-04-20 15:47:18 +02:00
Martin Fouilleul eb09d73fa8 [milepost] changes to event system that allows using events with payloads (eg file paths) across threads 2023-04-19 16:19:13 +02:00
Martin Fouilleul 81ead1ba91 [in-app console]
- splitting input state from app structures in milepost, so that it can be used from another thread than main event thread.
- Adding a collapsable debug overlay to orca window (wip)
2023-04-19 11:28:53 +02:00
Martin Fouilleul 7884ddd339 puling logging functionality from milepost into orca 2023-04-18 18:06:47 +02:00
Martin Fouilleul a1c69fc5f9 [wip] logging system 2023-04-18 14:33:47 +02:00
Martin Fouilleul caa454f1ca Adding printing functions and asserts 2023-04-18 10:46:02 +02:00
Martin Fouilleul d43afa2ac0 memory arena and mem copy/compare functions for orca 2023-04-17 18:13:07 +02:00
Martin Fouilleul 4f90efbb22 start integrating milepost components into orca 2023-04-17 10:56:38 +02:00
Martin Fouilleul db7fe504bb HMN viz jam 2023-04-14 11:48:36 +02:00
Martin Fouilleul 17c0f02962 orca runtime initial commit 2023-04-12 16:21:03 +02:00