mirror of
https://github.com/penpot/penpot.git
synced 2026-06-16 04:12:03 +00:00
🎉 Update skia binaries to 0.97.0
This commit is contained in:
parent
a157ecdc5b
commit
88b5d68fec
31
render-wasm/Cargo.lock
generated
31
render-wasm/Cargo.lock
generated
@ -66,10 +66,11 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.1.31"
|
||||
version = "1.2.62"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f"
|
||||
checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"shlex",
|
||||
]
|
||||
|
||||
@ -142,6 +143,12 @@ dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "find-msvc-tools"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
version = "1.0.34"
|
||||
@ -390,9 +397,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.11.0"
|
||||
version = "1.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
|
||||
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
@ -402,9 +409,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.4.8"
|
||||
version = "0.4.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
|
||||
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
@ -521,9 +528,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||
|
||||
[[package]]
|
||||
name = "skia-bindings"
|
||||
version = "0.93.1"
|
||||
version = "0.97.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2359f7e30c9da3f322f8ca3d4ec0abbc12a40035ce758309db0cdab07b5d4476"
|
||||
checksum = "d6e3bcf8f25bf047e83110838463e8d06696c12fccc3d3794adf448b4d81f34b"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"cc",
|
||||
@ -538,9 +545,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "skia-safe"
|
||||
version = "0.93.1"
|
||||
version = "0.97.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f9e837ea9d531c9efee8f980bfcdb7226b21db0285b0c3171d8be745829f940"
|
||||
checksum = "935d4d174fb749bac9265eb41cad75039d32fda2d9c1a1e81b430df0e210a409"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bitflags",
|
||||
@ -573,9 +580,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tar"
|
||||
version = "0.4.42"
|
||||
version = "0.4.46"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020"
|
||||
checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840"
|
||||
dependencies = [
|
||||
"filetime",
|
||||
"libc",
|
||||
|
||||
@ -26,7 +26,7 @@ gl = "0.14.0"
|
||||
glam = "0.24.2"
|
||||
indexmap = "2.7.1"
|
||||
macros = { path = "macros" }
|
||||
skia-safe = { version = "0.93.1", default-features = false, features = [
|
||||
skia-safe = { version = "0.97.0", default-features = false, features = [
|
||||
"gl",
|
||||
"svg",
|
||||
"textlayout",
|
||||
|
||||
@ -10,7 +10,7 @@ fi
|
||||
|
||||
export BUILD_NAME="${BUILD_NAME:-render-wasm}"
|
||||
export CARGO_BUILD_TARGET=${CARGO_BUILD_TARGET:-"wasm32-unknown-emscripten"};
|
||||
export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.93.1/skia-binaries-319323662b1685a112f5-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache-webp.tar.gz"}
|
||||
export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.97.0/skia-binaries-fdd89c91b34b4e26dd64-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache-webp.tar.gz"}
|
||||
|
||||
# 256 MB of initial heap to perform less
|
||||
# initial calls to memory grow.
|
||||
@ -29,6 +29,10 @@ export EM_MEMORY_GROWTH_GEOMETRIC_STEP="0.8"
|
||||
# Default: dlmalloc
|
||||
export EM_MALLOC="dlmalloc"
|
||||
|
||||
RENDER_WASM_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# Link Skia's std::__hash_memory at final emcc link (must use em++, not host g++ via build.rs).
|
||||
export EMCC_HASH_MEMORY_SHIM="${RENDER_WASM_ROOT}/src/shim/hash_memory.cpp"
|
||||
|
||||
export EMCC_CFLAGS="--no-entry \
|
||||
--js-library src/js/wapi.js \
|
||||
-sMALLOC=$EM_MALLOC \
|
||||
@ -44,7 +48,8 @@ export EMCC_CFLAGS="--no-entry \
|
||||
-sMODULARIZE=1 \
|
||||
-sDISABLE_EXCEPTION_CATCHING=1 \
|
||||
-sFILESYSTEM=0 \
|
||||
-sEXPORT_ES6=1";
|
||||
-sEXPORT_ES6=1 \
|
||||
${EMCC_HASH_MEMORY_SHIM}";
|
||||
|
||||
export EM_CACHE="/tmp/emsdk_cache";
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ fi
|
||||
. ./_build_env
|
||||
|
||||
export CARGO_BUILD_TARGET=${CARGO_BUILD_TARGET:-"wasm32-unknown-emscripten"};
|
||||
export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.93.1/skia-binaries-319323662b1685a112f5-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache-webp.tar.gz"}
|
||||
export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.97.0/skia-binaries-fdd89c91b34b4e26dd64-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache-webp.tar.gz"}
|
||||
|
||||
|
||||
ALLOWED_RULES="-D static_mut_refs"
|
||||
|
||||
@ -51,12 +51,21 @@ impl Gradient {
|
||||
rect.left + self.end.0 * rect.width(),
|
||||
rect.top + self.end.1 * rect.height(),
|
||||
);
|
||||
skia::gradient_shader::linear(
|
||||
(start, end),
|
||||
self.colors.as_slice(),
|
||||
let colors4f: Vec<skia::Color4f> = self.colors.iter().copied().map(Into::into).collect();
|
||||
let colors = skia::gradient::Colors::new(
|
||||
colors4f.as_slice(),
|
||||
Some(self.offsets.as_slice()),
|
||||
skia::TileMode::Clamp,
|
||||
None,
|
||||
None::<skia::ColorSpace>,
|
||||
);
|
||||
let gradient =
|
||||
skia::gradient::Gradient::new(colors, skia::gradient::Interpolation::default());
|
||||
skia::gradient::shaders::linear_gradient(
|
||||
(
|
||||
skia::Point::new(start.0, start.1),
|
||||
skia::Point::new(end.0, end.1),
|
||||
),
|
||||
&gradient,
|
||||
None,
|
||||
)
|
||||
}
|
||||
@ -83,15 +92,16 @@ impl Gradient {
|
||||
transform.pre_scale((self.width * rect.width() / rect.height(), 1.), None);
|
||||
transform.pre_translate((-center.x, -center.y));
|
||||
|
||||
skia::gradient_shader::radial(
|
||||
center,
|
||||
distance,
|
||||
self.colors.as_slice(),
|
||||
let colors4f: Vec<skia::Color4f> = self.colors.iter().copied().map(Into::into).collect();
|
||||
let colors = skia::gradient::Colors::new(
|
||||
colors4f.as_slice(),
|
||||
Some(self.offsets.as_slice()),
|
||||
skia::TileMode::Clamp,
|
||||
None,
|
||||
Some(&transform),
|
||||
)
|
||||
None::<skia::ColorSpace>,
|
||||
);
|
||||
let gradient =
|
||||
skia::gradient::Gradient::new(colors, skia::gradient::Interpolation::default());
|
||||
skia::gradient::shaders::radial_gradient((center, distance), &gradient, Some(&transform))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ pub fn stroke_to_path(
|
||||
paint.set_stroke_width(stroke.width * 2.0);
|
||||
}
|
||||
|
||||
let mut stroke_outline = skia::Path::default();
|
||||
let mut stroke_outline = skia::PathBuilder::new();
|
||||
let success = skia::path_utils::fill_path_with_paint(
|
||||
&transformed_shape_path,
|
||||
&paint,
|
||||
@ -46,6 +46,8 @@ pub fn stroke_to_path(
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut stroke_outline = stroke_outline.detach();
|
||||
|
||||
// For inner/outer strokes, use boolean ops to clip
|
||||
// the 2×-width stroke outline to the correct region.
|
||||
// Set EvenOdd to preserve the annular ring's inner hole,
|
||||
|
||||
49
render-wasm/src/shim/hash_memory.cpp
Normal file
49
render-wasm/src/shim/hash_memory.cpp
Normal file
@ -0,0 +1,49 @@
|
||||
// Skia 0.97 WASM references std::__hash_memory. Compiled via EMCC_CFLAGS at the
|
||||
// final emcc link (see _build_env). murmur2 matches libc++ on 32-bit wasm.
|
||||
#include <cstddef>
|
||||
#include <cstring>
|
||||
|
||||
namespace std {
|
||||
inline namespace __2 {
|
||||
|
||||
static size_t loadword(const void* p) {
|
||||
size_t r;
|
||||
std::memcpy(&r, p, sizeof(r));
|
||||
return r;
|
||||
}
|
||||
|
||||
__attribute__((used)) size_t __hash_memory(const void* key, size_t len) noexcept {
|
||||
const size_t m = 0x5bd1e995;
|
||||
const size_t r = 24;
|
||||
size_t h = len;
|
||||
const auto* data = static_cast<const unsigned char*>(key);
|
||||
for (; len >= 4; data += 4, len -= 4) {
|
||||
size_t k = loadword(data);
|
||||
k *= m;
|
||||
k ^= k >> r;
|
||||
k *= m;
|
||||
h *= m;
|
||||
h ^= k;
|
||||
}
|
||||
switch (len) {
|
||||
case 3:
|
||||
h ^= static_cast<size_t>(data[2] << 16);
|
||||
[[fallthrough]];
|
||||
case 2:
|
||||
h ^= static_cast<size_t>(data[1] << 8);
|
||||
[[fallthrough]];
|
||||
case 1:
|
||||
h ^= data[0];
|
||||
h *= m;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
h ^= h >> 13;
|
||||
h *= m;
|
||||
h ^= h >> 15;
|
||||
return h;
|
||||
}
|
||||
|
||||
} // namespace __2
|
||||
} // namespace std
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
|
||||
export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.93.1/skia-binaries-319323662b1685a112f5-x86_64-unknown-linux-gnu-gl-svg-textlayout-binary-cache-webp.tar.gz"}
|
||||
export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.97.0/skia-binaries-fdd89c91b34b4e26dd64-x86_64-unknown-linux-gnu-gl-svg-textlayout-binary-cache-webp.tar.gz"}
|
||||
export CARGO_BUILD_TARGET=${CARGO_BUILD_TARGET:-"x86_64-unknown-linux-gnu"};
|
||||
|
||||
_SCRIPT_DIR=$(dirname $0);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
_SCRIPT_DIR=$(dirname $0);
|
||||
|
||||
export SKIA_BINARIES_URL="https://github.com/penpot/skia-binaries/releases/download/0.93.1/skia-binaries-319323662b1685a112f5-x86_64-unknown-linux-gnu-gl-svg-textlayout-binary-cache-webp.tar.gz"
|
||||
export SKIA_BINARIES_URL="https://github.com/penpot/skia-binaries/releases/download/0.97.0/skia-binaries-fdd89c91b34b4e26dd64-x86_64-unknown-linux-gnu-gl-svg-textlayout-binary-cache-webp.tar.gz"
|
||||
|
||||
pushd $_SCRIPT_DIR;
|
||||
cargo watch -x "test --bin render_wasm -- --show-output"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user