Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge vellottie #13

Merged
merged 43 commits into from
Mar 22, 2024
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
def4ff0
fix: licenses
simbleau Mar 9, 2024
b8c83a0
docs: update README
simbleau Mar 9, 2024
1375b22
docs: authors
simbleau Mar 10, 2024
ce3c007
ci: initial CI
simbleau Mar 10, 2024
b9c439f
refactor: merge vellottie
simbleau Mar 10, 2024
5df4075
feat: examples
simbleau Mar 10, 2024
1b4322d
refactor: rename schema `Lottie` to `Animation`
simbleau Mar 10, 2024
c9a3e1c
build: fix copyright headers
simbleau Mar 10, 2024
86fb77a
fix: wasm compile
simbleau Mar 10, 2024
7142727
build: ignore example assets
simbleau Mar 10, 2024
9c0b79b
ci: remove release workflow
simbleau Mar 10, 2024
47a8a0f
build: switch demo update to push on main
simbleau Mar 11, 2024
867ca73
build: remove unnecessary items
simbleau Mar 11, 2024
6409e34
Update .gitignore
simbleau Mar 11, 2024
15ae080
fix: authors
simbleau Mar 11, 2024
2682d11
fix: .gitignore
simbleau Mar 11, 2024
b7b5de7
fix: remove trunk
simbleau Mar 11, 2024
00e32d8
Update .github/workflows/ci.yml
simbleau Mar 11, 2024
7db7178
fix: authors
simbleau Mar 11, 2024
ee7089d
docs: update badge
simbleau Mar 11, 2024
9ddcee5
docs: update
simbleau Mar 11, 2024
6166d6f
docs: update
simbleau Mar 11, 2024
f646342
build: add tiger license
simbleau Mar 11, 2024
4ace287
Update examples/scenes/Cargo.toml
simbleau Mar 11, 2024
19c4cc5
feat: remove wgpu badge
simbleau Mar 11, 2024
0aa52fc
fix: remove RUSTFLAGS
simbleau Mar 11, 2024
99ecb99
Update examples/with_winit/Cargo.toml
simbleau Mar 11, 2024
a971f1f
docs: remove license
simbleau Mar 11, 2024
e5442a8
docs: update
simbleau Mar 11, 2024
bff269d
Update Cargo.toml
simbleau Mar 13, 2024
98d33b4
Update Cargo.toml
simbleau Mar 13, 2024
5437119
docs: update
simbleau Mar 13, 2024
1c28b1d
fix: newline
simbleau Mar 13, 2024
446d4cf
build: match text in vello
simbleau Mar 13, 2024
07fbe42
fix: move tiger to CC-BY dir
simbleau Mar 13, 2024
4809b9f
feat: google_noto_asset macro
simbleau Mar 13, 2024
219b546
Update Cargo.toml
simbleau Mar 14, 2024
36d9937
fix: remove deprecated note
simbleau Mar 21, 2024
473f118
build: switch logic to f64
simbleau Mar 21, 2024
ca51bd4
refactor: switch to f64
simbleau Mar 21, 2024
57dd04b
refactor: rename trait to `Tween`
simbleau Mar 21, 2024
a892e5c
refactor: finalize merge comments
simbleau Mar 21, 2024
78b78cd
fix: skew logic
simbleau Mar 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[alias]
run_wasm = "run --release --package run_wasm --"
# Other crates use the alias run-wasm, even though crate names should use `_`s not `-`s
# Allow this to be used
run-wasm = "run_wasm"
24 changes: 24 additions & 0 deletions .github/copyright.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

# If there are new files with headers that can't match the conditions here,
# then the files can be ignored by an additional glob argument via the -g flag.
# For example:
# -g "!src/special_file.rs"
# -g "!src/special_directory"

# Check all the standard Rust source files
output=$(rg "^// Copyright (19|20)[\d]{2} (.+ and )?the Vello Authors( and .+)?$\n^// SPDX-License-Identifier: Apache-2\.0 OR MIT$\n\n" --files-without-match --multiline -g "*.rs" .)

if [ -n "$output" ]; then
echo -e "The following files lack the correct copyright header:\n"
echo $output
echo -e "\n\nPlease add the following header:\n"
echo "// Copyright $(date +%Y) the Vello Authors"
echo "// SPDX-License-Identifier: Apache-2.0 OR MIT"
echo -e "\n... rest of the file ...\n"
exit 1
fi

echo "All files have correct copyright headers."
exit 0

