<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Cala</title><link rel="icon" href="icon.svg"><link rel="stylesheet" href="style.css"/></head><body><div class="menu"><p><a href="https://libcala.github.io"><img src="https://libcala.github.io/logo.svg" alt="Cala" /></a><a href="https://libcala.github.io/cala">About</a><a href="https://github.com/libcala/cala">Source</a><a href="https://libcala.github.io/cala/changelog">Changelog</a><a href="https://libcala.github.io/tutorials">Tutorials</a></p>
</div><div class="content"><div class="page"><p><img src="https://libcala.github.io/logo.svg" alt="Cala" /></p>
<p><a href="https://docs.rs/cala"><img src="https://docs.rs/cala/badge.svg" alt="docs.rs" /></a> <a href="https://travis-ci.com/libcala/cala"><img src="https://api.travis-ci.com/libcala/cala.svg?branch=master" alt="build status" /></a> <a href="https://crates.io/crates/cala"><img src="https://img.shields.io/crates/v/cala.svg" alt="crates.io" /></a> <a href="https://discord.gg/nXwF59K"><img src="https://img.shields.io/badge/discord-Cala%20Project-green.svg" alt="discord" /></a></p>
<p><a href="https://libcala.github.io/cala">About</a> | <a href="https://github.com/libcala/cala">Source</a> | <a href="https://libcala.github.io/cala/changelog">Changelog</a> | <a href="https://libcala.github.io/tutorials">Tutorials</a> | <a href="https://libcala.github.io">Blog</a></p>
<h3><a href="#note" aria-hidden="true" class="anchor" id="note"></a><a href="#note">Note</a></h3>
<p>Cala is a complete redesign of previous library <a href="%22https://crates.io/crates/adi%22">ADI</a>. It is still in it’s early stages.</p>
<h1><a href="#about" aria-hidden="true" class="anchor" id="about"></a><a href="#about">About</a></h1>
<p>Easily create cross-platform applications. Some common tasks are not easily portable across different platforms, and this crate hopes to fix that. That way you don’t have to worry about how to port your GUI, audio, or bluetooth interface, etc. and can get straight to building your application’s content!</p>
<p>Cala is a platform-agnostic system interface for hardware IO. This means that eventually, Cala should support all of the different hardware that’s connected to your computer. Cala is designed so that it talks to the operating system to interface with the hardware, so no special permissions are needed for your application. Here’s a list of all of the targeted platforms (<strong>bold</strong> means a port has been made, <em>italic</em> means the feature doesn’t work on the platform):</p>
<ul>
<li><strong>Linux</strong></li>
<li><strong>MacOS</strong> - missing <a href="https://github.com/libcala/cala/issues/5"><em>audio</em></a>, <a href="https://github.com/libcala/cala/issues/7"><em>controller</em></a>, <a href="https://github.com/libcala/cala/issues/9"><em>graphics</em></a></li>
<li><strong>Windows</strong> - missing <a href="https://github.com/libcala/cala/issues/4"><em>audio</em></a>, <a href="https://github.com/libcala/cala/issues/6"><em>controller</em></a>, <a href="https://github.com/libcala/cala/issues/8"><em>graphics</em></a></li>
<li>Redox</li>
<li>Android</li>
<li>iOS</li>
<li>Web (WASM)</li>
<li>Nintendo Switch</li>
<li>XBox</li>
<li>PlayStation</li>
<li>FreeBSD</li>
<li>Maybe FreeDOS for fun 😉️</li>
<li>Others not on this list that you will make a pull request for adding them</li>
</ul>
<h1><a href="#motivation--naming" aria-hidden="true" class="anchor" id="motivation--naming"></a><a href="#motivation--naming">Motivation & Naming</a></h1>
<p>The aim is to create a newer, better GTK + SDL in Rust! Why GTK + SDL? Because a lot of programs need to depend on both anyway (like <a href="https://en.wikipedia.org/wiki/Totem_Video_Player">totem</a>), and they do a lot of the same things; Usually one library does each specific task better than the other. The goal of this library is to provide the common ground for video games and general GUI applications together. The name cala is derived from the fungus known as calafate rust.</p>
<h1><a href="#getting-started" aria-hidden="true" class="anchor" id="getting-started"></a><a href="#getting-started">Getting Started</a></h1>
<p>Each hardware interface can be enabled with a feature. For example, If you<br />
want to depend on the <code>audio</code> feature and the <code>clock</code><br />
feature, you might put this in your <code>Cargo.toml</code>:</p>
<!--
```toml
[dependencies.cala]
version = "0.5"
features = ["audio", "clock"]
```
-->
<p style="width:100%"><pre lang="toml"><code><span style="color:#FFF;font-weight:bold;">[dependencies.cala]</span>
<span style="color:#0F0;font-weight:bold;">version</span> = <span style="color:#0F0">"0.5"</span>
<span style="color:#0F0;font-weight:bold;">features</span> = [<span style="color:#0F0">"audio"</span>, <span style="color:#0F0">"clock"</span>]</code></pre></p>
<p>There is a module for each feature (feature and module names match). Module documentation may include simple tutorials. More in depth tutorials may be<br />
found <a href="https://libcala.github.io/tutorials">here</a>.</p>
<h2><a href="#features" aria-hidden="true" class="anchor" id="features"></a><a href="#features">Features</a></h2>
<p>Here’s a list of the features, with links to documentation.</p>
<ul>
<li><a href="https://docs.rs/cala/0.5.0/cala/user/index.html"><code>user</code></a> - Getting user information</li>
<li><a href="https://docs.rs/cala/0.5.0/cala/audio/index.html"><code>audio</code></a> - Playing / recording audio</li>
<li><a href="https://docs.rs/cala/0.5.0/cala/clock/index.html"><code>clock</code></a> - Date, Time of day, Timer</li>
<li><a href="https://docs.rs/cala/0.5.0/cala/controller/index.html"><code>controller</code></a> - Game Controller - JoyStick</li>
<li><a href="https://docs.rs/cala/0.5.0/cala/files/index.html"><code>files</code></a> - Containerized filesystem loading / saving ZIP files</li>
<li><a href="https://docs.rs/cala/0.5.0/cala/graphics/index.html"><code>graphics</code></a> - Render and User Interface</li>
<li>Camera - Webcam <a href="https://github.com/libcala/cala/issues/1">unimplemented</a></li>
<li>Network - Bluetooth & Wifi Direct <a href="https://github.com/libcala/cala/issues/10">unimplemented</a></li>
<li>Hardware acceleration - SIMD, GPU <a href="https://github.com/libcala/cala/issues/11">unimplemented</a></li>
</ul>
<h1><a href="#contributing" aria-hidden="true" class="anchor" id="contributing"></a><a href="#contributing">Contributing</a></h1>
<p>Contributors are always welcome! Whether it is a bug report, bug fix, feature request, feature implementation or whatever. Don’t be shy about getting involved. I always make time to fix bugs, so usually a patched version of the library will be out soon after a report. Features take me longer, though. I’ll also always listen to any design critiques you have. If you have any questions you can email me at <a href="mailto:jeronlau@plopgrizzly.com">jeronlau@plopgrizzly.com</a>. Otherwise, <a href="https://github.com/libcala/cala/issues">here’s a link to the issues on GitHub</a>.</p>
<p>And, as always, make sure to always follow the <a href="https://github.com/libcala/cala/blob/master/CODEOFCONDUCT.md">code of conduct</a>. Happy coding!</p>
<h1><a href="#license" aria-hidden="true" class="anchor" id="license"></a><a href="#license">License</a></h1>
<p>This repository is licensed under either of the following:</p>
<ul>
<li>MIT License (MIT) - See accompanying file <a href="https://github.com/libcala/cala/blob/master/LICENSE_MIT.txt">LICENSE_MIT.txt</a> or copy at <a href="https://opensource.org/licenses/MIT">https://opensource.org/licenses/MIT</a></li>
<li>Boost Software License (BSL-1.0) - See accompanying file <a href="https://github.com/libcala/cala/blob/master/LICENSE_BSL.txt">LICENSE_BSL.txt</a> or copy at <a href="https://www.boost.org/LICENSE_1_0.txt">https://www.boost.org/LICENSE_1_0.txt</a></li>
</ul>
<p>at your option.</p>
<h2><a href="#contribution-licensing" aria-hidden="true" class="anchor" id="contribution-licensing"></a><a href="#contribution-licensing">Contribution Licensing</a></h2>
<p>Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above without any additional terms or conditions.</p>
</div></div></body>