mirror of
https://github.com/visioncortex/vtracer.git
synced 2026-08-31 09:25:57 -07:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 66f6bd98f4 | |||
| 59448884cb | |||
| edf1311425 | |||
| 02c844dc7a | |||
| c3090ac50b |
@@ -30,7 +30,7 @@ jobs:
|
||||
uses: PyO3/maturin-action@v1
|
||||
with:
|
||||
target: ${{ matrix.target }}
|
||||
args: -m cmdapp/Cargo.toml --release --out dist --find-interpreter
|
||||
args: --release --out dist --find-interpreter
|
||||
sccache: 'true'
|
||||
manylinux: auto
|
||||
- name: Upload wheels
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
uses: PyO3/maturin-action@v1
|
||||
with:
|
||||
target: ${{ matrix.target }}
|
||||
args: -m cmdapp/Cargo.toml --release --out dist --find-interpreter
|
||||
args: --release --out dist --find-interpreter
|
||||
sccache: 'true'
|
||||
- name: Upload wheels
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -76,7 +76,7 @@ jobs:
|
||||
uses: PyO3/maturin-action@v1
|
||||
with:
|
||||
target: ${{ matrix.target }}
|
||||
args: -m cmdapp/Cargo.toml --release --out dist --find-interpreter
|
||||
args: --release --out dist --find-interpreter
|
||||
sccache: 'true'
|
||||
- name: Upload wheels
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -92,7 +92,7 @@ jobs:
|
||||
uses: PyO3/maturin-action@v1
|
||||
with:
|
||||
command: sdist
|
||||
args: -m cmdapp/Cargo.toml --out dist
|
||||
args: --out dist
|
||||
- name: Upload sdist
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
@@ -115,4 +115,3 @@ jobs:
|
||||
with:
|
||||
command: upload
|
||||
args: --non-interactive --skip-existing *
|
||||
manylinux: auto
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## 0.6.0 - 2023-09-16
|
||||
## 0.6.0 - 2023-09-08
|
||||
|
||||
* Python Binding
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "vtracer"
|
||||
version = "0.6.0"
|
||||
version = "0.6.3"
|
||||
authors = ["Chris Tsang <chris.2y3@outlook.com>"]
|
||||
edition = "2021"
|
||||
description = "A cmd app to convert images into vector graphics."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "vtracer"
|
||||
version = "0.6.0"
|
||||
version = "0.6.3"
|
||||
description = "Python bindings for the Rust Vtracer raster-to-vector library"
|
||||
authors = [ { name = "Chris Tsang", email = "chris.2y3@outlook.com" } ]
|
||||
readme = "vtracer/README.md"
|
||||
@@ -24,5 +24,5 @@ build-backend = "maturin"
|
||||
|
||||
[tool.maturin]
|
||||
features = ["pyo3/extension-module"]
|
||||
compatibility = "manylinux2014"
|
||||
sdist-include = ["LICENSE-MIT", "vtracer/README.md"]
|
||||
compatibility = "linux"
|
||||
sdist-include = ["../LICENSE", "../README.md"]
|
||||
Generated
+6
-6
File diff suppressed because one or more lines are too long
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
+1
-1
@@ -1,3 +1,3 @@
|
||||
Copyright (c) 2024 TSANG, Hao Fung
|
||||
Copyright (c) 2020 Tsang Hao Fung
|
||||
|
||||
The content in the /docs directory is for GitHub pages, and is not covered under open source licenses.
|
||||
|
||||
+58
-58
@@ -61,92 +61,92 @@
|
||||
/******/ "__wbindgen_string_new": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbindgen_string_new"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_new_abda76e883ba8a5f": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_new_abda76e883ba8a5f"]();
|
||||
/******/ "__wbg_new_59cb74e423758ede": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_new_59cb74e423758ede"]();
|
||||
/******/ },
|
||||
/******/ "__wbg_stack_658279fe44541cf6": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_stack_658279fe44541cf6"](p0i32,p1i32);
|
||||
/******/ "__wbg_stack_558ba5917b466edd": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_stack_558ba5917b466edd"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_error_f851667af71bcfc6": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_error_f851667af71bcfc6"](p0i32,p1i32);
|
||||
/******/ "__wbg_error_4bb6c2a97407129a": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_error_4bb6c2a97407129a"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_instanceof_Window_f401953a2cf86220": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_instanceof_Window_f401953a2cf86220"](p0i32);
|
||||
/******/ "__wbg_instanceof_Window_adf3196bdc02b386": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_instanceof_Window_adf3196bdc02b386"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_document_5100775d18896c16": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_document_5100775d18896c16"](p0i32);
|
||||
/******/ "__wbg_document_6cc8d0b87c0a99b9": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_document_6cc8d0b87c0a99b9"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_createElementNS_556a62fb298be5a2": function(p0i32,p1i32,p2i32,p3i32,p4i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_createElementNS_556a62fb298be5a2"](p0i32,p1i32,p2i32,p3i32,p4i32);
|
||||
/******/ "__wbg_createElementNS_ea14cb45a87a0719": function(p0i32,p1i32,p2i32,p3i32,p4i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_createElementNS_ea14cb45a87a0719"](p0i32,p1i32,p2i32,p3i32,p4i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_getElementById_c369ff43f0db99cf": function(p0i32,p1i32,p2i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_getElementById_c369ff43f0db99cf"](p0i32,p1i32,p2i32);
|
||||
/******/ "__wbg_getElementById_0cb6ad9511b1efc0": function(p0i32,p1i32,p2i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_getElementById_0cb6ad9511b1efc0"](p0i32,p1i32,p2i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_setAttribute_3c9f6c303b696daa": function(p0i32,p1i32,p2i32,p3i32,p4i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_setAttribute_3c9f6c303b696daa"](p0i32,p1i32,p2i32,p3i32,p4i32);
|
||||
/******/ "__wbg_setAttribute_727bdb9763037624": function(p0i32,p1i32,p2i32,p3i32,p4i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_setAttribute_727bdb9763037624"](p0i32,p1i32,p2i32,p3i32,p4i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_prepend_6fcfb183e9fe632c": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_prepend_6fcfb183e9fe632c"](p0i32,p1i32);
|
||||
/******/ "__wbg_prepend_fa995bb42f6e2983": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_prepend_fa995bb42f6e2983"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_instanceof_CanvasRenderingContext2d_20bf99ccc051643b": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_instanceof_CanvasRenderingContext2d_20bf99ccc051643b"](p0i32);
|
||||
/******/ "__wbg_debug_d101e002eb92f20b": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_debug_d101e002eb92f20b"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_getImageData_740186e596b34364": function(p0i32,p1f64,p2f64,p3f64,p4f64) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_getImageData_740186e596b34364"](p0i32,p1f64,p2f64,p3f64,p4f64);
|
||||
/******/ "__wbg_error_cb872335132b1ef7": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_error_cb872335132b1ef7"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_data_c02d3aac6da15e9f": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_data_c02d3aac6da15e9f"](p0i32,p1i32);
|
||||
/******/ "__wbg_info_a25afde0ff8cd04a": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_info_a25afde0ff8cd04a"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_debug_7d879afce6cf56cb": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_debug_7d879afce6cf56cb"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ "__wbg_log_3bafd82835c6de6d": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_log_3bafd82835c6de6d"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_error_696630710900ec44": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_error_696630710900ec44"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ "__wbg_log_64f566ae90a6c43c": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_log_64f566ae90a6c43c"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_info_80803d9a3f0aad16": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_info_80803d9a3f0aad16"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ "__wbg_warn_f632d7d3f55682b6": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_warn_f632d7d3f55682b6"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_log_5bb5f88f245d7762": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_log_5bb5f88f245d7762"](p0i32);
|
||||
/******/ "__wbg_instanceof_CanvasRenderingContext2d_5b86ec94bce38d5b": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_instanceof_CanvasRenderingContext2d_5b86ec94bce38d5b"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_log_151eb4333ef0fe39": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_log_151eb4333ef0fe39"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ "__wbg_getImageData_888c08c04395524a": function(p0i32,p1f64,p2f64,p3f64,p4f64) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_getImageData_888c08c04395524a"](p0i32,p1f64,p2f64,p3f64,p4f64);
|
||||
/******/ },
|
||||
/******/ "__wbg_warn_5d3f783b0bae8943": function(p0i32,p1i32,p2i32,p3i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_warn_5d3f783b0bae8943"](p0i32,p1i32,p2i32,p3i32);
|
||||
/******/ "__wbg_instanceof_HtmlCanvasElement_4f5b5ec6cd53ccf3": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_instanceof_HtmlCanvasElement_4f5b5ec6cd53ccf3"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_instanceof_HtmlCanvasElement_46bdbf323b0b18d1": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_instanceof_HtmlCanvasElement_46bdbf323b0b18d1"](p0i32);
|
||||
/******/ "__wbg_width_a22f9855caa54b53": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_width_a22f9855caa54b53"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_width_aee8b8809b033b05": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_width_aee8b8809b033b05"](p0i32);
|
||||
/******/ "__wbg_height_9a404a6b3c61c7ef": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_height_9a404a6b3c61c7ef"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_height_80053d3c71b338e0": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_height_80053d3c71b338e0"](p0i32);
|
||||
/******/ "__wbg_getContext_37ca0870acb096d9": function(p0i32,p1i32,p2i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_getContext_37ca0870acb096d9"](p0i32,p1i32,p2i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_getContext_df50fa48a8876636": function(p0i32,p1i32,p2i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_getContext_df50fa48a8876636"](p0i32,p1i32,p2i32);
|
||||
/******/ "__wbg_data_c2cd7a48734589b2": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_data_c2cd7a48734589b2"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_newnoargs_e258087cd0daa0ea": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_newnoargs_e258087cd0daa0ea"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_call_27c0f87801dedf93": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_call_27c0f87801dedf93"](p0i32,p1i32);
|
||||
/******/ "__wbg_call_8e95613cc6524977": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_call_8e95613cc6524977"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbindgen_object_clone_ref": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbindgen_object_clone_ref"](p0i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_self_ce0dbfc45cf2f5be": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_self_ce0dbfc45cf2f5be"]();
|
||||
/******/ "__wbg_newnoargs_f3b8a801d5d4b079": function(p0i32,p1i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_newnoargs_f3b8a801d5d4b079"](p0i32,p1i32);
|
||||
/******/ },
|
||||
/******/ "__wbg_window_c6fb939a7f436783": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_window_c6fb939a7f436783"]();
|
||||
/******/ "__wbg_self_07b2f89e82ceb76d": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_self_07b2f89e82ceb76d"]();
|
||||
/******/ },
|
||||
/******/ "__wbg_globalThis_d1e6af4856ba331b": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_globalThis_d1e6af4856ba331b"]();
|
||||
/******/ "__wbg_window_ba85d88572adc0dc": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_window_ba85d88572adc0dc"]();
|
||||
/******/ },
|
||||
/******/ "__wbg_global_207b558942527489": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_global_207b558942527489"]();
|
||||
/******/ "__wbg_globalThis_b9277fc37e201fe5": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_globalThis_b9277fc37e201fe5"]();
|
||||
/******/ },
|
||||
/******/ "__wbg_global_e16303fe83e1d57f": function() {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbg_global_e16303fe83e1d57f"]();
|
||||
/******/ },
|
||||
/******/ "__wbindgen_is_undefined": function(p0i32) {
|
||||
/******/ return installedModules["../pkg/vtracer_webapp_bg.js"].exports["__wbindgen_is_undefined"](p0i32);
|
||||
@@ -258,7 +258,7 @@
|
||||
/******/ promises.push(installedWasmModuleData);
|
||||
/******/ else {
|
||||
/******/ var importObject = wasmImportObjects[wasmModuleId]();
|
||||
/******/ var req = fetch(__webpack_require__.p + "" + {"../pkg/vtracer_webapp_bg.wasm":"1ea3f1b97c566154f2b2"}[wasmModuleId] + ".module.wasm");
|
||||
/******/ var req = fetch(__webpack_require__.p + "" + {"../pkg/vtracer_webapp_bg.wasm":"589cb57662b50620abca"}[wasmModuleId] + ".module.wasm");
|
||||
/******/ var promise;
|
||||
/******/ if(importObject instanceof Promise && typeof WebAssembly.compileStreaming === 'function') {
|
||||
/******/ promise = Promise.all([WebAssembly.compileStreaming(req), importObject]).then(function(items) {
|
||||
|
||||
Generated
+8
-166
@@ -11,14 +11,12 @@
|
||||
<!-- UIkit JS -->
|
||||
<script src="./uikit/js/uikit.min.js"></script>
|
||||
<script src="./uikit/js/uikit-icons.min.js"></script>
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XPL1JGMDSC"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-XPL1JGMDSC');
|
||||
<script type="text/javascript">
|
||||
(function(c,l,a,r,i,t,y){
|
||||
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
|
||||
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
|
||||
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
|
||||
})(window, document, "clarity", "script", "403biw7tra");
|
||||
</script>
|
||||
<style>
|
||||
html, body {
|
||||
@@ -130,35 +128,6 @@
|
||||
.uk-text-meta {
|
||||
font-size: 12px;
|
||||
}
|
||||
.desktop-banner {
|
||||
border: 1px solid rgba(204, 151, 46, 0.55);
|
||||
background: rgba(204, 151, 46, 0.12);
|
||||
gap: 8px 16px;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
.desktop-banner-title {
|
||||
margin: 0;
|
||||
font-weight: 700;
|
||||
}
|
||||
.desktop-banner-copy {
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.desktop-banner .uk-button {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.uk-light .desktop-banner {
|
||||
border-color: rgba(204, 151, 46, 0.7);
|
||||
background: rgba(204, 151, 46, 0.16);
|
||||
}
|
||||
@media only screen and (max-width: 640px) {
|
||||
.desktop-banner {
|
||||
text-align: center;
|
||||
}
|
||||
.desktop-banner .uk-button {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
@@ -173,21 +142,13 @@
|
||||
/ VTracer
|
||||
</div>
|
||||
<div class="uk-navbar-right uk-padding-small">
|
||||
<a class="uk-button uk-button-default" href="//www.visioncortex.org/vtracer-docs">Article</a>
|
||||
|
||||
<a class="uk-button uk-button-default" href="//github.com/visioncortex/vtracer">GitHub</a>
|
||||
|
||||
<a id="export" class="uk-button uk-button-primary">Download as SVG</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-1-1">
|
||||
<div class="desktop-banner uk-padding-small uk-flex uk-flex-middle uk-flex-between uk-flex-wrap">
|
||||
<div class="uk-margin-small-right">
|
||||
<p id="desktop-banner-copy" class="desktop-banner-title">Try the latest VTracer Desktop App for native speed, curve simplification, and higher tracing quality.</p>
|
||||
</div>
|
||||
<a id="desktop-download" class="uk-button uk-button-primary" href="https://github.com/visioncortex/vtracer/releases/latest" rel="noopener">
|
||||
Download Desktop App
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="progressregion" class="uk-width-1-1 uk-padding-small" style="display: none;">
|
||||
<progress id="progressbar" class="uk-progress uk-align-right" value="0" max="100" style="width: 98%;"></progress>
|
||||
</div>
|
||||
@@ -353,125 +314,6 @@
|
||||
document.body.classList.remove('uk-dark');
|
||||
document.body.classList.add('uk-light');
|
||||
}
|
||||
|
||||
(function() {
|
||||
var releasesUrl = 'https://github.com/visioncortex/vtracer/releases/latest';
|
||||
var manifestUrl = 'https://raw.githubusercontent.com/visioncortex/vtracer/desktop-updates/latest.json';
|
||||
var downloadLink = document.getElementById('desktop-download');
|
||||
var bannerCopy = document.getElementById('desktop-banner-copy');
|
||||
|
||||
function detectPlatform() {
|
||||
var platform = navigator.userAgentData && navigator.userAgentData.platform
|
||||
? navigator.userAgentData.platform
|
||||
: navigator.platform || '';
|
||||
var userAgent = navigator.userAgent || '';
|
||||
var platformText = platform + ' ' + userAgent;
|
||||
|
||||
if (/Windows/i.test(platformText)) {
|
||||
return {
|
||||
label: 'Windows',
|
||||
manifestKeys: ['windows-x86_64']
|
||||
};
|
||||
}
|
||||
|
||||
if (/Mac|Darwin/i.test(platformText) && !/iPhone|iPad|iPod/i.test(userAgent)) {
|
||||
return {
|
||||
label: 'macOS',
|
||||
manifestKeys: ['macos-universal', 'darwin-universal', 'darwin-aarch64', 'darwin-x86_64']
|
||||
};
|
||||
}
|
||||
|
||||
if (/Linux|X11/i.test(platformText) && !/Android/i.test(userAgent)) {
|
||||
return {
|
||||
label: 'Linux',
|
||||
manifestKeys: ['linux-x86_64']
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
label: '',
|
||||
manifestKeys: []
|
||||
};
|
||||
}
|
||||
|
||||
function setFallback(platform) {
|
||||
downloadLink.href = releasesUrl;
|
||||
downloadLink.textContent = platform.label ? 'Download for ' + platform.label : 'View latest downloads';
|
||||
bannerCopy.textContent = platform.label
|
||||
? 'Try the latest VTracer Desktop App for ' + platform.label + ' with native speed, curve simplification, and higher tracing quality.'
|
||||
: 'Try the latest VTracer Desktop App for native speed, curve simplification, and higher tracing quality.';
|
||||
}
|
||||
|
||||
function findPlatformDownload(platforms, platform) {
|
||||
var keys = platform.manifestKeys || [];
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
if (platforms[keys[i]] && platforms[keys[i]].url) {
|
||||
return platforms[keys[i]].url;
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
function publicDownloadUrl(platform, updaterUrl) {
|
||||
if (platform.label !== 'macOS' || !updaterUrl) {
|
||||
return updaterUrl;
|
||||
}
|
||||
|
||||
// The manifest points at Tauri's updater bundle; a person wants the
|
||||
// disk image sitting beside it. Rewrite only the filename, so the
|
||||
// release tag comes from the URL we were handed: manifest.version
|
||||
// carries a build suffix the tag does not, and building the URL from
|
||||
// it 404s (version '1.0.0-alpha.3.app.59' lives under tag
|
||||
// '1.0.0-alpha.3').
|
||||
return updaterUrl.replace(/\.app\.tar\.gz$/i, '.dmg');
|
||||
}
|
||||
|
||||
var platform = detectPlatform();
|
||||
setFallback(platform);
|
||||
|
||||
downloadLink.addEventListener('click', function() {
|
||||
if (typeof gtag !== 'function') {
|
||||
return;
|
||||
}
|
||||
|
||||
gtag('event', 'desktop_download_click', {
|
||||
platform: platform.label || 'unknown',
|
||||
source: 'docs_banner',
|
||||
download_url: downloadLink.href,
|
||||
transport_type: 'beacon'
|
||||
});
|
||||
});
|
||||
|
||||
if (!window.fetch) {
|
||||
return;
|
||||
}
|
||||
|
||||
fetch(manifestUrl)
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
throw new Error('Desktop manifest lookup failed');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(function(manifest) {
|
||||
var updaterUrl = findPlatformDownload(manifest.platforms || {}, platform);
|
||||
var downloadUrl = publicDownloadUrl(platform, updaterUrl);
|
||||
|
||||
if (!downloadUrl) {
|
||||
return;
|
||||
}
|
||||
|
||||
downloadLink.href = downloadUrl;
|
||||
downloadLink.textContent = 'Download for ' + platform.label;
|
||||
|
||||
bannerCopy.textContent = 'Try the latest VTracer Desktop App for ' + platform.label + ' with native speed, curve simplification, and higher tracing quality.';
|
||||
})
|
||||
.catch(function() {
|
||||
setFallback(platform);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
<script src="./bootstrap.js"></script>
|
||||
</body>
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ console_log = { version = "0.2", features = ["color"] }
|
||||
wasm-bindgen = { version = "0.2", features = ["serde-serialize"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
visioncortex = "0.8.1"
|
||||
visioncortex = "0.6.0"
|
||||
|
||||
# The `console_error_panic_hook` crate provides better debugging of panics by
|
||||
# logging them with `console.error`. This is great for development, but requires
|
||||
|
||||
+2
-6
@@ -35,11 +35,7 @@ document.addEventListener('paste', function (e) {
|
||||
|
||||
// Download as SVG
|
||||
document.getElementById('export').addEventListener('click', function (e) {
|
||||
const blob = new Blob([
|
||||
`<?xml version="1.0" encoding="UTF-8"?>\n`,
|
||||
`<!-- Generator: visioncortex VTracer -->\n`,
|
||||
new XMLSerializer().serializeToString(svg)
|
||||
], {type: 'octet/stream'}),
|
||||
const blob = new Blob([new XMLSerializer().serializeToString(svg)], {type: 'octet/stream'}),
|
||||
url = window.URL.createObjectURL(blob);
|
||||
|
||||
this.href = url;
|
||||
@@ -448,7 +444,7 @@ class ConverterRunner {
|
||||
this.converter.init();
|
||||
this.stopped = false;
|
||||
if (clustering_mode == 'binary') {
|
||||
svg.style.background = '#fff';
|
||||
svg.style.background = '#000';
|
||||
canvas.style.display = 'none';
|
||||
} else {
|
||||
svg.style.background = '';
|
||||
|
||||
@@ -77,7 +77,7 @@ impl BinaryImageConverter {
|
||||
self.params.max_iterations,
|
||||
self.params.splice_threshold
|
||||
);
|
||||
let color = Color::color(&ColorName::Black);
|
||||
let color = Color::color(&ColorName::White);
|
||||
self.svg.prepend_path(
|
||||
&paths,
|
||||
&color,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use wasm_bindgen::prelude::*;
|
||||
use visioncortex::PathSimplifyMode;
|
||||
use visioncortex::color_clusters::{Clusters, Runner, RunnerConfig, HIERARCHICAL_MAX, IncrementalBuilder, KeyingAction};
|
||||
use visioncortex::color_clusters::{IncrementalBuilder, Clusters, Runner, RunnerConfig, HIERARCHICAL_MAX};
|
||||
|
||||
use crate::canvas::*;
|
||||
use crate::svg::*;
|
||||
@@ -78,8 +78,6 @@ impl ColorImageConverter {
|
||||
is_same_color_b: 1,
|
||||
deepen_diff: self.params.layer_difference,
|
||||
hollow_neighbours: 1,
|
||||
key_color: Default::default(),
|
||||
keying_action: KeyingAction::Discard,
|
||||
}, image);
|
||||
self.stage = Stage::Clustering(runner.start());
|
||||
}
|
||||
@@ -110,8 +108,6 @@ impl ColorImageConverter {
|
||||
is_same_color_b: 1,
|
||||
deepen_diff: 0,
|
||||
hollow_neighbours: 0,
|
||||
key_color: Default::default(),
|
||||
keying_action: KeyingAction::Discard,
|
||||
}, image);
|
||||
self.stage = Stage::Reclustering(runner.start());
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user