enso/gui
2020-01-17 14:36:38 +01:00
..
.github Add wasm-pack test to github workflows (https://github.com/enso-org/ide/pull/49) 2019-11-25 11:52:51 +01:00
build-utilities Text display: letters alignment (https://github.com/enso-org/ide/pull/62) 2019-12-04 17:45:31 +01:00
docs Update style-guide.md (https://github.com/enso-org/ide/pull/92) 2020-01-03 14:46:27 +01:00
examples Cleaning codebase + initial texture support (https://github.com/enso-org/ide/pull/110) 2020-01-15 15:47:44 +01:00
lib Texture rendering (https://github.com/enso-org/ide/pull/112) 2020-01-17 14:36:38 +01:00
script Cleaning codebase + initial texture support (https://github.com/enso-org/ide/pull/110) 2020-01-15 15:47:44 +01:00
.gitignore Buffer Management for BaseGL (https://github.com/enso-org/ide/pull/51) 2019-11-27 18:04:33 +01:00
.rustfmt.toml Buffer Management for BaseGL (https://github.com/enso-org/ide/pull/51) 2019-11-27 18:04:33 +01:00
Cargo.toml Cleaning codebase + initial texture support (https://github.com/enso-org/ide/pull/110) 2020-01-15 15:47:44 +01:00
LICENSE Cleaning codebase + initial texture support (https://github.com/enso-org/ide/pull/110) 2020-01-15 15:47:44 +01:00
README.md Cleaning codebase + initial texture support (https://github.com/enso-org/ide/pull/110) 2020-01-15 15:47:44 +01:00

License Actions Status Coverage Stability

BaseGL

BaseGL is a blazing fast 2D vector rendering engine with a rich set of primitives and a GUI component library. It is able to display millions of shapes 60 frames per second in a web browser on a modern laptop hardware.

This repository is a work in progress of BaseGL 2.0. Please refer to BaseGL 1.0 repository for more information: https://github.com/luna/basegl-old.

Development

The Rust toolchain

This project uses several features available only in the nightly Rust toolchain. To setup the toolchain, please use the the Rust toolchain installer:

rustup toolchain install nightly-2019-11-04 # Install the nightly channel.
rustup default nightly                      # Set it as the default one.
rustup component add clippy                 # Install the linter.

Building the sources

Please use the script/build.sh script to build the project or the script/watch.sh script to run a file watch utility which will build the project on every source change. The scripts are thin wrappers for wasm-pack and accept the same command line arguments. In particular, you can provide them with --release, --dev, or --profile flags to switch the compilation profile. If not option is provided, the scripts default to the --release profile.

Running examples

Please note that in order to run the examples you have to first build the project. For best experience, it is recommended to use the scripts/watch.sh in a second shell. In order to build the demo scenes, follow the steps below:

cd examples
npm install
npm run start 

You can now navigate to http://localhost:8080 and play with the demo scenes!

Please note that npm run start runs the Webpack Dev-Server in the production mode. You can use the npm run start-dev in order to enable the development mode, however, as all sources are provided to Webpack in form of WASM binaries, we haven't observed any differences between them in this project.

While Webpack provides handy utilities for development, like live-reloading on sources change, it also adds some runtime overhead. In order to run the compiled examples using a lightweight http-server (without live-reloading functionality), please use the npm run prod-server command.

Please remember to disable the cache in your browser during development!

Minimizing the WASM binary size.

After building the project you can use the scripts/minimize_wasm.sh to optimize the binary and compress it by using gzip. After the script is complete, the final size is printed to stdout. Please note that in order to run the script, the Binaryen toolkit has to be installed on your system.

Running tests

The sources use both unit tests and web test, which are run in a browser and produce visual results. To run them, use the scripts/test.sh script and follow the output in the terminal.

Working with the source code

Formatting

Please note that this codebase does not use rustfmt. Please read the following documents to learn more about reasons behind this decision and the recommended code style guide. Be sure to carefully read the documents before contributing to this repository:

Linting

Please be sure to fix all errors reported by scripts/lint.sh before creating a pull request to this repository.