172 changes: 172 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
env:
# We aim to always test with the latest stable Rust toolchain, however we pin to a specific
# version like 1.70. Note that we only specify MAJOR.MINOR and not PATCH so that bugfixes still
# come automatically. If the version specified here is no longer the latest stable version,
# then please feel free to submit a PR that adjusts it along with the potential clippy fixes.
RUST_STABLE_VER: "1.76" # In quotes because otherwise (e.g.) 1.70 would be interpreted as 1.7


# Rationale
#
# We don't run clippy with --all-targets because then even --lib and --bins are compiled with
# dev dependencies enabled, which does not match how they would be compiled by users.
# A dev dependency might enable a feature of a regular dependency that we need, but testing
# with --all-targets would not catch that. Thus we split --lib & --bins into a separate step.

name: CI

on:
pull_request:
merge_group:

jobs:
rustfmt:
runs-on: ubuntu-latest
name: cargo fmt
steps:
- uses: actions/checkout@v4

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
components: rustfmt

- name: cargo fmt
run: cargo fmt --all --check

- name: install ripgrep
run: |
sudo apt update
sudo apt install ripgrep

- name: check copyright headers
run: bash .github/copyright.sh

test-stable:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# We use macos-14 as that is an arm runner. These have the virtgpu support we need
os: [windows-latest, macos-14, ubuntu-latest]
include:
- os: ubuntu-latest
gpu: 'yes'
- os: macos-14
gpu: 'yes'
- os: windows-latest
# TODO: The windows runners theoretically have CPU fallback for GPUs, but
# this failed in initial testing
gpu: 'no'
name: cargo clippy + test
steps:
- uses: actions/checkout@v4

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
components: clippy

- name: restore cache
uses: Swatinem/rust-cache@v2

- name: Install native dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev

# Adapted from https://github.com/bevyengine/bevy/blob/b446374392adc70aceb92621b080d1a6cf7a7392/.github/workflows/validation-jobs.yml#L74-L79
- name: install xvfb, llvmpipe and lavapipe
if: matrix.os == 'ubuntu-latest'
# https://launchpad.net/~kisak/+archive/ubuntu/turtle
run: |
sudo apt-get update -y -qq
sudo add-apt-repository ppa:kisak/turtle -y
sudo apt-get update
sudo apt install -y xvfb libegl1-mesa libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers

- name: cargo clippy (no default features)
run: cargo clippy --workspace --lib --bins --no-default-features -- -D warnings

- name: cargo clippy (no default features) (auxiliary)
run: cargo clippy --workspace --tests --benches --examples --no-default-features -- -D warnings

- name: cargo clippy (default features)
run: cargo clippy --workspace --lib --bins -- -D warnings

- name: cargo clippy (default features) (auxiliary)
run: cargo clippy --workspace --tests --benches --examples -- -D warnings

- name: cargo clippy (all features)
run: cargo clippy --workspace --lib --bins --all-features -- -D warnings

- name: cargo clippy (all features) (auxiliary)
run: cargo clippy --workspace --tests --benches --examples --all-features -- -D warnings

# At the time of writing, we don't have any tests. Nevertheless, it's better to still run this
simbleau marked this conversation as resolved.
Show resolved Hide resolved
- name: cargo test
run: cargo test --workspace --all-features
env:
VELLO_CI_GPU_SUPPORT: ${{ matrix.gpu }}

clippy-stable-wasm:
runs-on: ubuntu-latest
name: cargo test (wasm32)
steps:
- uses: actions/checkout@v4

- name: restore cache
uses: Swatinem/rust-cache@v2

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
targets: wasm32-unknown-unknown
components: clippy

- name: cargo clippy (wasm)
run: cargo clippy --all-targets --target wasm32-unknown-unknown --workspace -- -D warnings

android-stable-check:
runs-on: ubuntu-latest
name: cargo check (aarch64-android)
steps:
- uses: actions/checkout@v4

- name: restore cache
uses: Swatinem/rust-cache@v2

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
targets: aarch64-linux-android

- name: install cargo apk
run: cargo install cargo-apk

- name: cargo apk check (android)
run: cargo apk check -p with_winit --lib
env:
# This is a bit of a hack, but cargo apk doesn't seem to allow customising this
RUSTFLAGS: '-D warnings'

docs:
name: cargo doc
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v4

- name: install nightly toolchain
uses: dtolnay/rust-toolchain@nightly

- name: restore cache
uses: Swatinem/rust-cache@v2

