VGG Runtime is an implementation of VGG Specs with cross-platform rendering and scripting capabilities.
VGG Runtime only supports reading and rendering of .daruma
files, which
- you can use VGG Daruma to convert from other design files online,
- or you can use VGG Sketch Parser to convert from Sketch file locally.
Platform|Arch | X86 | ARM | RISC-V | WASM |
---|---|---|---|---|
Linux | ✅ | ⛏️ | ✅ | N/A |
Android | ❌ | ⛏️ | ⭕️ | N/A |
Harmony | ❌ | ⛏️ | ⭕️ | N/A |
iOS | N/A | ✅ | N/A | N/A |
macOS | ✅ | ✅ | N/A | N/A |
Windows | ✅ | ❌ | N/A | N/A |
WASM | N/A | N/A | N/A | ✅ |
✅ Supported
⛏️ Working in process
⭕️ Not supported (but planned)
❌ Not supported (no official plan)
This project can be built with CMake using common practice.
- C++ compiler supports C++17 or higher
- Make, CMake and Ninja
- Python3
- Use
git submodule update --init
to fetch VGG submodules. Nodejs
andSkia
would be automatically prepared during building.- System/user-provided installation of the following libraries
- Vulkan SDK (with SPIR-V tools)
- SDL >= 2.26
You can also use your own skia by specifying SKIA_DIR
:
cmake .. -DSKIA_DIR=/path/to/your/skia
Skia can be download from the official website. We use our Skia fork vgg/m116 branch for building, which has some modifications and fixes for our scenario. We don't assure other versions could be successfully compiled using our CMake script.
mkdir build
cd build
cmake ..
cmake --build . --parallel
Note: For release build, please add
-DCMAKE_BUILD_TYPE=Release
to the firstcmake
command.
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 17 2022"
cmake --build . --parallel --config Debug -t sdl_runtime
Note: For release build, just replace
Debug
withRelease
.
Emscripten SDK is required to build WebAssembly version. You should install and activate at least one version of emsdk before proceeding.
mkdir build.wasm
cd build.wasm
source /path/to/emsdk/emsdk_env.sh
emcmake cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --parallel
Build & install vgg_container libraries for vgg_ios.
mkdir build.ios
cd build.ios
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../cmake/vgg.ios.toolchain.cmake -DVGG_VAR_TARGET="iOS"
# cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../cmake/vgg.ios.toolchain.cmake -DVGG_VAR_TARGET="iOS-simulator"
cmake --build . --parallel -t vgg_container
cmake --install . --prefix <path/to/vgg_ios/VggRuntime/external>
Build & install vgg_container libraries for vgg_qt.
mkdir build.qt
cd build.qt
cmake .. -DVGG_CONTAINER_FOR_QT=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --parallel -t vgg_container --config Release
cmake --install . --component container --config Release --prefix <path/to/vgg_qt/VggContainer/external>
Note: For debug build, please replace
Release
withDebug
to thecmake
commands.
cd build
cmake .. -DENABLE_UNIT_TEST=ON
cmake --build . --parallel -t unit_tests
ctest
Make sure you have built the sdl_runtime
target. Then in the build directory, run it with
./sdl_runtime /path/to/your/file.daruma
where file.daruma
is a file conforming to VGG Specs, which can be generated using VGG Daruma or VGG Sketch Parser.
VGG Runtime uses fonts in system directories by default, but you can assign extra font folders in a configuration file as follows
./sdl_runtime /path/to/your/file.daruma -c /path/to/your/config.json
where an example of config.json
is provided in asset/etc/config.json.
VGG Runtime is licensed under VGG License.