Cala is a complete redesign of previous library ADI. It is still in it’s early stages.
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!
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 (bold means a port has been made, italic means the feature doesn’t work on the platform):
- MacOS - missing audio, controller, graphics
- Windows - missing audio, controller, graphics
- Web (WASM)
- Nintendo Switch
- Maybe FreeDOS for fun 😉️
- Others not on this list that you will make a pull request for adding them
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 totem), 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.
Each hardware interface can be enabled with a feature. For example, If you
want to depend on the
audio feature and the
feature, you might put this in your
[dependencies.cala] version = "0.5" features = ["audio", "clock"]
There is a module for each feature (feature and module names match). Module documentation may include simple tutorials. More in depth tutorials may be
Here’s a list of the features, with links to documentation.
user- Getting user information
audio- Playing / recording audio
clock- Date, Time of day, Timer
controller- Game Controller - JoyStick
files- Containerized filesystem loading / saving ZIP files
graphics- Render and User Interface
- Camera - Webcam unimplemented
- Network - Bluetooth & Wifi Direct unimplemented
- Hardware acceleration - SIMD, GPU unimplemented
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 email@example.com. Otherwise, here’s a link to the issues on GitHub.
And, as always, make sure to always follow the code of conduct. Happy coding!
This repository is licensed under either of the following:
- MIT License (MIT) - See accompanying file LICENSE_MIT.txt or copy at https://opensource.org/licenses/MIT
- Boost Software License (BSL-1.0) - See accompanying file LICENSE_BSL.txt or copy at https://www.boost.org/LICENSE_1_0.txt
at your option.
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.