# We test documentation using nightly to match docs.rs. This prevents potential breakages
- name: cargo doc
run: cargo doc --workspace --all-features --no-deps --document-private-items -Zunstable-options -Zrustdoc-scrape-examples
69 changes: 69 additions & 0 deletions .github/workflows/pages-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Web Demo Update

on:
push:
tags:
- 'v*'
simbleau marked this conversation as resolved.
Show resolved Hide resolved
workflow_dispatch:

jobs:
release-web:
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install | Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown

- name: Install | WASM Bindgen
uses: jetli/[email protected]
with:
version: 'latest'

- name: Build | WASM
run: cargo build -p with_winit --bin with_winit_bin --release --target wasm32-unknown-unknown

- name: Package | WASM
run: |
mkdir public
wasm-bindgen --target web --out-dir public target/wasm32-unknown-unknown/release/with_winit_bin.wasm --no-typescript
cat << EOF > public/index.html
<html>
<title>Velato Web Demo</title>
<meta content=no-cache http-equiv=Cache-control>
<meta content=-1 http-equiv=Expires>
<script type=module>import initSync from"/velato/with_winit_bin.js";initSync(`/velato/with_winit_bin_bg.wasm`);</script>
<link as=fetch crossorigin href=/velato/with_winit_bin_bg.wasm rel=preload type=application/wasm>
<link crossorigin href=/velato/with_winit_bin.js rel=modulepreload>
</head>
<body>
<style>
body {
margin: 0;
padding: 0;
}
</style>
</body>
</html>
EOF

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './public'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
32 changes: 30 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,32 @@
/target
simbleau marked this conversation as resolved.
Show resolved Hide resolved
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
simbleau marked this conversation as resolved.
Show resolved Hide resolved

assets/*
examples/assets/*

# Generated by Cargo
# will have compiled files and executables
target/

# Generated by Trunk
dist/

# These are backup files generated by rustfmt
**/*.rs.bk
simbleau marked this conversation as resolved.
Show resolved Hide resolved

# Some people use VSCode
/.vscode/

# Some people use IntelliJ with Rust
/.idea/
*.iml

# Some people use pre-commit
.pre-commit-config.yaml
.pre-commit-config.yml
simbleau marked this conversation as resolved.
Show resolved Hide resolved

# Some people have Apple
.DS_Store
simbleau marked this conversation as resolved.
Show resolved Hide resolved

# Generated on wasm-pack failure
**/unsupported.js
15 changes: 14 additions & 1 deletion AUTHORS
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
# This is the list of Velato's significant contributors.
# This is the list of Vello's significant contributors.
simbleau marked this conversation as resolved.
Show resolved Hide resolved
#
# This does not necessarily list everyone who has contributed code,
# especially since many employees of one corporation may be contributing.
# To see the full list of contributors, see the revision history in
# source control.
Google LLC
Raph Levien
Chad Brokaw
Arman Uguray
Elias Naur
Daniel McNab
Spencer C. Imbleau
Bruce Mitchener
Tatsuyuki Ishi
Markus Siglreithmaier
Rose Hudson
Brian Merchant
Matt Rice
Kaur Kuut
simbleau marked this conversation as resolved.
Show resolved Hide resolved
25 changes: 16 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,28 +1,35 @@
[workspace]
resolver = "2"
members = ["demo"]
members = ["examples/with_winit", "examples/run_wasm", "examples/scenes"]

[workspace.package]
edition = "2021"
version = "0.0.1"
license = "MIT OR Apache-2.0"
version = "0.1.0"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/linebender/velato"

simbleau marked this conversation as resolved.
Show resolved Hide resolved
[package]
name = "velato"
description = "Lottie renderer built on vello."
description = "A Lottie integration for vello."
categories = ["rendering", "graphics"]
keywords = ["2d", "vector-graphics", "animation", "lottie"]

keywords = ["2d", "vector-graphics", "vello", "animation", "lottie"]
version.workspace = true
license.workspace = true
edition.workspace = true
repository.workspace = true

[workspace.dependencies]
vello = { git = "https://github.com/linebender/vello", rev = "b0303ccf98df15a8b196272720d364a56f7304ba" }

vello = "0.1"
simbleau marked this conversation as resolved.
Show resolved Hide resolved
simbleau marked this conversation as resolved.
Show resolved Hide resolved

[dependencies]
vello = { workspace = true }
bodymovin = { git = "https://github.com/vectorgameexperts/bodymovin-rs" }
keyframe = "1"
once_cell = "1"

# For the parser
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_repr = "0.1"

[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
wasm-bindgen-test = "0.3"
simbleau marked this conversation as resolved.
Show resolved Hide resolved
Loading