Skip to content

verygoodgraphics/vgg_runtime

Repository files navigation

VGG Runtime

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.

Cross Platform Support

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)

How To Build

This project can be built with CMake using common practice.

1. Build Requirements

  • C++ compiler supports C++17 or higher
  • Make, CMake and Ninja
  • Python3

2. Dependent Libraries

  • Use git submodule update --init to fetch VGG submodules.
  • Nodejs and Skia would be automatically prepared during building.
  • System/user-provided installation of the following libraries
    • Vulkan SDK (with SPIR-V tools)
    • SDL >= 2.26

Optinal: Specify Skia manually

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.

3. Build Examples

Linux/macOS building example

mkdir build
cd build
cmake ..
cmake --build . --parallel

Note: For release build, please add -DCMAKE_BUILD_TYPE=Release to the first cmake command.

Windows building example

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 with Release.

WebAssembly building example

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

iOS building example

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>

Qt building example

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 with Debug to the cmake commands.

4. Unit test

Linux/macOS unit test

cd build
cmake .. -DENABLE_UNIT_TEST=ON
cmake --build . --parallel -t unit_tests
ctest

How To Run

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.

Running with custom font configuration

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.

Star History

Star History Chart

LICENSE

VGG Runtime is licensed under VGG License.