From cd0086ba1d7cac909905c790b2b720906f81c62c Mon Sep 17 00:00:00 2001 From: GirkovArpa Date: Mon, 22 Feb 2021 22:22:52 -0600 Subject: [PATCH] :bookmark: First commit --- .gitignore | 3 + Cargo.lock | 494 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 17 ++ LICENSE | 21 +++ README.md | 5 + main.css | 64 +++++++ main.htm | 27 +++ main.tis | 19 ++ preview.gif | Bin 0 -> 41216 bytes src/qr.rs | 18 ++ 10 files changed, 668 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 main.css create mode 100644 main.htm create mode 100644 main.tis create mode 100644 preview.gif create mode 100644 src/qr.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..92ba799 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +*.exe +*.dll \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..52e1633 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,494 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "adler" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bytemuck" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bed57e2090563b83ba8f83366628ce535a7584c9afa4c9fc0612a03925c6df58" + +[[package]] +name = "byteorder" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" + +[[package]] +name = "cc" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d60ab4a8dba064f2fbb5aa270c28da5cf4bbd0e72dae1140a6b0353a779dbe00" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "lazy_static", + "loom", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bae8f328835f8f5a6ceb6a7842a7f2d0c03692adb5c889347235d59194731fe3" +dependencies = [ + "autocfg", + "cfg-if", + "lazy_static", + "loom", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "generator" +version = "0.6.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9fed24fd1e18827652b4d55652899a1e9da8e54d91624dc3437a5bc3a9f9a9c" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "winapi", +] + +[[package]] +name = "gif" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02efba560f227847cb41463a7395c514d127d4f74fff12ef0137fff1b84b96c4" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "hermit-abi" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +dependencies = [ + "libc", +] + +[[package]] +name = "html-escape" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d348900ce941b7474395ba922ed3735a517df4546a2939ddb416ce85eeaa988e" +dependencies = [ + "utf8-width", +] + +[[package]] +name = "image" +version = "0.23.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "293f07a1875fa7e9c5897b51aa68b2d8ed8271b87e1a44cb64b9c3d98aabbc0d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "gif", + "jpeg-decoder", + "num-iter", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", + "tiff", +] + +[[package]] +name = "jpeg-decoder" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" +dependencies = [ + "rayon", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "loom" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d44c73b4636e497b4917eb21c33539efa3816741a2d3ff26c6316f1b529481a4" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide 0.3.7", +] + +[[package]] +name = "qr" +version = "0.1.0" +dependencies = [ + "qrcode-generator", + "sciter-rs", +] + +[[package]] +name = "qrcode-generator" +version = "4.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8af6f834f95e6f4183e6ce671fdc0ecb43c5fa5640d58d5a22fc53996ab638dc" +dependencies = [ + "html-escape", + "image", + "qrcodegen", +] + +[[package]] +name = "qrcodegen" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24ea38b2345f15533e6668104bec0136883404287e095f15f9ea2522e2b4b6c" + +[[package]] +name = "rayon" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "lazy_static", + "num_cpus", +] + +[[package]] +name = "rustversion" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" + +[[package]] +name = "sciter-rs" +version = "0.5.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef08b75bd568546fcc53a22f1cde8e37c39e36f47996fabb5e60d25bd5a857a5" +dependencies = [ + "lazy_static", + "libc", + "objc", + "objc-foundation", +] + +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "tiff" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" +dependencies = [ + "jpeg-decoder", + "miniz_oxide 0.4.3", + "weezl", +] + +[[package]] +name = "utf8-width" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9071ac216321a4470a69fb2b28cfc68dcd1a39acd877c8be8e014df6772d8efa" + +[[package]] +name = "weezl" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a32b378380f4e9869b22f0b5177c68a5519f03b3454fde0b291455ddbae266c" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..3eb511c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "qr" +version = "0.1.0" +authors = ["GirkovArpa "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +qrcode-generator = "4.0.4" +sciter-rs = { version = "*", features = ["extension"] } + +[lib] +path = "src/qr.rs" +crate-type = ["cdylib"] +test = false +bench = false \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2ef6994 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright © 2021 Girkov Arpa + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1b6c317 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# QR Encode Demo + +Run `cargo build --release` to compile `qr.dll`, then place [scapp.exe](https://github.com/c-smile/sciter-sdk/blob/master/bin.win/x32/scapp.exe) inside this folder and run it. + +![preview](preview.gif) diff --git a/main.css b/main.css new file mode 100644 index 0000000..93dfbe5 --- /dev/null +++ b/main.css @@ -0,0 +1,64 @@ +html { + font: 'Arial'; + width: max-content; + height: max-content; + min-height: min-content; + min-width: min-content; +} + +body { + text-align: center; + vertical-align: middle; + margin: *; + padding: 5em; +} + +h1 { + margin-top: 0; +} + +form { + flow: vertical; + border-spacing: 0.5em; +} + +form>input { + width: 20em; +} + +button { + width: *; +} + +form>span { + border-spacing: *; + flow: horizontal; + width: *; +} + +#credits { + justify-content: center; + flow: vertical; + width: *; + height: *; + margin-bottom: 1em; +} + +#credits>span { + text-align: center; + width: *; + margin-top: 0.5em; +} + +a { + padding: 0 .5em 0 .5em; +} + +div.output, svg { + width: 150dip; + height: 150dip; +} + +div.output { + margin: auto; +} \ No newline at end of file diff --git a/main.htm b/main.htm new file mode 100644 index 0000000..3e14871 --- /dev/null +++ b/main.htm @@ -0,0 +1,27 @@ + + + + + + QR Encode Demo + + + + + +

QR Encode Demo

+
+ This application uses Sciter Engine, + © Terra Informatica Software, Inc. +
+
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/main.tis b/main.tis new file mode 100644 index 0000000..daa47ff --- /dev/null +++ b/main.tis @@ -0,0 +1,19 @@ +const qr = include library "./target/release/qr"; + +function self.ready() { + const w = self.intrinsicWidthMax(); + const h = self.intrinsicHeight(); + const (sw, sh) = view.screenBox(#frame, #dimension); + view.move((sw / 2) - (w / 2), (sh / 2) - (h / 2), w, h, true); +} + +event click $(a) { + Sciter.launch(this.@["href"]); return true; +} + +$(#encode) << event click { + const input = $(#input).value; + const encoded = qr.encode(input); + $(#output).value = encoded; + $(div.output).html = encoded; +} \ No newline at end of file diff --git a/preview.gif b/preview.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bbf12d9b4606091edb76e3fddfa931ee7545e8e GIT binary patch literal 41216 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 literal 0 HcmV?d00001 diff --git a/src/qr.rs b/src/qr.rs new file mode 100644 index 0000000..ebdc251 --- /dev/null +++ b/src/qr.rs @@ -0,0 +1,18 @@ +#[macro_use] +extern crate sciter; +use sciter::{ Value, types::{ BOOL, VALUE } }; +use qrcode_generator::QrCodeEcc; +#[no_mangle] +pub extern "system" fn SciterLibraryInit(api: &'static sciter::ISciterAPI, exported: &mut VALUE) -> BOOL { + sciter::set_host_api(api); + let ext_api = vmap! { "encode" => encode }; + ext_api.pack_to(exported); + true as BOOL +} + + +pub fn encode(args: &[Value]) -> Value { + let result: String = qrcode_generator::to_svg_to_string(args[0].to_string().as_str(), QrCodeEcc::Low, 1024, None::<&str>).unwrap(); + println!("{:?}", result); + Value::from(result) +} \ No newline at end of file