This repo is not used anymore. Development of Orca was moved here: https://github.com/orca-app/orca https://orca-app.dev/
Go to file
Martin Fouilleul 5cdded57b3 Replace confusing oc_text_bounding_box() with oc_font_text_metrics(), which returns both the logical metrics and ink bounding box of text 2023-09-10 19:25:41 +02:00
doc oc_render uses currently selected surface 2023-09-10 15:21:11 +02:00
ext Auto-formatting with clang-format 2023-08-19 15:52:11 +02:00
resources This commit restructures the codebase to melt the milepost platform layer into the main orca codebase. 2023-08-13 15:28:57 +02:00
samples Replace confusing oc_text_bounding_box() with oc_font_text_metrics(), which returns both the logical metrics and ink bounding box of text 2023-09-10 19:25:41 +02:00
scripts vblank notification: win32 2023-09-08 20:58:11 -07:00
sketches Replace confusing oc_text_bounding_box() with oc_font_text_metrics(), which returns both the logical metrics and ink bounding box of text 2023-09-10 19:25:41 +02:00
src Replace confusing oc_text_bounding_box() with oc_font_text_metrics(), which returns both the logical metrics and ink bounding box of text 2023-09-10 19:25:41 +02:00
tests - Added oc_file_open_with_request() to request new file capability for a given path. This presents user with a message box allowing them to accept or deny the request. 2023-09-02 11:00:28 +02:00
.clang-format clang-format: use custom brace/indent style 2023-08-22 20:18:04 +00:00
.gitignore Makes sketches compile and run with changes introduced by renaming pass. 2023-08-28 12:37:33 +02:00
.orcaroot Convert build scripts to Python (#31) 2023-08-08 09:38:43 +00:00
Readme.md add current features to Readme 2023-09-10 15:00:58 +02:00
orca Detect Orca source from anywhere and make scripts work from anywhere 2023-08-18 16:44:28 +02:00
orca.bat Convert build scripts to Python (#31) 2023-08-08 09:38:43 +00:00

Readme.md

DISCLAIMER: This project is very much a Work In Progress. We're making it accessible in this very early state so that participants to the Wheel Reinvention Jam 2023 can try it out and maybe use it as their jamming platform. Expect bugs, missing and/or incomplete features, unstable APIs, and sparse documentation. Some current issues might be a show stopper for you, so make sure you can build and run the sample apps before jumping in. If you do choose to try out Orca anyway, well thanks! We'll do our best to answer your questions, and we'd really appreciate to hear your feedback!

Orca


Orca is a devlopment platform and runtime environment for cross-platform, sandboxed graphical WebAssembly applications. In this early MVP you can:

  • Receive mouse and keyboard input
  • Draw paths, images and text using a 2D vector graphics API.
  • Draw 2D/3D graphics using OpenGL ES 3.1 (minus a few features)
  • Build user interfaces using our UI API and default widgets.
  • Read and write files using a capability based API.

Installing

//TODO: Ben can you complete this section?

Clone the repo: git clone git@git.handmade.network:hmn/orca.git.

Cd to the orca directory and build the Orca runtime:

cd orca
./orca dev build-runtime

Install the orca dev tools:

./orca dev install

Building the sample Orca apps

Cd to the sample project directory and run its build script:

cd samples/pong
./build.sh

On macOS this creates a Pong.app bundle in samples/pong that you can double click to run. On Windows this creates a Pong directory in samples/pong. You can launch the app by running Pong/bin/Pong.exe.

Writing an Orca app

The following documents can help you write an application using the Orca APIs:

  • The Quick Start Guide will walk you through writing and building a simple example application.
  • The samples folder contains sample applications that show various aspects of the Orca API and support library:
    • clock is a simple clock showcasing vector graphics and the time API.
    • breakout is a mini breakout game making use of the vector graphics API.
    • triangle shows how to draw a spining triangle using the GLES API.
    • fluid is a fluid simulation using a more complex GLES setup.
    • ui showcases the UI API and Orca's default UI widgets.
  • The API Cheatsheets provide a list of Orca API functions, grouped by topic.

Building and bundling an Orca app

//TODO: Ben, can you complete this section? Or should that be in the QuickStart guide?

You must compile your application along with the Orca support code, into a WebAssembly module. The command orca src cflags can help you set up your compiler's flags to do so.

Once you have built your WebAssembly module, you can invoke the command orca bundle to bundle it with your apps resources and the Orca runtime to produce an application.

License

Orca is distributed under the terms of the GNU Affero General Public License version 3, with additional terms in accordance with section 7 of AGPLv3. These additional terms ensure that:

  • Modified versions of Orca must reasonably inform users that they are modified.
  • You can distribute your application's WebAssembly modules under the terms of your choice, and are not required to license them under the terms of the AGPLv3.

Copyright and License details can be found in LICENSE.txt