From 791354128208b5842617a84167563671addfa178 Mon Sep 17 00:00:00 2001 From: Hlars Date: Fri, 23 Aug 2024 10:52:33 +0200 Subject: [PATCH] various changes --- .vscode/settings.json | 8 +- Cargo.lock | 856 +++++++++++++++++- Cargo.toml | 10 +- build.rs | 14 + resources/excellon_file.afdesign | Bin 0 -> 44321 bytes resources/excellon_file.png | Bin 0 -> 3408 bytes resources/geometry_file.afdesign | Bin 0 -> 99096 bytes resources/geometry_file.png | Bin 0 -> 5746 bytes resources/gerber_file.afdesign | Bin 0 -> 37480 bytes resources/gerber_file.png | Bin 0 -> 3040 bytes resources/icon.ico | Bin 0 -> 150525 bytes resources/icon.png | Bin 0 -> 191413 bytes src/application/canvas/excellons.rs | 38 +- src/application/canvas/geometries.rs | 98 +- src/application/canvas/gerbers.rs | 86 +- src/application/canvas/live_position.rs | 63 -- src/application/canvas/mod.rs | 62 +- src/application/egui.rs | 220 +---- src/application/errors.rs | 20 + src/application/mod.rs | 24 +- .../panels/actions/excellon_actions.rs | 78 +- .../panels/actions/geometry_actions.rs | 69 +- .../panels/actions/gerber_actions.rs | 55 +- src/application/panels/header.rs | 222 ++++- src/application/panels/sidebar.rs | 66 +- src/excellon/drills.rs | 6 +- src/excellon/mod.rs | 6 +- src/export/dxf.rs | 4 +- src/export/svg.rs | 4 +- src/geometry/elements/circle.rs | 80 +- src/geometry/elements/composite.rs | 117 +++ src/geometry/elements/linepath.rs | 50 +- src/geometry/elements/mod.rs | 89 +- src/geometry/elements/obround.rs | 76 +- src/geometry/elements/polygon.rs | 72 ++ src/geometry/elements/rectangle.rs | 119 ++- src/geometry/gerber.rs | 122 ++- src/geometry/helpers.rs | 171 ++-- src/geometry/mod.rs | 31 +- src/geometry/point.rs | 110 ++- src/geometry/union.rs | 174 ++-- src/gerber/aperture_macros.rs | 169 +++- src/gerber/doc.rs | 26 +- src/gerber/mod.rs | 36 +- src/main.rs | 29 +- src/outline_geometry/mod.rs | 192 +--- src/resources/errors.rs | 20 + src/resources/fonts.rs | 37 + src/resources/icons.rs | 17 + src/resources/mod.rs | 25 + 50 files changed, 2459 insertions(+), 1312 deletions(-) create mode 100644 build.rs create mode 100644 resources/excellon_file.afdesign create mode 100644 resources/excellon_file.png create mode 100644 resources/geometry_file.afdesign create mode 100644 resources/geometry_file.png create mode 100644 resources/gerber_file.afdesign create mode 100644 resources/gerber_file.png create mode 100644 resources/icon.ico create mode 100644 resources/icon.png delete mode 100644 src/application/canvas/live_position.rs create mode 100644 src/application/errors.rs create mode 100644 src/geometry/elements/composite.rs create mode 100644 src/geometry/elements/polygon.rs create mode 100644 src/resources/errors.rs create mode 100755 src/resources/fonts.rs create mode 100644 src/resources/icons.rs create mode 100755 src/resources/mod.rs diff --git a/.vscode/settings.json b/.vscode/settings.json index 61b2eca..234d2b2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,7 @@ { "cSpell.words": [ + "centered", + "cmds", "color", "Color", "consts", @@ -8,11 +10,14 @@ "egui", "emath", "epaint", + "evalexpr", "excellon", "Excellon", "excellons", "gerbers", "Heatsink", + "itertools", + "Itertools", "linepath", "obround", "Obround", @@ -21,6 +26,7 @@ "rect", "Rect", "regmatch", - "Soldermask" + "Soldermask", + "winresource" ] } \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index f7321ee..87abfc0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -128,6 +128,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "aligned-vec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" + [[package]] name = "allocator-api2" version = "0.2.18" @@ -182,6 +188,12 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" + [[package]] name = "arboard" version = "3.4.0" @@ -197,6 +209,17 @@ dependencies = [ "x11rb", ] +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "arrayref" version = "0.3.8" @@ -531,6 +554,41 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +[[package]] +name = "av1-grain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational 0.4.2", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bit-set" version = "0.5.3" @@ -546,6 +604,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + [[package]] name = "bitflags" version = "1.3.2" @@ -558,6 +622,12 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +[[package]] +name = "bitstream-io" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452" + [[package]] name = "block" version = "0.1.6" @@ -633,6 +703,12 @@ dependencies = [ "piper", ] +[[package]] +name = "built" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" + [[package]] name = "bumpalo" version = "3.16.0" @@ -745,6 +821,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -975,6 +1061,12 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -997,6 +1089,12 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9" +[[package]] +name = "data-url" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" + [[package]] name = "deflate" version = "0.8.6" @@ -1069,7 +1167,7 @@ dependencies = [ "encoding_rs", "enum_primitive", "image 0.23.14", - "itertools", + "itertools 0.10.5", "num", "uuid 0.8.2", "xmltree", @@ -1173,6 +1271,23 @@ dependencies = [ "winit", ] +[[package]] +name = "egui_extras" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb783d9fa348f69ed5c340aa25af78b5472043090e8b809040e30960cc2a746" +dependencies = [ + "ahash", + "egui", + "ehttp", + "enum-map", + "image 0.25.2", + "log", + "mime_guess2", + "resvg", + "serde", +] + [[package]] name = "egui_glow" version = "0.28.1" @@ -1202,6 +1317,20 @@ dependencies = [ "serde", ] +[[package]] +name = "ehttp" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a81c221a1e4dad06cb9c9deb19aea1193a5eea084e8cd42d869068132bf876" +dependencies = [ + "document-features", + "js-sys", + "ureq", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "either" version = "1.13.0" @@ -1233,6 +1362,27 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "enum_primitive" version = "0.1.1" @@ -1323,6 +1473,12 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "evalexpr" +version = "11.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b41cb9dd076076058a4523f009c900c582279536d0b2e45a29aa930e083cc5" + [[package]] name = "event-listener" version = "2.5.3" @@ -1361,6 +1517,22 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "exr" +version = "1.72.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide 0.7.4", + "rayon-core", + "smallvec", + "zune-inflate", +] + [[package]] name = "fastrand" version = "1.9.0" @@ -1395,6 +1567,21 @@ dependencies = [ "miniz_oxide 0.7.4", ] +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin", +] + [[package]] name = "foreign-types" version = "0.5.0" @@ -1533,8 +1720,6 @@ dependencies = [ [[package]] name = "gerber-types" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aecf78a269d7b4f73953f30174b18f52c1bb44f7d58f4d830a76c0ea023ad8bc" dependencies = [ "chrono", "conv", @@ -1574,6 +1759,16 @@ dependencies = [ "weezl", ] +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gl_generator" version = "0.14.0" @@ -1714,6 +1909,16 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + [[package]] name = "hashbrown" version = "0.14.5" @@ -1739,6 +1944,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.3.9" @@ -1825,14 +2036,14 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", - "gif", - "jpeg-decoder", + "gif 0.11.4", + "jpeg-decoder 0.1.22", "num-iter", "num-rational 0.3.2", "num-traits 0.2.19", "png 0.16.8", "scoped_threadpool", - "tiff", + "tiff 0.6.1", ] [[package]] @@ -1843,10 +2054,43 @@ checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" dependencies = [ "bytemuck", "byteorder-lite", + "color_quant", + "exr", + "gif 0.13.1", + "image-webp", "num-traits 0.2.19", "png 0.17.13", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff 0.9.1", + "zune-core", + "zune-jpeg", ] +[[package]] +name = "image-webp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79afb8cbee2ef20f59ccd477a218c12a93943d075b492015ecb1bb81f8ee904" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imagesize" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" + +[[package]] +name = "imgref" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126" + [[package]] name = "indexmap" version = "2.2.6" @@ -1866,6 +2110,17 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "io-lifetimes" version = "1.0.11" @@ -1886,6 +2141,24 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "jni" version = "0.21.1" @@ -1926,6 +2199,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "jpeg-decoder" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" + [[package]] name = "js-sys" version = "0.3.69" @@ -1952,6 +2231,15 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +[[package]] +name = "kurbo" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" +dependencies = [ + "arrayvec", +] + [[package]] name = "lazy-regex" version = "3.1.0" @@ -1981,12 +2269,29 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + [[package]] name = "libc" version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +[[package]] +name = "libfuzzer-sys" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7" +dependencies = [ + "arbitrary", + "cc", + "once_cell", +] + [[package]] name = "libloading" version = "0.7.4" @@ -2052,6 +2357,15 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + [[package]] name = "malloc_buf" version = "0.0.6" @@ -2061,6 +2375,15 @@ dependencies = [ "libc", ] +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", +] + [[package]] name = "memchr" version = "2.7.4" @@ -2109,6 +2432,28 @@ dependencies = [ "paste", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess2" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a3333bb1609500601edc766a39b4c1772874a4ce26022f4d866854dc020c41" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.3.7" @@ -2190,6 +2535,12 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nix" version = "0.26.4" @@ -2221,6 +2572,22 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2275,6 +2642,17 @@ dependencies = [ "num-traits 0.2.19", ] +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -2559,14 +2937,19 @@ dependencies = [ "clipper2", "dxf", "eframe", + "egui_extras", "egui_plot", "error-stack", + "evalexpr", "gerber-types", + "image 0.25.2", + "itertools 0.13.0", "lazy-regex", "rfd", "svg", "tracing", "tracing-subscriber", + "winresource", ] [[package]] @@ -2625,6 +3008,12 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + [[package]] name = "pin-project-lite" version = "0.2.14" @@ -2761,6 +3150,34 @@ name = "profiling" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" +dependencies = [ + "quote", + "syn 2.0.72", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" @@ -2810,6 +3227,55 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.12.1", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits 0.2.19", + "once_cell", + "paste", + "profiling", + "rand", + "rand_chacha", + "simd_helpers", + "system-deps", + "thiserror", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.11.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rgb", +] + [[package]] name = "raw-window-handle" version = "0.5.2" @@ -2842,6 +3308,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rctree" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f" + [[package]] name = "redox_syscall" version = "0.3.5" @@ -2904,6 +3376,20 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" +[[package]] +name = "resvg" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadccb3d99a9efb8e5e00c16fbb732cbe400db2ec7fc004697ee7d97d86cf1f4" +dependencies = [ + "log", + "pico-args", + "rgb", + "svgtypes", + "tiny-skia", + "usvg", +] + [[package]] name = "rfd" version = "0.14.1" @@ -2927,6 +3413,36 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "rgb" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f86ae463694029097b846d8f99fd5536740602ae00022c0c50c5600720b2f71" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "roxmltree" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2969,6 +3485,38 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rustls" +version = "0.23.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" + +[[package]] +name = "rustls-webpki" +version = "0.102.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + [[package]] name = "same-file" version = "1.0.6" @@ -3046,6 +3594,15 @@ dependencies = [ "syn 2.0.72", ] +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -3081,6 +3638,30 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "simplecss" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d" +dependencies = [ + "log", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "slab" version = "0.4.9" @@ -3185,6 +3766,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" @@ -3205,6 +3795,15 @@ name = "strict-num" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +dependencies = [ + "float-cmp", +] + +[[package]] +name = "subtle" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0208408ba0c3df17ed26eb06992cb1a1268d41b2c0e12e65203fbe3972cee5" [[package]] name = "svg" @@ -3212,6 +3811,16 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "700efb40f3f559c23c18b446e8ed62b08b56b2bb3197b36d57e0470b4102779e" +[[package]] +name = "svgtypes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e44e288cd960318917cbd540340968b90becc8bc81f171345d706e7a89d9d70" +dependencies = [ + "kurbo", + "siphasher", +] + [[package]] name = "syn" version = "1.0.109" @@ -3234,6 +3843,25 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml 0.8.16", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + [[package]] name = "tempfile" version = "3.10.1" @@ -3291,11 +3919,22 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" dependencies = [ - "jpeg-decoder", + "jpeg-decoder 0.1.22", "miniz_oxide 0.4.4", "weezl", ] +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder 0.3.1", + "weezl", +] + [[package]] name = "tiny-skia" version = "0.11.4" @@ -3307,6 +3946,7 @@ dependencies = [ "bytemuck", "cfg-if", "log", + "png 0.17.13", "tiny-skia-path", ] @@ -3336,11 +3976,38 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81967dd0dd2c1ab0bc3468bd7caecc32b8a4aa47d0c8c695d8c2b2108168d62c" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.17", +] + [[package]] name = "toml_datetime" version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -3349,8 +4016,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -3361,7 +4030,20 @@ checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9f8729f5aea9562aac1cc0441f5d6de3cff1ee0c5d67293eeca5eb36ee7c16" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.18", ] [[package]] @@ -3453,6 +4135,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -3492,6 +4183,28 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +dependencies = [ + "base64 0.22.1", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "url", + "webpki-roots", +] + [[package]] name = "url" version = "2.5.2" @@ -3510,6 +4223,50 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" +[[package]] +name = "usvg" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b0a51b72ab80ca511d126b77feeeb4fb1e972764653e61feac30adc161a756" +dependencies = [ + "base64 0.21.7", + "log", + "pico-args", + "usvg-parser", + "usvg-tree", + "xmlwriter", +] + +[[package]] +name = "usvg-parser" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd4e3c291f45d152929a31f0f6c819245e2921bfd01e7bd91201a9af39a2bdc" +dependencies = [ + "data-url", + "flate2", + "imagesize", + "kurbo", + "log", + "roxmltree", + "simplecss", + "siphasher", + "svgtypes", + "usvg-tree", +] + +[[package]] +name = "usvg-tree" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee3d202ebdb97a6215604b8f5b4d6ef9024efd623cf2e373a6416ba976ec7d3" +dependencies = [ + "rctree", + "strict-num", + "svgtypes", + "tiny-skia-path", +] + [[package]] name = "uuid" version = "0.8.2" @@ -3526,12 +4283,29 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +[[package]] +name = "v_frame" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" +dependencies = [ + "aligned-vec", + "num-traits 0.2.19", + "wasm-bindgen", +] + [[package]] name = "valuable" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + [[package]] name = "version_check" version = "0.9.4" @@ -3798,6 +4572,15 @@ dependencies = [ "web-sys", ] +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "weezl" version = "0.1.8" @@ -4260,6 +5043,25 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "winresource" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e2aaaf8cfa92078c0c0375423d631f82f2f57979c2884fdd5f604a11e45329" +dependencies = [ + "toml 0.7.8", + "version_check", +] + [[package]] name = "x11-dl" version = "2.21.0" @@ -4351,6 +5153,12 @@ dependencies = [ "xml-rs 0.7.0", ] +[[package]] +name = "xmlwriter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" + [[package]] name = "zbus" version = "3.15.2" @@ -4499,6 +5307,36 @@ dependencies = [ "syn 2.0.72", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" +dependencies = [ + "zune-core", +] + [[package]] name = "zvariant" version = "3.15.2" diff --git a/Cargo.toml b/Cargo.toml index 9d7b2f9..77eeb72 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,16 +6,24 @@ edition = "2021" [dependencies] eframe = "0.28.1" egui_plot = { version = "0.28.1", features = ["serde"] } +egui_extras = { version = "0.28.1", features = ["all_loaders"] } rfd = "0.14" +image = "0.25" clipper2 = "0.4.1" -gerber-types = "0.3" +# gerber-types = "0.3" +gerber-types = { path = "./gerber-types-rs" } svg = "0.17" dxf = "0.5" lazy-regex = "3.1.0" +itertools = "0.13" +evalexpr = "11.3.0" tracing = "0.1" tracing-subscriber = "0.3" error-stack = "0.5" + +[build-dependencies] +winresource = "0.1" diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..cfdddc7 --- /dev/null +++ b/build.rs @@ -0,0 +1,14 @@ +use { + std::{env, io}, + winresource::WindowsResource, +}; + +fn main() -> io::Result<()> { + if env::var_os("CARGO_CFG_WINDOWS").is_some() { + WindowsResource::new() + // This path can be absolute, or relative to your crate root. + .set_icon("resources/icon.ico") + .compile()?; + } + Ok(()) +} diff --git a/resources/excellon_file.afdesign b/resources/excellon_file.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..535dd1fb33a0f66d36a868a91d3d42b70538b593 GIT binary patch literal 44321 zcmZ_!cT`hP*FFxP(2Mjg(nY!`y@LqSLFo{BM>+^dO{h{tKtOsC0Ribu6drgd-Au6q5(~jW?;vEL&M~O6^$RgqY7J^ zVG@+As)fPoV6w(O?(1j6F|&ime&m#GmFYF`dA+hdCn++unlz$M6SaN@ES99M#-?hq zcgwjv6UqtNKF+Qs{qE42XJnGw&wO^R6ixsm@F0+WSt{`*N^O+%zEjByZs7jQC?bjZ z{**^BmfeyoR{W;ej)x+`C~@ewx)*#LZid^QuT_mI$xVz^`2;^?q$N^JF=;=1D0?Mm z)J|&OZb$*glOZENZZ@80$UzqvY6AC;oyR?sI!eb}sPkO{kNKxV;^C&TnQbDtx zr9hik=dv-LTk`(X&SQMR>k>T4-^{1^$0?6=Wz1CgT;+Kf99l}?)N#ZN&RyAv7Rd|$vA~x{*eno6Ry>Y|(lF`p!Td~rR z?Z|3CZc#)xrpEJ#O$NlSYtuIN==}+d z2c#I@RZRnXK1P+(?#N=*sO=%S9ba()5~gky4F(hX?fz&9@%^8OBrzlgX*bY7-?d-M zTwMdkHbEwut;` zACOGO&)<^IG_`>=7;1#1heIKJmq; zy(4#o$9T$&Kl)D_g!^W1J;%?R1I2ofNE11cHln48L=Y8j^&G#KMi{>I{K;XQg#ddg zk4C)D7G_jq(2FULz(7N*`Hvbt)S+GbD5lV$?Dca9^ErnA+Tl}>yXM2|XxbLXCKWku zV?2`AteVkkgp9h=m1Ykf3ozjSdT7r4h~6~KkASaxT#b5ir+KATg;+4vT<$}9X@5(% z+g5T)e7xFMxridPEMr-&yGC{CfVPVwx~svU^a{cun#bbpWAPD=^09xEmm4&jfIN%g zu>eiFxVaw2K9uK3t}4{a%)N&?|DM(WVLTt47XNHz#E-4 z=%7_)sVaz7qMzcI*in=E;?29kq00L>juQpWW_f)X>*fgAEsZ`dYN)3F{vqm2Y3fH0 zP8B`g_iLlhO9l2I%`ieo-5d%kX=&-Z)C;mFR25FO@HeSaA6nPyicxa*PZO#-RU3nQ zzZ|4l{TQp(-6eO`YdDKTF*#S{P$d2xV7QKcRC>jr-D_u_t()c7uF2d$u5(6s8^(e- z{WRKint0^@o1Y=9pXUGnbH$uhN$#UdN=_(R-Py_b`gP zPr}N!L7VfV;Q6T4jC6*efu!1>tRKdYmEW-#6PT4y&0Qw8WRtzn%e;(&7&uwq-r`Iz zyDMwwx-ju9`oo9Ew=CG$cxAMGGndnHr5zet2sGS>9hCI*+~3t(R>e3;IuDtXlFw-R z_Z5_dd@Yz!5DSp(nY41=O<}tAYH&?p`}qsrozQp9lfpVS4YWC#reAfP$C-Yv9lun# zdso(!);p<|WrnT075)p)rx-ezTG)e+n) zpJ67fqPeS?_Vz97R_FJ$^@M)IhfaTRzjxSEKYob$Rz{>vL2r;dsRFNDee`y1Flp?$ z^mF#NwEiNl($mN%SE@1TcV(YTPfy__UAG(?x7dF|p`k&XNYHk2&9y%BoW_5|m?T-a zg5X(JBAGL>7G=)Q$FzjhlPYi5GW#<{i&}4vxhHOu4uYkRo~CfQg|YS;uRthSqpKSh zTbHurC6}_m;VE~`1hc-(Gl;2mIJDaRGlySkma-R8YR0U@^b1pVsj)jXlE}tI`NuO5 zBiBmp^-WI>U9zCL@G2?ZS&x*)s(882kRf`7r=?r|dID74k1LqP;-Z1f2;kwUjO~Ipn)V?h-CV( zkau+>`aMqub(72c8YQAr_`cX=y)$T5!l<@Da`Y*WG#SC5H?sfa*vB$ODbm9-WfM!` zQC&Ok9p+IT)r@68f&JR5r53^LcDMf84x9jv5B{8==hYu857;0jgCG@dL830C`SuW2 z;lNhqBlYujlx)Pah+3Poe7YU~EDoYXguUqrIsV>cM|PEF&o zhp~+q^ER=KoH}YSpcAx(1u#rz_YGdTHMM)zMS!ZtH%E14yHloy7RCYlOq1vB?O zG5gj(^hxP!W*1uY-;XhGy1sw=zB-jcXKKw{2DX|1US0-9{;;sNc;8C~If^mZ;{&_0 z=~z!ermh^&rUQm^2%C4Em{j3pV;@)1yta->nbK|PHQOhz^_;Y2wVu%!dFIr-Hdf{5 z=M#Ewkjb6IHLfO+qL#r=!cqX-i)X0(RwBOLnKc&w@+3}3fRF3p07~`40|nBk(xE3q z-{dVoimU?pTGYM|;^f@kQ|e_-GZ*IQo0>jZab3+-EpBh3m6LraOS&K<+ejlv^Eh3r zTpZ+uU1(#ip!;w)oI38Fs@lsXGX5mfC)~qi%(rXHDr0p!5AK$g(uQ(1?CP58dX_+y z6nx85jesC+ zQiTxtjWCN^TmA0JE5N)Yu`W|gorV(n<<|JqBzro?4>7zY5_h0tsunD9{DOZ-Htx32 zR@B5kdB1h{G&kp|>OH<9eu)sl#n*~p{5CGbw-3HhL38k_%cSX}Mz~@Kh8kX%H9$q4 zs!;MyG2EjDXh6TgbbI{vruyXR1*1?)!HmrEB{+-w4%x4ymVnmxFY8LFeq`;nwG02H zI^@7R*HT(`yVEEa1xq$&0m~}}wR9H`&{b1^C3Q>6fmUd4ZKl;|W;M1xR!g~^$1PkU zunI7Z)4PN8Xx_qJWyr=v?*+w$-sfIiWY`J8D()?s=yYS-tqgDvW_D_^3N^2p7eyTx z?XhD!grqay>EpHM5v$UD))@VAVaR`1ya0i#%4qNHXWf6v#;=p4QRmCnRyYJ~?Nb`Sm@Id^A! zA~MbiE@C~kMJwR+@8gl3^Napg9uNTNyO56Ib**Ol8(FK(`ZwJ-ZIF^KIN+! z=Tht^QP^5nDQv(4G{vbWSQ*f80TBMTyif&r?e>K0xQp-a(cUG*X750^XjdqD~ZT#)A z`RF#g`A(n6uosF?Fw(LtZ*RSsxu^R%IK86t8!QS}-P1?(c@b79>=|;;s+#WR=9Tz; zTB5|iUvsAj*I*I_jip-T+}EM_&fLz=icnNi|5i9!`;IkbyoMRY-WxRODJ7lzm zIAB@>X@m6AA?uMs-Eq?NZSHxa>_)H^_K!ig(3A9H~X0+O8$+UC-S*@jvG; z=1#Gt{LI|vOk!>3pU|#*Ii+^4*2`M)%_Skv#yamm_qPqGHNRPPEwU`IE)H3xbS?Q| zVfN{sf0w?%>*hLmtlw-ox6xRqzL?lpr^3{_exZ|70s4vWcQj*Q-R9t%DiZ%x0TO>k zf&ms+y$7NL=vQ1iH!Z%hbMF+%%w$UC?yn{6c=}jdEnnF--@kvfhhYWt=b09gpTh8- z361llkNoiJr`Nnxu5i?Ll8;{<@)|W0-iTz?vEANm7s%_C!EPrruHAsO$xHn)`|9GZ zcbIbn_dR_cGYFq^e2Z^>Fzfa8sRZB2;JlNkz=VW+vf)=|GY7PC(y&4yeZ}`n4NSTa zo#E}})CGq&tRiyn_}Ltbdt!w=|CiKeiP4idPqf18;6e~uOzN3S9vgM8iJk~_a&Iy5 z+r44kW{;lmQnc&2;9ihB@)d5gSMm5ulGqf^Bh+Ra++;5x2C}~xvzlvv(f9AcCjV0` z+#9B+H>r)vx5gz*^7p-V)vd7hp1bM=f#+?n`Mr~GPrc=_IOZN5!)jFXZen|XG7cs= zTKYdey_C0C2=$HJ&E=ySJ8yd_90q>!Zs-j+zdt1T+36VECzX5tw!j%Q`bz(|un?z! zG+9M!j1WbmNIKztzbYpKvE4Vk+K<`Ga^>I6N3UvHHt@bF1uy?dPIS1?uyaf)O7(Wk zS~T#65Vj!(&kgJrpZHksb2P7PCH^`5^(BKZ2vOS8jh*ZzbhS-Exkj{PA$^1ye-2-1 zn2X#VzLGW-Z1dNjms`tjY&AUDV;?~VDJT97u<}#CW8T(YQvHhN0jkNtJgM-~0cL!U zSKjBMo_mJlP8Y?R?U8p3Kehiq$KIahqk$EYgf$^e8~ z%#i)?Ykq%w>9}3cg5pV;x=WDy*EF16DUKVtZ3OZ%2-e%@bF`WGV7aa{xPH^_GJewB zqxZx35Q2BUZ|%N?wRY#niI*Jy8B5y$OP(R8t)@ussu1JX^paWWBj&QUvoAem;Vk>n zEqr|5-ax?2WA}9eIe|`I_ar)n)51+oh1~ZSYFvmG6)tG_h18fz^tq z=iQ0RHKp)n?Pz^@X`(7VIf5~8Qhw<9)<$1tlWrEl%Fe-18PiYVzObj%DpuKz4rbRc zpQtj>S#33$S3_Iz$d{=4bbsuz{TaCeGIYA8mD0*Y~xY}k|f!Y{kF|m-KxRiLE8p!rz;+3FPSmlQyt2hf8qZ^PVj|T8zq+c zF$aSTK54huM_w?oey2tBA=oVT$=4TC;sG7s?SXrmc=3OK=^EB%k_Re2O3`eWC$Oft;k)wn*7mV@K}SCy z=@B*`KSW~%cG=cp7O>I=r&I+-ZLHSk>i(v2y!)l^^&P#-jLSr4DNCEasLz?}J>NQr zKOzk*Uh(uOWpPS5Rw#VY+#kQQKKS!q)I9q&g@=`@5uq{<#j0No`$}F`tKg}JahV2P zIGNKEL(Ch!D*SBE^N(!BZlS^4f)}6NzGn1a?8r86(aqUaT6T$rJghzQup##QdB4A4 zIOg_hIY)p0-Brj9l`;D`Aleh#ord3!DUwX>w}*#f4kt9 z^M_uUF6e%(C1lT5XZu8EW3cN0_0_2bxC=?5h^L-FO3YspTcIo^eOi&+9rN^Q^b#AR zzqa`UaTnjy2H5^-$d6lzYlhdN&7@Ls>~~el?|0Oo6J^d;+V#Rk+sXzN-!9HSA8hIu zc{Dnf>KW$%r7(}|rek|NCL?`C5*xH5z(&=_H92amZM*f2N0z1~DCuf@=(u3JkaQj8O-cOR|Rv$lxL7;dL>+)mBRH?m!O_N1@!+jLsE|0^qRMLabS z7FT$l7)#*D=l{z8W2XQAG1s8~)f4}}^MALR|9eLFzl;CJb{CPIzrrKMz0@Z@*&+s< zd>rpP*}wSrkH&6Z4*!~NWB~x%|60%Eu0e@U^))ESZj<4jQD|wZ8U8}t7#Dc0F>YU9iS{BN>%{i1hmv18NV#p>#+@8m&rI_;>>+pU5!GyyxH$57-^1a zCh@TgdXO5tO!4zxH$Ean_FQ(#+VCww_#+}}8j>_!lf<`%hxJ9mZH@tgPYeJY2H!H8i*MK8!i$dJe8MX8#lZMmuZO4e0~J;juK(u>{hJYy1K-$rU~&T%T@b%$YkCS_YIi-(P{hoRgh_ql0Dw1* z41k*Dx8Ae7DleMXe`S}Nozvg9pB?C^WhyyRA8iw8CBW!66r+06*gqhej#|eSlOR5O zwnTv1;sS2cfxI3Y8DgM-G!12S%Z+f6?tE59DYy&`JSJo+79qK;kpzS*i_EFiP8*J! z7;a4GQ(MABS*(s+GmA~yaN2pa(1fR*UPRTqO0iEzW6dgxu^#&ZAGFH3tol~G6+jHs z7G1?96eVo={TW7UOg@6{_l%%xYd5iod}0-ETnCpe_drcZKofMa7X@CN#bhPeBy3rD zdJT@{$1G1JDol<}bv!wKI!fUso z7n9dv0yloHC{;D(xj97HfN~vpmQ(f++QJoiTgeenF%CO+rou$MTf#_lU$1l*RT>{E zOPp_bJQ!^Ic*wv=dlj9^iJO$RW3_2Y^7(CuGw{H0pR%Fe!x5XCfZ;}W6=@RRJ`vYC z#=Z#u3-nzdSyam6_ksF2)J`|AuVdbM_L-&tu=_3}s3lKGZ5$NW*Nu|rOs}*KXYzGc zOJDo<^Nn2}LD=S1uq+e%n_c9FYdVrTTu$ltD@F|FT}s_Y%bbm4>B(p;AG!#DwudP} za9#KeE-8SDju5oK4Id5K;P~yJGAn#-Eo7}ZqT>or$$_Y^;(Q+y_l~_+crT;gr-h^^ z8-r~u@+n7Obx0miH4+2R)VSK#x4HHfC7aG~HV!fAJE2W{mU1ZtdKfL8LTI>RazxSV zAtC+s*8{Isz9!^sT?ITVrneIq{ynnk7x@{!cxX(9?agm9rLp@2jQ2V{AIg774d7Pw z%INqYs)?lG>~>*<1;ORT^|gCjH`cSwAG@Pqbf8h1nn8L=9qn9kwn49)y0JK|py70W z7Lzou?A0xk0&@j+2+?z6-s{MyAWJ>aE$+g~IipRYtx zfV!Afi~Kx!0aI3fZ@K>ayJk@B++9f81ts2+NyD9EK1+gM6-OHw4r8W^AK7=-+8LF+ z7xTzEoR6C`ZpOd=Q>*q5k_OOLl2FtB+H6)RL7@|XOG@k;iW_ea7ulyc%0 zgn9zo?!B)>j8}WBe=FkPf(%dTExAg?M2NPn>|gjQ7Jhan`ggz!;TBfP?o-j*W1|>~ zv+YNXZs_~(j82EWJP>0N9g-8{27-Yu3T4994krr*vJFVG@EjI=0|s%UZG`3MVdA@@ z?!E01G$f5NyeoqH@)Wn|y5H1>5EUhEVavYTd1h{Szx0GR*KO7B-%&YVVwhP-9GF!jPIkC8Q)v)#Yq5qId~ zN)$$f{rNXU{*P3?<8(UVBN+^gb^>D2j@1s#D{cm?m^f=8d&jQ~aHgxTewhO8|GuP# zBQ4j{Lm-=u!b18sQyH?^^|^wjW_{Y_S(U*p-AOe&Dhmi-s*U2Cx7PqXuI$ zxCs(1!-qm>!0f2(Rk%3HA{BPA)b!7eyG>LRW>kfFuf3_Ihsb}eDRe0sDE=nCkYw&Y z2POphSP;yU;k_*7paeXh7jN!jC+3Hjlwj1mbZ+LBWJV;)<`R4Le>9k6-*Mtr6_bVZy2t?i)Wf^GMYrx^bPI>Liu zog*5v5n~r{QOt<~1ma=wBtaRcg&)j8E;2xxB1F~}fHMvinsvGK1^dAYLXLbUO&_sB zyGdb+fH^tPZo|d^Q6>hk+G;tV3qukP^G2Ww!ZWAJCoXuDU9%>u;-%I!kfI8 zBHe+&vdFH`=Kkg_XbV#D?ftzBg-Ov z(GfW06QEL|==6}o04XF6OfFrdoZcn9d7FF!HP9{L#rI_)3cbU=wQ{18n*FL<`Gw*$ zeteKU1@QYl2vFirq!z8tHL%%@xpA>9UoF3MS17d&rX;LYG_1BSBTbm|VBkJLOd~vUU`)C!a zY~t(lBQ*qj(bo1#dat6w#5mPwcFvJVN|NY16u|P=bfq1uF4;| z-vg^0N2w^A~~wuq4ntFOLp>$bh!oKf<@c?=i}ZN5xBCB+BE0N?60s!8$dg zXb4Z${qQT6tN0E(9`iN1VjZaOV$kPw?U*$Ja;;DGRsHN*2LO(Vi}4x5C;=y_Ww{iI z7ZJRe2x)GhgUXW#dhxl#r^10I6Q|kaC43kkv0IpTARrYz()b2qs90V<3itw?FwLcC zgEwq=FGF9Jaik))Qhgxf#fZr9uSaQrfIUi1zgvA8uY^z*r#j`z6M>z#kBhhDUQeeg z#(zE_o)w&JP)nZmSH}ihhN4YxGCphQ)1GeQ0lA= zz2kx&8X&geKFV7h2yEHMkq>l$Fzhz+A;6Kzec9pyya0|AdZ{M_F@6=h5|hs17Hkg= zuP6Esqp(6J)X+O*%OXsdDP=f&6DW)kHU90(!2?i#LWh9smR*mr`pH8hx1bD>HbbwH zF@1$iBq#?IYX_rUhwuV)ghx?PK@N#ez(5ZiJxh1+QN&o$9Eo+0fAzJv^WYPMR4irx zKDuGXzOYI+cF+;q-N~8Gh!x6m=p*Ltyjg_Y$S;C^c-x9=^o=?QxmGrZ*6yx!D;JeYtp zy*Cc9Jibsv5aHwI1TH=mrb)0!=DMQNz>#4!yNp1^`FWBB8Pw zMIuj^AkC?#k|5~b8TiwZisg+L&?hR}t}F)FCaO=&Eu~UlG~A+iaX{bC%dA2GD2eG{ zZCyYw?s3MB-Q<6~!Qw}vB1k<`3WPChp`Zoi=92Q<;Bgv=81J?9qa$jZ8VyOr7ao}1 zPu?26!t%|C6L15U4!#JD^P?_FlA&EZiCJ=B`NP{hSWI?MA&A=4?8u~n1$y_5=x*cw z)rh5Rk+2(gZFag%zXxvRZNNDSjIMs;{M3aQ;O_+#Avqocwy_H3_0(71`z%*1zzXnB z$On(kE_ZcRssbzqu^X{w%R-#;@Ni+tOwD9075BA)VCV1@AyS#8j__qxBu1M^g$STp z9e50YC4unzh!t#1y=u{x23f@1))@~zphV1zzg)ja8+(c5xS2&6`T{CtuEgu1P!;tX zY^hl07z~a}EmcMJxM9Lb}GOn9%7+ z`{R1-Cz|2-=J%cVw6Skvoyo#qI*|g0uUfgbA-h+%kFu6+1Edt4vdQ1EyvS8A)^Z(@ z1((erO@lpazQiuh> zKnseN-6J=wu*#ZY=pHJPW85z1XyzyysH@Mo9yTIsXCx1OZ^k$QlLD5HAuR82ViGV} z+C+99Bq~b(($g-J<~jRDfW1U4!ng@f`dD5JPl1a$;5v z^gFR_6|rM?c+!Oj*lefb19dkzji8RibyL#U>GlfXb|0lMHYHs@1L;!%PO;n`0ES!y z)c4`#k6XaM-5UHvTpsxH$KO{~t%#F&Ip$BSo0P!Fql_Fx5U!V|6yCwf?4jg7% z_O9XsRoeodoO5Ier74oZWp6DYWu^6sG=ViU8rg*2M8K0%FM#voNftRss~^shly*%F zgq!@VUybDlJb7FfQ(D{vu%GNx{!B0YTghfro`eK-K2H;1h1Kmm=#{d|5rL>4s#mvg zVo{5MN)o3n7k>2SWKWxYYMh}*RXi?UxQ*BF2slI%BclNUjDI@EKWsu`h#?2m`D_e7 zgfRBi>Px{XhZ-Wr(b;Wg_;zMh%YdDb+)9!f3%?yRZnS|~y>eyoAxF^-(ITt?(c$e{SUHHt1mC3lF9;(@#Q*l%yf*gRtZ zmcV)5sQm~3as&J3zS4y_;q@sseb^6d@M44RyLE}yQ`*%NmCT@goPkT{R}@1nAfWG$ z;{XSgt?bEp%gv`1uhMgBsPK4dnXD24r&26^xF~nJk9X=m)hZi4(C5P^`)BVi=I@{C zlrnX=Z2oU~R{x^#$?eVbzcLedT$2R8aF8&=qjAwE z&+|XM9gLh4v?OYqEV;EnA0ukvVS-4#@;7$Cm+Z&-FPu$1&onO!Am>$rwUs;7Idd^x zh|DE~eR5@8u~k=2LT?_&VK(8|GMEjfqF5AuDrVzekj=?C11kpEnNNfD6=VrG+$}_* z*;MzcoAK1viGen{k)1@qlqNEi4G^+9>vbKxcz$Gl8M4C3u2fm{IUCdv7bymGJhhIR z55;9?-bh)l!d~pC8x*|VNm*nMS^CbacX+m>)1_o<+vU00K?FSfdy(X^77?kS@gLkYkk!xI|a3+=vl0X!p|Y z3C}*e_!(fJm}Jw%^Gn(m=IzYchgy@E9Jy45uVobtGNpt1r~%)`M}4za3U>g_<4sFw zz6;)I=`A0@FCzIIxOH{3n67G(2-6-A{i4X~SCpj*@6_81@GJ6O+x!_~OCAxjbY~#& z;behJ-rwBs?q$2zw?F!g0&3GhG-EAiUy`y0-cXP*l2Rchi- z)lB&ce`5~cJ?5Sbn0Xf`FZrweV8xNeYUn)VGbBk|&tnH-x%hwpkdhH&72R!m0eI>U zK*~tQbspLcCBBg*|kWw=zV4bxkJl_0( z2`c|l;M~f(_+msVY$GvK1!+p!5k6aeI#6s&cAd10l$?EQhKFbIV$ktYPEm9b&G}w? z@lzuj9d;5%D$faV5yGSl5kp1JPjfecmnJ~N2Hrd?mKgYr%O>OtLkgtR*dkaD*#;la z8Ga5zT0Cp@2rH`k7EA`{Od$5?FOPc#PK{8_0{2coVVT0-51AgdllK$XuO%qy93$?O z!kpOwFfjB82*m=wX-o!<6U_W?jxc+{zchRl&%l^#J#0jc>)fZh+M1C1_AB1Gzro8P z0)}trHn_+IFu&kH-=p)>5N^o(lB5sfpi&ZQXnpivt=!s-o)0>{vI4Qw8XT+S=L06D z$d7tLudE?n;zle9hF>(%`!j#I(Q6{WgDSq+LTW~)ERC`NHaCM6%g`Ff}B01VEp?jmK2Ij3vQ*C_c_A2M=?< zXg%^{gVt2niv)zO=C93mnuGW697dRUiQYq{JAf0L?gaWQ(Dq0ua+qviI~|C7?U)WJ zUOK5x`s5fC}-$~4Le%>xsHAQc8`wL&lIT%v_fwh-=PNfl`SpCj;Th>r;HM#^*ez4$&g1n}l$F?k14(KlQ) zZmQ%)7&y+YUEKXvc!DfI75I5OH#cuz8GpRYAJk$G`-+#cf@k5Frg(nc{7mPDbd~CW z>=Qibxm^|f#H29`l;$(-)g6Q&0G?K=2|nYU1rxexB+qCcFV3E=TOEQ?^YLa^h&buq z{lsFuC|iNm{6aic`7s}+)ASka$mWa|HSgtkq;Ih&A)aZmb(<$NjOxh_2XyXfB5Z40 z{!7?m-s!#v6Ue7Uy4bpU?@UdeB7Z5=Gnvq&977@1r`T1T_n3NZ}) zHpaJ`!b*{(ZPJhczW7pJ@VKB!M;M8_j<3(z*y3(`k!aZ5Uv@YhM>%tLpZ%hdsCxM3 zFE=sTbvT}R3NmZ~0F;z9UI8{)Ah({VhzH+r!Z>_WPPN}O?$XK?D(=n@Lm{6R-^$yGxp}=$)uti7iK|RbT8Nief69L9Ozl>=oL265;71x;612> z+Tcqs9Z}A2VUlb6w%%fLkrlM&eb;OW*WvC;;21a;D775|h9ZnHF$NlfWX``v5ZAQL z*#%OiHRjh7ML7&1O;yOZ`l9YZkja9!G#|Y@@!H<&Sto@8(wuLN$|Fk-7dlVM_m6vM z_&Z=L(U)Lbhx2G}o>G_d)g_qD(V{!UUf8ewCRcodWuv#o21bhq{&I4*eB{S%lk+x7 z*F%yHwv5eMVb+v*>wBSI9O%Esoi^1FM@yTKf{#-h(JBvTd(YSqbcUxP%9%W+4W5t9 zBirLS>xCBm_d|n81VH+RXMd2 z*Xf59lDX7NWk(Ou88M1Z>E@zyN@u6j`3G2SDR9pkbp}Jyr~G`=C+I(fLapy z3X%YQ5e@^kr@g7%*$GNqJRXt;DN8V- zxvT>dL@dR6Wr|X72gcE z>Bn9@xjzEoU4H`VjduJ!BbK&P5Mr6*a=l(Xq1Ew{W!9p}*g|rMi%2e6l$t^BNWTgt z(D~+iTog=6upUWCuhvH`mn85^+IsFfs&x|~f_>6q3P77x0N{Xpqaj1pEOaA~t3V)0 zhd62H=PYtROg&UXjIw;Ij^uQO`|)!osdp#^NMzya#Q~bEraa;v-P2Gsj%0#)k34J- zoX+jzv}KaZGn!t7VY;?diLZ!1#^4OQfPmT72)nmHX;^LR{oY8H#gHJz)`R-q!7bdFaRH;=OiV27c%uX_oA2!j|hvUkE!x9Aw+p4XTr+Pym)p=woP&=eI zly`@f{i-buj8HJ>r5kMwaS;bJO^B91ji1jGhmfklESPqkR}Qw}^ua^?zr~zS8Y>3@~vyMN#g+ zyu7JC540{dcha4NAY?{J~S6K^;~aIl#S|?v=nVj>JEP3}anzBE09Q zI_zvEq5j_-7|XCJ4{A35;k#WvA;%Zp z*F^@1^UIhfRI3-Xf5{Oq`^~#^9491WATh?%bBce4#&MdWEI=&oqvQV7NMOLggUIgo zw%nUjF{|xK<*7THzj`+>XQ;yV2QIPivLmNhVcYO*xbH!2(VvEmEK5w6dIbjTU_)Bx zSRMdpU0LdU5`rw;t?nxgh^D2h6fW)}5c4OACcnX>3AAocz`iWkQC=_Y-^e|@E++nO zq()k5pP5sQ-s6N8U7MuK`@2wfuxs2~{I>W95zz^YziICzKA&w`;hGyEYO6JC9wpTi zrjdfmxZ^`*LM4}4K4RQ;x{w@@ZxilUEV91K>Ub&=Ws66AFzQ3a>#Naw-^D6&Df>8z zJ)Ye9+Fpd+YKaco{0OIN&J6Z#Qz=uLbCD&H-F51Qk9kjLn7c&2>y$Gaq&8>QK=ZcW zC=-)D97BQC=IuE95D z@i}9FW7)VZBz%M6fhFH7NmnHsn=LUbH|BUNd}`HKiO{}nP5}7$g$3GiUHq9OZK@%7c{c-?~(~eCw}vhR(%fzz}?EYqID1GaCH*wY{`O!wC^_t zJL{LVj~XdLdK%`B%jHIW3{me%UW|CuUj*Z}b6Y5VLJ}Kbx#G$>3G(Xsmc}iRp11+K zaXedx3qS+Nu;L7gv7ulb)Tp4Un6ERb<@sD-R^ixKxvgGpetYBV=u&`M}OGvzq08GCSeP_ zQ*#7=oCfiQ{r3e2f|4m3YM|d+LDnQD8Wl%CKWA6F(o%NQ(L%EB^~dRy#Lqqlh=0!eL@z$4b};&`S^8N(|7- z6heM%xc|CIKS>-e9!ISvs+30>P%~%q`Z%DmxUw^Q=H}vw(amRRZ?#U6_dHD@!q+90 zre5HStqA#t1{>vOpkWHofKAEd)n;~yrrFi5J+0#={_-1~Ytnb#&eF(R`-QX(JB~<@ zsD+hzU=^xVtMxdPTCNA_dKnhk9z=yg=L9l_r8==LdI`t4SCoC3Z?OZ+$6%kb+lcg9N!t zxzDGm(cLir;2CVuWpeJOlL1Vc+cs&_Gu_%+VotC^XrBTRndTK*6KT+L!Fck6`;VYn z+0*j@Q{~j(DE>+x^vgYha83M}o0d_S#W-8!Z4V}mCH+!VR9T8XE2Z|nD zV8tNVb~;sH!?-p&yCrhBs8x?1EkYRdWbgeI(2W}(;I@2m3MO>ce{?%!?rIRVJ2N+f z_V2c3obh77TqUnE+jg(D*7scTmbfVyc_!D}5J;7^<5UJ`)u1u-5Xryy2^T*(1dj>8 zx`Mst+>|{dG8nKy0$>kxGx89-O51g_@COysdyn~8BTErDB*RfuxAIpF_DQ|+Y_6@J zc@?*tDqYy{jO9mtjrsxEyMxzM;tT&IDo%TDP8nm25aIrp3WOUfMa`usSTK72WQy1; z3|Ucp)`JWr>+MBU{L&+{xka35=N!iWh3s^HZt4K7@NFegxrGCI0m3zu-+H*K61C3U z#ov-K;Fm&n^EfhecLCn7w*RU9a3QdeU+~3q5~m%-%;GI`KZg)XTy+2b>zdFj8&+Uh z0!JR%r575>yNC?ld}e|rHJl8wV!J$QGfWi%eKu>ne6ky7c7N&Y7SqrE%|TrUbeaxq zJlWhm@=Cn&8LX>BkULQIY2bl?%cnyUjn9RMi>ydN&y#Z_YeZdasLa@fe0t8h%u20q z4qJzk*Ldhoj598$Gxkoc5$vw70DRyUPD{Eb=)?4R=@O04L))~a=M=3(mTzA3%w=w( zOuIS1AEJ#TvR0|;kyF8}7s2+0!_x5TITOU=rH`RFJ~aWixPwatjJpQhS`Kp&Lf(sA z?~HDYznNHETT%5G6}WD$TqNO-Dth-9pCR)D1dXD&<#80jKS&^;c)X!`fRbujGnIr0 z%!3b|!wTI;809<$1G-Pc2ES|Ae*3Kew(+P54hmE}78w@B#q_Ok4Uqyd$ZCh~vK6YN zifuv;>x@Xa1}?rL+n91T85Z?bFG@X_6Z&xfI`3`y&{v+nVNb3(faNG$44&MXL?v07 z+{r^Rbib>9YTL%L=+m0?$L3b|ppU_Ih6lpEE;8?*FEUqmcxSG3b?DbkQpoUs}tYj0N$2peF{n)Rz_sQvR zuc!}#mR7}$f!OPERa_E)2F_M3rI!pSU-*8W{9}$VMS%k%LO1FUZ;#9eExuErQ}G4* z_6J;Hk&(0x^+_xPaJLK92d&nx-^xE9AJDhAmaq2VuafxLg=waIc=P7=f@ zAvn3vCm0s_Mp^@a4O4Lib724|oD{cp5sXT>uKS>)EDY*fqla|l%WExu9w0M4y=^dj>nZoTLr*Q1{Lqpy4!|+cWQ~+)Z13*PJ#2iHN zp)JD?d3*HSX|^-XcLd18dJRY-b)VhQND`Ppp5e0Xinl|;-~YqIsSoPh@}Lz#~a z1U7D|XeX9Z`+c@Pp9?5;Ev^R-M3UkSEBVw2MMQU?_bSq(Rhc6dS9y*pl*M*S4oBaA3|C&~D4@VKuvei5me{$lRozaU z)EU%R;bryHg)f_I2D^$QLEC?jSMEjb1sa`i%tCWtlGrs8_*39!AR3o;$p2-GJY1<} zqpl?zcE;N~*ejP`!(*!;x!soO^UwrkaXFIHi->6lJ(5+H?N=csxJN_%Q{vw@)SL?u z0SZ1kcYy8#N0d1I0d9hvd}e!+2-)4pQIPyqqYSyo+ZTj*Aez_Co6>yrLrF^5 z850EMAHW-j85@oQ&LFw`B>%ZV;Ij5|byTE@xNdOy!`i2dH|^nmYB$hwv z3P*t4zZNn^j7XAwH-;H1 zC5p%AHIlu~paQ+)B`s;zDemPs#gK<)S}wf_83(U1|<<70~X|nc2$V4DP(ZCi_== z7e;J4!l&fgD-?E3uC&j8=mNydPXPdi9gJ;u9-i$lxwz;iUfkEc(PU_ra4Qh*=JBq( zY?XWwkr+F9zam3`xIOqKy$pPya#}O*Az%NWC`1jxLB64HV{G*M_u+iX=f&MlobC6s0OmA(tey|_ z>YP}%`74p1HI=QOCw85azZT0b`3I?JkM14cSx`o)dNC%FY)z%kVyplR7k$iqo|;PD z?I0yJ>Fkxjl{!i6t&a@h&F=DThjmSxAHTKbYe6+X3l~0?$^7X6y1=k=;PS40=ulFV zrMYkmHU@=P;H*W%;m{qDj3~lgaO{JJFOs}QZTMwym=sz{(eA!tG&UvcR@P5A zJ;^M-wkG~AE4_9pNJ?v`0la?Mktre;mlM;KFsr;G)cerKoYH1@HC7rfYhDw9;oPC} z_hdX_8>dDgkzmGnm4nL|@WC;$>rFLBvFS9cfu;b^HPJ8md)d6`A1z*kZ zMW8D)E zE&aQ&I~#@TgLYxAZKM6UDg*pjv}0FUmgcTL%%xY@EH_1bII~XhT8EbDtskNnF5kY` z*ByRwVM%bcVlO9)f+p>V__SoX1G-}DpE^+(Vj+k95gBlCOz!DR+K1nU#Q*>* zXqq~^bCnh1cS8fMSIPyedc9I@vtrXZ=2hx0FB@XskN#~^IK{58cx*8{e`Bm91HW7m z%n$(=XWJT_7L9I6MW#UAxynJ>_x%?JI@xdIc96E;eUy`a#@XsNt8em5Ir zYgtl%qGDcL>Qz1W@bo7#@jW?hMYLWHd8LMhnD8TPPb%=of&B=vYttx3VDP$F?>Z%p zP{BFvjXtuMHd%c_c08yu{@6xh7{!CwIl86jYYIk6l)q#|-Eu+V<22W_X}x=FJoDOm zeee4}t(~J$BjXuCw|(tbU$?%u&czIx`RW6=*olqm^va;#LGu_Jp8Rux2Ywk_e>;7{ zx|x=#1kX_HT%&ijq#BQy%(l@dd&Il2asJA>71*+_lx0P~T-_;A3>^9vlE2WJzy~|^ zJak*rYX-2~NMR0smsi3``>1Z05mg@pYN1HDdcr)nE~-;_=B5*RtuUwra~eI-$# zyXtFCe(@U=#_Y8P|M#ov`zEF%Km4$Kk(FG1DMA_)?-LT)zhyQR3ip(Lx z6mLTe!S9fCv*VhG`!lP}S0mNkvpi0kAC|0DF=i8!S5CWzilDC8!9$OCzHJt#RsFmI ztZjqaP*Anq9~Ed^Fc=v5K~CF!g!~&3vjxLvk?bU7!`sp%Q))FT(^uU+B4CRSfn`k6 zml?%lS65#>vC!~Jc`D1KY`Y@Jr#_h6J{aTxKe%{sl)PU?Q;%%8;FvmdJDhTR{C#GJ z#vwu^u$D36q&DcBAbeHge(B7q^Yz13DLQz*I}cu|oo)Gf0xI8Jp4>R9PHr4*YlCq! zBQF47p&!TdcM?vxm{h1GH|CA2u09>2bXQFV_mg+ivNO%L1A`(A9~jsjig;Xi}vI@n0l>92V_@AHyaD%5NfU4V@SU&j^)2=G{aot{Wf1AGuTeLS(x8 zpawOuDvuZES9r9JMF~ViKUs&?y5tD+%{siU=kEjy)Op8HoZ-^FiWG9a3zUysiaR+& z4PTq6QmkPinx0|j1jDm47ZV^|zWKgs3oZ?J@qry+Vh6@`CiyDBL-~-nchl;9W5zW- zogz(^>M6A`OJOAR_A;?zZzc5Ui*`+3(J;P6i!(V*6Gwv|N1{j)Fo&=_N;31?LPPlU z-)phnP$qSfyi-@Z-)Lazc7w6y#;EI%qZ16*v|ySyXY`|Ur}8iQw?gcp%jtp1scIAt zAg%+hb>vw+MM^iBOS=HRRBN?*!#%@pZ@{4-E3b;P=2EPZbS-LgNU~i$tC&OBngZV0 z9~Zw=T}g5aBByFmrY(I%_7J>Fb62Glpz+jDu)+}TjqmIEic-c^e}f<$Xmtsc!NYmn z50}MVTL z8-jx|Mq<GFV#*> z;VU4agSktg!j6gJTJ283H?dgNJkgk?l-d{Zh{kY2STGTN3?IHdVk?v7JUptVq~j1u zzUdLMMIfAl_!np~u`i0~-t;l0TY&f6vNMNdy}^sLcllp;K2dw>$zw*;^v3hy>gA8n z>wTlns`I9~a9Z$I$(T%Kf;3F#sVu39t0SAK@=OnFWJC1)mp^d_m z&-cT9gPvm@e=l)rGSYA2+HcoB^^j$+uNgjZ}t!6=MQVPbT)Bn>)5=x!`@0UTr2|>Tdg<=XvlwMqL&`LBj zRr`%hmcQGe{+7lnO0RL<=ROzXmhYP{P9rBqof$2BZkkC-NLKUg`+UJ_5^jD0YxcpD zbW(I1LG^V|5aIZ|kY~y4`;8CR&$~V>iPTld+*psD)>N~=-v8Yhh1B_fp^Wph-+!p{ zd?%ov8f>ZeQY`VlVkeFOYg3?AGl^0J-f?$T>~ADuU#Ac^g!gD0*$u|bNA{M>+G&}s zh?fnN(NiZ<`07op=j}-0*u9OY((b*Dk94$SNGz8lBh4jV>(KA4>+#?4`zuk7-Cu4d zN$c1Z^isDuE|wZ)|Fq2ANJZ_Ma)kMShoY~-d4&@9{$tN$Xt2E-dzYHm_Ru{OC~+y& zv+AUd=l;6kkaAR$A|#Rx_`7ZbI9}M4so>0w$A187ShLu`G`b1$W=Ic$Kbkq2 z=xh!?v(IX}R>slYFkiFxbt|mwQLqfYQH*^f)cz|WWaS`7%X+dPmU#|_O6{qdE5eZ; z-Q@yTOpyMBMg@JBymk!R-h;y?t~uz|%pgu`wDq{F2eQ7aYDT!4ys|ooTi0}6A5J0F zE$i$p67Nl@N9(>v|LAhNJJ0B7S(=uPGRnf}SLu zoaSsMF@m8N_FXfonX1H$-xweU!2Pig-uY`#l=?CG%l)|;CO)5D@GSd0_4gW8#A|wS zy0Ez#uoahm3d4ao34#|~t9=U{Sd`e^Lw$qBnxSq=A64JqzA$zn&3&kGWx{Sd(C3U~ zqnRf4k*^cH@CSLw8!EB4cioHFzz)hxz+^K*S&TwU+DQ=!cZe+W9$tAeYPV9u-#K98 zZjT?-+@HApDcfUHydR zxGC+k`_VD7(w%pZgkOO6K4ixbG-X-I7m~2-j#pd15I?6#Z(-8fER3Vv4>o1-7*MdF zr{Ont&~Zs$BveJ^ONEHHCiIb!!RVgYJ`kn>-YT4a?U1|g{Tw3iw<7j1;v4*0A8Ysu zP2=2_9Gs>q^foHx-m1>qpX&oMT46Jqs=g)&7U;?Q4}&GppiuQ-D3$}E}eS4(t#ho-5sWXTA)+lrrX@s-yq8H;Qe0oJH= zD^j33YB#y)-@#v2lTzG1y%mC99amW7^3fW;m3_oko*j0nS88RcMev5JoB=xR5Pe?VihIQo;Q z9|^Yb!ex{*|BeZNmvubaPIJIwUdA+RuDl@c!P=`+pm0p>Bl6Z)*6;-SLGQ&f!OrPl5OHV9F{0 zZj59V+guL?)WK|qz@$)9kuPYK3JLZECe~{*Z-pWD6)mvLU0vGlz;5>k9)m|Rg`4|> zszG9hKm;c%{fi%LEpm=)r+{c>CnJcZ{;B&1ss8!lGb|F!KTX0l)e%bY+kdKR%H1_7Oo`Y7b+!DXhk5D+9yxw%K%d4thHe16%fTh=Z5y5Gx+zh?O3 zDbw9~PTASd8XF+tis&d-te=IvGv^3GX26aWID>-kh=Wg}phn}tPaq7re?u!1)7Llm z?ggSShViABEcbo?5%+a@=hZl8&A*KhMph-$bHBsGu?-9?3R)40SlScPjBhwPO*r&$(jPcr6{T10 z!dhM<#z*=H6|~N@c?#d~k&Nnrib>0pQ;cgc?JK|p9kPBnfC=UQJ9eO}+;izDEFCJ} zSrSg`Z-7Jt%{L`I!NVl?Zw01hUGX!_p>hY@OogrC#nu4XskWh4L;={jEye(d0^pPE zbgbJfW3Z2^B-->W% zXR;5{$|`!4{xKoTno^?3LFOf0tNgv1d!+ZP2aM%6bN&hho8I?+k2$aE*#r`|#0~2; z%navv?{Ry+1G%{%w;0T;jL8P~(jUhu=J9mu0xC!7h;gHsbfig1X1+OYODQiAm)9aL zhgx6d_k4v%A#U7Oh{cW(fJr26-*k^S=e@VP(Zs|^7Gx6B2TbUY*ks@PCAr-Tv$s5q zZ4LW<$5ipx>ew2?5V->UQ&5M76_Ch+)I8KjY8)DCp>V1~m)cXGu>sv+AqtqhHx1T` zC5x|w{bmrpm&4<%=?z~9q(+j>vf`!hzJ50!*cqw)`dwLH5)A>%&l&`C@wK~`0nl>) z1XmjfyOuVML;Fhf-re~u@jK5r%d~$h|D`C}RWEH$i3FxPeRo-X!mVphx&oKLIyk*@ zH|g)xf?bwHub+*wj`n-qjd*>fz?$PL*y+nMD@);{`yg@9olG0iY<*SMX8;nL1H)xc zMMMi~`&`tO}ltN(EUY}C&zD!Df%WZlY}l9`IHQ7JhnY@J{M;yOmDvx;+Y6YKrY9rt%E zbpBh`>{m-k?D1$G1=(M5mYFfeWevDJvd~26N^2d-a-uVCy>oqM$e{nGq>E_loe0b$ z=b`M-i9O7+j=>f#-b5?J6ui-Z-F_ybQw9oOnSqENJP^fHuh%>5-`zzOZgA4KA@R=%njnME%#fV zT(=sXs6AGGTs%Gdd&TkmWaB$_jZC+ug?LYK>p>tozvA=hDCcWSAI2;!REV_$KFfRYCP5P^@<;c^NVCXpn1Zzp7uW zyyje}Yv4=!%?07coTj5roSK5*_#N#I1*d+CI)u_w^}z|)xmhLc zRM$gIAt04{K_+wO_OO>ErgIE+vsf4ad40gdtNbC+Tjxd{RwMrgZFeQ`!Z7*j*sCHA zZ6xcE&xUwQY1%Q-17k#};@Rw2VC!q+f#v`U5J9g>leF(jKe9iCv44G|K708*Zr{Y$ zwwgjvvcI3gv1&6xY0@fjLO=4&t}j^pLwT+hzuP`fIRZSUhi(Zc@*a(4_x^2Pc2jd7 z5NiC0T&dmas_M!6Jh6v%p81^OgmGp3n^h4eT0RW%p_lkogiswO`LpA<9t)oQ`*mXH zg_LOOm-DO~w%>)6pFX!`jLnxvY60)JuhC}sMz2#LKG#7ViCT7Oaehac)p9Npv)$Dx z{UkQU!E(NFF<`MixNj3dvKwB`-3fi#q;LhSp|0Lx8I+!#K-3qUqb(dTPSU@V(kwIN z{D22d9+2ptuRmKK@&~kYvM=R@*)a`EU*;LK(0`R*u8?IJ^=AH5 zrLlSf*4CE==mF>pb$guZa($q)ubbFg)q5G_Shy0>(WX|b^M$ydl-lbC>%%8`Wj+ufjyAFTO~2XaIF!Vmzi{=ymsV_;_Gm(Hu%%GJFc8I3@NCZY9>dy4w%0 zqlL%}7=uOl!H!Tdo zsT9+HU&zw|M=d4zUv0GA6-kilP$W;NIlytTsMYbcMQT)3jjU-nLOH?DHK%nC>>Ipy z=6Rr2VmN%PA&%jkp?UJTTmzn0^H;DloX6;BfAhhEm|unMH=eMIMK#w#s}){hKP+D_QdUc6g!OzauztI4J8 zT)%b`xj_T$mRT697^T{C#WYbT=PL^vkWMGP)^${aZA@gRWW>>D(q#XXu8yC;pSJ7p zpQc^NUOT_3@Zs5o5I1JY$}VjFuh7}+i2;;p(OJ=g0(_}BzBC6ULB;8`Q}y>7%RX~m zGnDRCG5#9`(ss}0I30qb>VHP}s|+`mn>5N3)@kdV^1(C9KYVu=W4-)wb1yB(GGY5Z znvyZaM6l~qL_U1{BRsQOs;pi518J9*6w``T)Y!#1{~?hPS&WeSW9IPJ3a&?@lif0$ z`Q75|iA-8)67pS;sfDL% z2kfE}=kLWhc^iCF<5_w-7JJ0=xkh)@sAs7?%ESNBt+Ah)KXx|8KkS0F`+KvQwI^(A zvSv-)wkw-IdQ0?sf>gZ?8t-#xa~{&~XjUthUk4woam?N{9Lsi4UK=>wbd;x|tU$o1 zMl1HPnuQBIUUX+C`NM54SI;MnKk_sIwg@{yO{}p$Wvh7$_TGu~CaF_oca|AA_9v?e zXs%uvSMKufpQ(#%wlu6cjA@@B50;=EMLYZVyG-95qURFPiUW8VUpxoUuoM#Kd#dw#*Uuz9+2^sJ)UBggAr~tX;5dU-_A=BI}$`%YT^Y;vSj6wG9!pG^A?R}wdk(P>F!QJ=~FGk)6r7{lGEo!~w;hPql`wiu-tm`MLB z8t2$j-O}1?SRAuIi9U|0;$9SR4jkK@9|g6+tU>QHbVYXOug+@eK9m}R&mDXZN?8dD zel19<<5Np|!g--auDypG(x})r@e)z9kaRx`V={J6Yp^MW>yXQX#Sy;nsWa)Ndi4Xu z-c{hMiDjq=I4$`r0gPK9EXqcYPs4LEA3Cx`Yie=d#C$?*>cW;_-Stvn7+pI+ThHxv(oBpNOduOve| z{Gl!CmSaSAIQ}!Vc*kfyTSUaMVh(q=e&$Vk&mJ*D&4E;L$ly%F6fWv$*y;_sy4z=! z2Cg_y{UpK9EbI*-O>TzEcb7sUj2An752nSXkYullLa;loXi5ahHzfPzRHWRGI}^(H zG5Wy7X)t*SP|?6CHDiSQIim}V=JI^dB3M$*AViyc5vfYTYz^aO#$-xILGj7^XCl-) zx1g{mKN_U9Vg>yz-S#S>M|R%<&205TzC zm?^DufF(@VI_$p1-_*pd6Vxb##emk-#xz~LNv%W}WrC+EklG;X)%X(M7_D*k)R-3N z!4}VoFhnZ`k`tNFn&rqbwZ}=GU;n9(tZMWzjWMfdmGWLJ`y4T*m?Q!}x16&Ux8$&L z0(x*p6l1W`809CFwEu}%2#o~-BeO2<5xaaKtek-gS;~^g13LwlEI2LB{9W7@4Fcwl zbPT#hPrJ{K@A}k($kTww&Td`Pw)E(-9+&n;AkyH$uY|?uUjZ`B2;WhYbz8~NI#7X! zd!HGG^9%kvUy!-ZQL7yo&KLHs>+#V%z=sojAVEBz;do^9dFzvR7$S1_xBMI;Dks7_ zpJmCA{S^ideqooAeqF&X%vmC~pNYeWTe2sPcW;4spuKSPvMGDO#U2%%tC8X(oRkX|07v`@UZLIcUt_Pd7(I&!{ z%%R&hgyG_XQUZfi78?E5RQkykPZJ#4I{oWCuElUHD5ayY(a+1p0sl1VJK5Izesj)(G9HX?wTZJ#I2WyajogXx>t#@{SuT06~`un#l>pbBr`p>p- zy0xX6)*0r9>9hBeYK0zv$Rn`IL;rNY_;Je}&iG~N(0(-Ya{t{k;E~zMgA&%Xy!7({AiF z?0USz)b=kCD=M+7&g7Tq^-q~Pb*gz@bEAV0HdLl%!Om1Q>!b$gW3(Bu1vsW%SRm9Dp{CC{R}4y5QoF*Ik!in}n;AMz%vu_Y_6fe~q4Esw*28E$+eF6C0Ux>dS_tc31GmRcHW>cZVAY|SafU3H z%2vq5uc>dxebHTp?A!sbl4zVG&yAmVd`5Pzm1^&K=>GmKo3Ct3i3^m+6N{*jh(^tD z39&m4R7^<|Wo*@ELx*6+6X*@1Z~r*4Z7~{k=4gwLab+V8DQ$9tshc&1St+=)?bFsi zH7^}%sn@^fXK60uB?{J)T9HOCzCXP9D+TN@$PS(>`$G6`gV^#_kSXonKNtmH8bQ0B za?d(V_2!-0dL+Y-b1SuR}zU|VR=6Dy6PB@>E zNyT{i-`mJYB~0YcW=MOi)NTx;vOa_vltO#bkcW6yQh=Rps+;pJe1eSvmR0tgK|!8c&)*ssq3_h z8y0l&ELc7Ok5B>kfCJ4%0Ho1=L9sS`q3SB9@-z)YqZ;Ja`eIiL8L-8r+xSuD@P}L2 z3+4VTq9fqA*Z;;bnBfD#uqm`jy$3{FGv(qpcgj8F4_t!prrWFGK}qZ{lhl`IbE8n5 z%rSa&YHN4|I3spWh}{bgjpOl~D^suNSg$uHet|lp94a7ZZrY^$6w%kBd9!TsHoUg~ z>I>i(X9Ds(2v2y>-}wF|0CFtrUP|t*?_?m<53=b%@66n{+YO)Llse-@qotj-&F?U1 z$g)0*nkMzGCCmj#{n4eA!?z|m)veNwBbxBAAX z+!c_BJ|aRH(glgo6gq1ZbmI|?{e+@HR)pQxCGX!X~LEw;3GoEpMqcV9G-=*(GJqD3mfqKYS%! zyj5V(zca|84$PN805=zl0!4D%r+}l7hy-w5fUokecdE*NW$uaZTY z%ZP{X;uO351ETDhnZ<$BsJD1QpaTvYa*QL}TvBl*{Kp6ed=v+qb( zzQ6muz zIfCxlnvHo*K;w#?8h=Te@_4WH?X= zlEq?xKk)RQ;$%|EsysatzLG@=+swBgBG#gk2*G8zZS)8h1L@c%uT}k0iyVia^ zItGW&{u{(Qv(%5FAWee zI;DUxbIam(i?#1v+#FHU`ncI}I|=6m%_kT=L7U({ihci(eKTftm8V%vmlLkb+YbwT z6C^Fh0ZcH`$N!M3e{uv`JCr2;wP67)iZu9mQABv{68%H%99Y@>3U&C-=a){m+;6Ej z4@vb9es0O;R=c4A`Huta!0cL@knSjHc>PgqI-!PA8rZ8@aK6_qgrv%q+5(^Zt^0W= zPOFK>!A1me9bNG`3`0^GGiBL|MZ~(+Kwx|7v7DHD&;9StPB=8C}vp(xK2{+I*w^S!ZNXZ*!Pa?|>o`gO|wX8JU~;ihr%N#Z(fpWKL7Y!MCf1hMwD zKONJk_ID}wTz=aRcPPdD;r{tuc?6B9`zj0LCAWqagl}W`HE|J=@MV)vSr<-khV9K` zmM_0mYD|BW@_`HF-O{1sh(z}FngWL-*xCYFi+X3`ptt7dK;yqos8Y|~V5}!OA@dMg z!Mw+J-QiaqZCA?o67xE1#J?Hn@D98a@rQ!_al2M5^=fM5_4`kd!%EljqDM4y1~L4F z9b{TnDHgLoMdAnj6&+9I)ISb+p52(LYm9g3!{b|u56^je!kb1Yn8kNmcYNB#kzWi@$AQh| z&`v~E$E7;e)>luQ&h%2Ok(hhwR_@IFx{OaS~cVQJy~2Fg;iyj&@Q`462;uDDq%U5{oz-6EfWQ7lg(l zBwI1IwHepsJYV%T+|bG9dXxi$c^!4@;u^yTvuV=hA%o(jTd<^s*jt{@`7t&>9730D z2hS#$1Zz;XDr;Q638Dz7R=9Ve4s~q~1~yrEb4xkPc)%$*E61f(i9{WjEa?r(y&~>z?9+g#+!e9=bQdRt1ByE8xGk zUq#;#cWS?x^Hw}cAcaz2MLH4Y0mdKlFTX&fINHB}l}7zgFZhb9e}-Fv`v|;q=oi5X zbue(HLH~ItzKLkV`|3WYun1M?#B|ojflm=~0Y*z$Vj-vg4!mZih(tXt!1Hl-4__C1 zr9JQ~U=8?O2Iuj!T*HKdslTbwY8CV4d3cOW>D;|#vy4||t+(S^iRKH2hMKW7yI7ba zkm|{a4_&c^L>>ob@7Cr`niSBm4EuP8x+JUyG8|;geEj+|aZ?sqa$Kv9d7N9SV2^4- z*+v7|oe*ueScN&ld0HL5>k4zUmWn92>vjVQ3%z}rk6$Z->Z3uo+%n=u-lx4*5yNXX zc?}v!+Qy?mLEHGoQQwf2D!d7a>fV>KNgGIP*npi53n306g?|p_;4IXLHPDuOBWo&F zx&27_XE!ifMh&$jvlF{vZ*H%bP;BFf0Z2HOGrSD4Fi4#jC?XC}3}4Mx^DqaMdpymc8Szv17NHe_=B)5c7-0gNL-svAE!* zNwOKN!)3LGt=2fjKZmWi9Nr~}9c6Dl+t&F@_$t~5 zoNSh2_dOa#>tCx=cl%6 z<`0fHnc3r5X@LocW7F;Nfj$1gmDnDhLv6z=jV5f~Z_!?(j0E?_arXXoG` zQZf&%Vw8AgxNZxypR+V?!lOoqPbONH-sz4Dn& zMN3VR^J`1@_f%EZo_{s@M)dg6-Se#L?vU7{83$E#c^On}q7l2QWp<7RGd)sr!b=Xr z(fY)4MDIbSq6KJ*{BC2^b;l&SgKN7!9^iiOSR$@i_m%H!Y!2oTumep;e{dYLj~4{~ zu_z>e%&fU>^?>zz@RWg#%Zd!Kqq__K3geGH*&jLD8d_Y$#HmJh9(HW0o! zo6Dorm<3zbALA|z>g$}3*s?iFb|}T=-8L%?ze3wr>^>noHHb#Lw zp-?iGf3Knd?6i8#0qnN{5_az3bb*flVq24&kAU+ZAqK?vb(K~oLri&H-8Ccn=;~4% z5+Xc#<&C_?TA;Ko&J-#%6Qxq8v0c>b!53aoidaM6LfkmtSh{mhgn_L%7z!gcX1;J( z4jx~sBg{;H6K&Dh9-44PQ}arhSZc-IMc*euSrOt^XLB&bg=_YUyL$$lKNP`+4L^YZ zVZ;AYk%FsO>GJ<^0p4>_ zx|oJ6_e(tOYa1M%KuD1+@6Mm0E~7K+mFv5c-*Q^FP#B(?h&IxN0&a?%7o+;IGV3Jw z)tCC4gSfUp4&q6#9TeL?dS3dk%Szq-hZ6RZBAxb#-7R~l@$VT~TjK7bs=wn)rrEDr zEtt8ALC?E|c?K!&7Dp_n2{lPiRd&@iq202cK^7Vxwkf^a83_}X32PpCv}eKbnV7n& z8StkKAdi)HeuD>GvWf}ldlI>1LDKs3{?tOFiRG%AMFUztxcFzdo<1hc#Pan|ybx^q zEUc+k`mpg-r-k#V-u-xg<+8wTvTxni>oJQj{>35ksX6M_zb$!p7LSB9+>pWzv(jb(Cb(-*HctnwK={gxucE&5PtZA9 zX!>~Q=%{AM3KGX4++dd-{1+*&0alFS1 z`i2+aNV3(~?5}xJDV(6e=2Dq8ucF2z5P?4qrdkf)l7}pd9wyxNDyTpw)+V%-l_`*< zN0#q?g-uXR;s?F+b`N+CiK}K?kYn*+vt*`q)=61#M$K=^*XF~MY`l0<#_gJJG!E8f z;%##CZOlxgzsmNy^X*9^!=Y^(8lsr+Ov@cfEoa^RPX|ELF)*I}`r+bMr&8kQksGzH zMx$i>;7X(Wkh1z-lCkNEdu*o746ViiWRC87&@cnurs1gR5>UJWp%3JJw_B(GBuJ?- zG-J;ey-jOTsrv$zM~xmmUCR(_lBKnbOsuRjVS7mH|746I z$MSnnud7mcke>eT7Y(cWMIJU{bsSvF>ip-4yDP9S=rAv9M=3?Yrn!n;vDjngQ&ScX zKGQNgyo`M%n4>iTSMZ)h2(e9cZhF*H&|j2Xm%aNh*UGxvgM4V^YVeaBmY0|x7JJ6<{s~E z`rgC`tAflc1-x7V<`Hihf%Yn`=vzUCftYe?X%$EwNAvst#4K^hk)kDV%PU`+ZjM2mv}P!Nm& z8+J3>MPI6eOH*vaH|A1{$?zzzMqaYl9}yD83-13W^xS-H4^HNMVk_brTlp>wOxEb3 z_}c}Mud6@#-N%!YJZ~131mX7PL9`@j*G7o#wDq%zD#%{#x6c&8cy!@cDCS?Ed2mpn zRjhz*ua50bZ4-Hl1%m$R?v4L(Kc{x~DcA^?j%~dZ@6d9v z(PCQ3z_0xrbRV^i9lNnNp1a&{v;7MSW#xtIp8TlG3(G2Y_YPHB{KQ=co~pGxFuu~f z7#sa=X;{vwaixF~wm#}Uq=w_jzmpIT+q?bGoB;gJN#aGFiNzViWwk&L4e<9AN7Nt@i*(vH+5>2IrI+!O#HZhE z&FB(%hLfJEt_0(=34xqxzq|A1A}%A-SDCzOlsF^??@k0R^t#h*2Y)$YHW5HX2(q!Mk-6 z1Vwh#>2Lmi6#%s$U=0;xpSeKo3kD(A|1onbR*Qh_qsOY7NOkZvY23w-**&?n21xJw zc3k8>*pr%{{&ptzzkwR|d!1>Jf87Wc;tNDK+v`L(17HD?OJ=74#QUuQj(ByfWv4R= zrP>g}rG;wp7CCsi2R?xAbc&v9yRbQifSnWKHxJf@4%Sy#4`!%YAZToMd$X_T07Eoy z4WBDOy;%plHU*x*N-kmAMdpwoRUB-t;&Z|1SNP%-CEPS+N{91D+OeK z59%3#2)r(3LKFxy-q>k4RU5IWEc#$V0@C>g3OCZ6FW%cbe}e6-!dVdeId_ixur^^NUiwcHO(>p-g<)PC zVu61w8h>l#^)?<5=cP;DG9Rad(66&YWW41FF;OjB7d#zTi~ug_vhO1PV&&EL1@FLK zx4xMhSmbdguonY8g9O`y@%RH=ZlEl4{t%0DW%yKr-h)Uoo&n@BD*Bv{%;%bms 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 K<#NF(Ecw5Of!pl> literal 0 HcmV?d00001 diff --git a/resources/icon.ico b/resources/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..77fa48056e4ef440b6d053096720702224d4d3ce GIT binary patch literal 150525 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 literal 0 HcmV?d00001 diff --git a/resources/icon.png b/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a5ce783ae931be07cdcc69ed94ecfce44fc2f3 GIT binary patch literal 191413 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 literal 0 HcmV?d00001 diff --git a/src/application/canvas/excellons.rs b/src/application/canvas/excellons.rs index 025f068..6cdfc58 100644 --- a/src/application/canvas/excellons.rs +++ b/src/application/canvas/excellons.rs @@ -1,15 +1,8 @@ -use eframe::{ - egui::{Color32, Ui}, - epaint::CircleShape, -}; use egui_plot::PlotUi; -use crate::{ - application::Application, - geometry::{elements::Element, DrawableRaw}, -}; +use crate::{application::Application, geometry::elements::Element}; -use super::{draw_floating_area_on_canvas, draw_on_plot_canvas, CanvasColour, Drawer, PlotDrawer}; +use super::{draw_on_plot_canvas, CanvasColour, PlotDrawer}; pub fn draw_excellons_(ui: &mut PlotUi, app: &mut Application) { for (file_name, (_, excellon)) in &app.excellons { @@ -18,7 +11,6 @@ pub fn draw_excellons_(ui: &mut PlotUi, app: &mut Application) { for circle in excellon.holes.iter() { draw_on_plot_canvas( ui, - app, PlotDrawer::Drawable(( &Element::Circle(circle.to_owned()), CanvasColour::Excellon, @@ -28,29 +20,3 @@ pub fn draw_excellons_(ui: &mut PlotUi, app: &mut Application) { } } } - -pub fn draw_excellons(ui: &mut Ui, app: &mut Application) { - for (file_name, (ex_name, excellon)) in &app.excellons { - let selected = &app.selection == file_name; - - for (i, circle) in excellon.holes.iter().enumerate() { - draw_floating_area_on_canvas( - ui, - app, - circle.canvas_pos(), - ("ExcellonArea", ex_name, i), - Drawer::Closure(&|ui| { - ui.painter().add(CircleShape::filled( - circle.position.invert_y().into(), - circle.diameter as f32 / 2., - if selected { - Color32::BROWN.gamma_multiply(0.5) - } else { - Color32::BROWN - }, - )); - }), - ); - } - } -} diff --git a/src/application/canvas/geometries.rs b/src/application/canvas/geometries.rs index 6f2d580..2b56d1b 100644 --- a/src/application/canvas/geometries.rs +++ b/src/application/canvas/geometries.rs @@ -1,7 +1,4 @@ -use eframe::{ - egui::{Color32, Pos2, Ui}, - epaint::{CircleShape, PathShape, PathStroke}, -}; +use eframe::egui::Pos2; use egui_plot::{Line, PlotPoint, PlotPoints, PlotUi}; use crate::{ @@ -9,7 +6,7 @@ use crate::{ geometry::{elements::circle::Circle, DrawableRaw}, }; -use super::{draw_floating_area_on_canvas, draw_on_plot_canvas, CanvasColour, Drawer, PlotDrawer}; +use super::{draw_on_plot_canvas, CanvasColour, PlotDrawer}; pub fn draw_geometries_(ui: &mut PlotUi, app: &mut Application) { for (file_name, geo) in &app.outlines { @@ -19,7 +16,6 @@ pub fn draw_geometries_(ui: &mut PlotUi, app: &mut Application) { for path in geo.paths().iter() { draw_on_plot_canvas( ui, - app, PlotDrawer::Closure(&|ui| { // draw outline path let mut points = path @@ -40,7 +36,7 @@ pub fn draw_geometries_(ui: &mut PlotUi, app: &mut Application) { points.push(points[1]); let line = Line::new(PlotPoints::from(points)) .width(width) - .color(CanvasColour::Outline.to_colour32(selected)); + .color(CanvasColour::Outline.as_colour32(selected)); ui.line(line) }), @@ -51,99 +47,11 @@ pub fn draw_geometries_(ui: &mut PlotUi, app: &mut Application) { for point in geo.points().iter() { draw_on_plot_canvas( ui, - app, PlotDrawer::Closure(&|ui| { let circle = Circle::new(*point, geo.stroke.into(), None); circle.draw_egui_plot(ui, CanvasColour::Outline, selected); }), ); - // draw_floating_area_on_canvas( - // ui, - // app, - // point, - // ("GeometryAreaPoint", name, i), - // Drawer::Closure(&|ui| { - // // draw point shape - // ui.painter().add(CircleShape::filled( - // point.invert_y().into(), - // geo.stroke, - // if selected { - // Color32::DARK_BLUE.gamma_multiply(0.5) - // } else { - // Color32::DARK_BLUE - // }, - // )); - // }), - // ); - } - } - - // for circle in excellon.holes.iter() { - // draw_on_plot_canvas( - // ui, - // app, - // PlotDrawer::Drawable(( - // &Element::Circle(circle.to_owned()), - // CanvasColour::Excellon, - // selected, - // )), - // ); - // } -} - -pub fn draw_geometries(ui: &mut Ui, app: &mut Application) { - for (name, geo) in &app.outlines { - let selected = &app.selection == name; - - // draw outline path - for (i, path) in geo.paths().iter().enumerate() { - draw_floating_area_on_canvas( - ui, - app, - { - let origin = path.iter().next().unwrap(); - Pos2::new(origin.x() as f32, origin.y() as f32) - }, - ("GeometryAreaOutline", name, i), - Drawer::Closure(&|ui| { - // draw outline path - ui.painter().add(PathShape::closed_line( - path.iter() - .map(|v| Pos2::new(v.x() as f32, -v.y() as f32)) - .collect::>(), - PathStroke::new( - geo.stroke, - if selected { - Color32::DARK_BLUE.gamma_multiply(0.5) - } else { - Color32::DARK_BLUE - }, - ), - )); - }), - ); - } - - // draw point shapes - for (i, point) in geo.points().iter().enumerate() { - draw_floating_area_on_canvas( - ui, - app, - point, - ("GeometryAreaPoint", name, i), - Drawer::Closure(&|ui| { - // draw point shape - ui.painter().add(CircleShape::filled( - point.invert_y().into(), - geo.stroke, - if selected { - Color32::DARK_BLUE.gamma_multiply(0.5) - } else { - Color32::DARK_BLUE - }, - )); - }), - ); } } } diff --git a/src/application/canvas/gerbers.rs b/src/application/canvas/gerbers.rs index a73691e..7572c2e 100644 --- a/src/application/canvas/gerbers.rs +++ b/src/application/canvas/gerbers.rs @@ -1,12 +1,11 @@ -use eframe::{ - egui::{Color32, Pos2, Ui}, - epaint::{PathShape, PathStroke}, -}; use egui_plot::{Line, PlotPoints, PlotUi}; -use crate::{application::Application, geometry::DrawableRaw}; +use crate::{ + application::Application, + geometry::{ClipperPaths, DrawableRaw}, +}; -use super::{draw_floating_area_on_canvas, draw_on_plot_canvas, CanvasColour, Drawer, PlotDrawer}; +use super::{draw_on_plot_canvas, CanvasColour, PlotDrawer}; pub fn draw_gerbers_(ui: &mut PlotUi, app: &mut Application) { for (file_name, (_, geo)) in &app.gerbers { @@ -16,7 +15,6 @@ pub fn draw_gerbers_(ui: &mut PlotUi, app: &mut Application) { for geometry in geo.apertures.iter() { draw_on_plot_canvas( ui, - app, PlotDrawer::Drawable((geometry, CanvasColour::Copper, selected)), ); } @@ -25,13 +23,25 @@ pub fn draw_gerbers_(ui: &mut PlotUi, app: &mut Application) { for line in geo.paths.iter() { draw_on_plot_canvas( ui, - app, PlotDrawer::Closure(&|ui| line.draw_egui_plot(ui, CanvasColour::Copper, selected)), ); } - // draw outline union path - for path in geo.outline_union.iter() { + // draw conductor outlines + for net in &geo.united_nets.conductors { + draw_paths_outline(ui, &net.outline, selected); + } + + // draw isolated aperture outlines + for element in &geo.united_nets.isolated_apertures { + draw_paths_outline(ui, &element.to_paths(), selected); + } + } +} + +fn draw_paths_outline(ui: &mut PlotUi, paths: &ClipperPaths, selected: bool) { + for path in paths.iter() { + if !path.is_empty() { let mut points = path .iter() .map(|p| [p.x(), p.y()]) @@ -39,63 +49,9 @@ pub fn draw_gerbers_(ui: &mut PlotUi, app: &mut Application) { points.push(points[0]); let line = Line::new(PlotPoints::from(points)) - .color(CanvasColour::CopperOutline.to_colour32(selected)); + .color(CanvasColour::CopperOutline.as_colour32(selected)); ui.line(line) } } } - -pub fn draw_gerbers(ui: &mut Ui, app: &mut Application) { - for (file_name, (name, geo)) in &app.gerbers { - let selected = &app.selection == file_name; - - for (i, geometry) in geo.apertures.iter().enumerate() { - draw_floating_area_on_canvas( - ui, - app, - geometry.canvas_pos(), - ("GerberArea", name, i), - Drawer::Drawable((geometry, selected)), - ); - } - - for (i, line) in geo.paths.iter().enumerate() { - draw_floating_area_on_canvas( - ui, - app, - line.canvas_pos(), - ("LinePath", name, i), - Drawer::Closure(&|ui| line.draw_egui(ui, selected)), - ); - } - - // draw union path - for (i, path) in geo.outline_union.iter().enumerate() { - draw_floating_area_on_canvas( - ui, - app, - { - let origin = path.iter().next().unwrap(); - Pos2::new(origin.x() as f32, origin.y() as f32) - }, - ("UnionOutline", name, i), - Drawer::Closure(&|ui| { - ui.painter().add(PathShape::closed_line( - path.iter() - .map(|v| Pos2::new(v.x() as f32, -v.y() as f32)) - .collect::>(), - PathStroke::new( - 0.1_f32, - if selected { - Color32::LIGHT_RED - } else { - Color32::BLACK - }, - ), - )); - }), - ); - } - } -} diff --git a/src/application/canvas/live_position.rs b/src/application/canvas/live_position.rs deleted file mode 100644 index 0e62b3e..0000000 --- a/src/application/canvas/live_position.rs +++ /dev/null @@ -1,63 +0,0 @@ -use eframe::egui::{self, Color32, Pos2, TextWrapMode, Ui, Vec2}; - -use crate::application::Application; - -pub fn draw_live_position(ui: &mut Ui, app: &mut Application) { - if let Some(cursor) = cursor_canvas_position(app, ui) { - let _id = egui::Area::new(app.canvas.0.with("cursor_position_box")) - .fixed_pos(app.canvas.1.min) - // .order(egui::Order::Middle) - .default_size(Vec2::new(80., 80.)) - .show(ui.ctx(), |ui| { - // let painter = ui.painter(); - // painter.add(RectShape::filled(Rect::from_min_size(rect.min, Vec2::new(80., 80.)), Rounding::ZERO, Color32::LIGHT_BLUE)); - egui::Frame::default() - .rounding(egui::Rounding::same(4.0)) - .inner_margin(egui::Margin::same(8.0)) - .stroke(ui.ctx().style().visuals.window_stroke) - .fill(Color32::from_rgba_premultiplied(0xAD, 0xD8, 0xE6, 200)) - .show(ui, |ui| { - ui.style_mut().wrap_mode = Some(TextWrapMode::Extend); - let cursor_position = app.transform.inverse() * cursor; // + rect.min.to_vec2() - app.canvas_size.min; - let cursor_position2 = app.test_transform.inverse() * cursor; // + rect.min.to_vec2() - app.canvas_size.min; - - ui.label(format!( - "x: {} {}", - (-app.transform.translation.x + cursor.x) / app.transform.scaling, - app.variables.units - )); - ui.label(format!( - "y: {} {}", - // cursor.y / app.transform.scaling + app.test_transform.translation.y, - (-app.transform.translation.y + cursor.y) / app.transform.scaling, - app.variables.units - )); - ui.label(format!( - "cursor: {:?} {}", - cursor_position, app.variables.units - )); - ui.label(format!( - "cursor2: {:?} {}", - cursor_position2, app.variables.units - )); - - ui.label(format!("{:?} - {:?}", app.transform, app.test_transform)) - }); - }); - } -} - -fn cursor_canvas_position(app: &Application, ui: &mut Ui) -> Option { - let pointer_pos = ui.ctx().input(|i| i.pointer.hover_pos()); - - if let Some(cursor) = pointer_pos { - let pos = cursor - app.canvas.1.min; - match (pos.x, pos.y) { - (x, y) if x > 0. && y > 0. => Some(pos.to_pos2()), - (_, _) => None, - } - } else { - None - } - // pointer_pos.map(|pos| (pos - app.canvas_size.min).to_pos2()) -} diff --git a/src/application/canvas/mod.rs b/src/application/canvas/mod.rs index 054a817..61cd8d1 100644 --- a/src/application/canvas/mod.rs +++ b/src/application/canvas/mod.rs @@ -1,19 +1,12 @@ pub mod excellons; pub mod geometries; pub mod gerbers; -mod live_position; -use std::hash::Hash; - -use eframe::{ - egui::{self, Color32, Pos2, Rounding, Stroke, Ui}, - epaint::RectShape, -}; +use eframe::egui::{Color32, Ui}; use egui_plot::PlotUi; -use excellons::{draw_excellons, draw_excellons_}; -use geometries::{draw_geometries, draw_geometries_}; -use gerbers::{draw_gerbers, draw_gerbers_}; -use live_position::draw_live_position; +use excellons::draw_excellons_; +use geometries::draw_geometries_; +use gerbers::draw_gerbers_; use crate::geometry::elements::Element; @@ -28,6 +21,7 @@ const EXCELLON_COLOR_SELECTED: Color32 = Color32::from_rgba_premultiplied(65, 42 const OUTLINE_COLOR: Color32 = Color32::DARK_BLUE; const OUTLINE_COLOR_SELECTED: Color32 = Color32::from_rgba_premultiplied(0, 0, 139, 128); +#[derive(Debug, Clone, Copy)] pub enum CanvasColour { Copper, CopperOutline, @@ -36,7 +30,7 @@ pub enum CanvasColour { } impl CanvasColour { - pub fn to_colour32(&self, selected: bool) -> Color32 { + pub fn as_colour32(&self, selected: bool) -> Color32 { match (self, selected) { (CanvasColour::Copper, true) => COPPER_COLOR_SELECTED, (CanvasColour::Copper, false) => COPPER_COLOR, @@ -59,48 +53,6 @@ pub fn draw_canvas(ui: &mut Ui, app: &mut Application) { draw_excellons_(plot_ui, app); draw_geometries_(plot_ui, app); }); - - // draw_live_position(ui, app); - - // ui.painter().add(RectShape::stroke( - // app.canvas.1, - // Rounding::same(0.), - // Stroke::new(0.2, Color32::BLACK), - // )); - - // draw_gerbers(ui, app); - // draw_excellons(ui, app); - // draw_geometries(ui, app); -} - -pub enum Drawer<'a> { - Drawable((&'a Element, bool)), - Closure(&'a dyn Fn(&mut Ui)), -} - -fn draw_floating_area_on_canvas( - ui: &mut Ui, - app: &Application, - pos: impl Into, - name: impl Hash, - drawer: Drawer, -) { - let window_layer = ui.layer_id(); - let id = egui::Area::new(app.canvas.0.with(name)) - .current_pos(pos) - // .order(egui::Order::Middle) - .show(ui.ctx(), |ui| { - ui.set_clip_rect(app.test_transform.inverse() * app.canvas.1); - match drawer { - Drawer::Drawable((t, selected)) => t.draw_egui(ui, selected), - Drawer::Closure(fun) => fun(ui), - } - }) - .response - .layer_id; - - ui.ctx().set_transform_layer(id, app.test_transform); - ui.ctx().set_sublayer(window_layer, id); } pub enum PlotDrawer<'a> { @@ -108,7 +60,7 @@ pub enum PlotDrawer<'a> { Closure(&'a dyn Fn(&mut PlotUi)), } -fn draw_on_plot_canvas(ui: &mut PlotUi, app: &Application, drawer: PlotDrawer) { +fn draw_on_plot_canvas(ui: &mut PlotUi, drawer: PlotDrawer) { match drawer { PlotDrawer::Drawable((t, colour, selected)) => t.draw_egui_plot(ui, colour, selected), PlotDrawer::Closure(fun) => fun(ui), diff --git a/src/application/egui.rs b/src/application/egui.rs index 5771a68..566d2e2 100644 --- a/src/application/egui.rs +++ b/src/application/egui.rs @@ -1,7 +1,4 @@ -use eframe::{ - egui::{self, Vec2}, - emath::TSTransform, -}; +use eframe::egui; use super::{ canvas::draw_canvas, @@ -9,230 +6,17 @@ use super::{ Application, }; -impl eframe::App for Application { +impl<'a> eframe::App for Application<'a> { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { - // let window_size = ctx.screen_rect().size(); - draw_header(ctx, self); draw_sidebar(ctx, self); egui::CentralPanel::default().show(ctx, |ui| { - // ui.horizontal(|ui| { - // let name_label = ui.label("Your name: "); - // ui.text_edit_singleline(&mut self.name) - // .labelled_by(name_label.id); - // }); - // ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age")); - // if ui.button("Increment").clicked() { - // self.age += 1; - // } - // ui.label(format!("Hello '{}', age {}", self.name, self.age)); - - // // ui.image(egui::include_image!( - // // "../../../crates/egui/assets/ferris.png" - // // )); - - let pointer_pos = ui.ctx().input(|i| i.pointer.hover_pos()); - draw_action_panel(ui, self); - // ui.label( - // "Pan, zoom in, and zoom out with scrolling (see the plot demo for more instructions). \ - // Double click on the background to reset.", - // ); - // ui.vertical_centered(|ui| { - // ui.add(crate::egui_github_link_file!()); - // }); - // if let Some(pos) = pointer_pos { - // ui.label(format!("Translation: {:?}", self.transform.translation)); - // ui.label(format!("ScLING: {}", self.transform.scaling)); - // ui.label(format!("Canvas start: {}", self.canvas.1.min)); - // } ui.separator(); - // ui.allocate_ui(ui.available_size(), |ui| { - // egui::TopBottomPanel::bottom("BottomCanvas") - // .show_separator_line(false) - // .exact_height(15.) - // .show_inside(ui, |ui| {}); - // egui::SidePanel::left("LeftCanvas") - // .show_separator_line(false) - // .exact_width(15.) - // .show_inside(ui, |ui| {}); - - // egui::CentralPanel::default() - // .frame(egui::Frame::none().inner_margin(0.).outer_margin(0.)) - // .show_inside(ui, |ui| { - // let sin: egui_plot::PlotPoints = (0..1000) - // .map(|i| { - // let x = i as f64 * 0.01; - // [x, x.sin()] - // }) - // .collect(); - // let line = egui_plot::Line::new(sin); - // egui_plot::Plot::new("my_plot") - // .view_aspect(2.0) - // .data_aspect(1.0) - // .show(ui, |plot_ui| { - // super::canvas::gerbers::draw_gerbers_(plot_ui, self); - // super::canvas::excellons::draw_excellons_(plot_ui, self); - // super::canvas::geometries::draw_geometries_(plot_ui, self) - // // plot_ui.line(line); - // // for (_, (name, geo)) in &self.gerbers { - // // let path = geo.outline_union.iter().map(|path| { - // // let mut points = path - // // .iter() - // // .map(|p| [p.x(), p.y()]) - // // .collect::>(); - - // // points.push(points[0]); - - // // ( - // // egui_plot::Line::new(egui_plot::PlotPoints::from( - // // points.clone(), - // // )) - // // .color(egui::Color32::DARK_BLUE), - // // egui_plot::Polygon::new(egui_plot::PlotPoints::from( - // // points, - // // )) - // // .fill_color(egui::Color32::LIGHT_GREEN), - // // ) - // // }); - - // // for line in path { - // // plot_ui.line(line.0); - // // plot_ui.polygon(line.1); - // // } - - // // let circle_points: egui_plot::PlotPoints = (0..=400) - // // .map(|i| { - // // let t = egui::remap( - // // i as f64, - // // 0.0..=(400 as f64), - // // 0.0..=std::f64::consts::TAU, - // // ); - // // let r = 10.; - // // [r * t.cos() + 20. as f64, r * t.sin() + 20. as f64] - // // }) - // // .collect(); - - // // let poly = egui_plot::Polygon::new( - // // egui_plot::PlotPoints::from(circle_points), - // // ) - // // .fill_color(egui::Color32::LIGHT_GREEN); - // // plot_ui.polygon(poly); - // // } - // }); - - // // let (id, rect) = ui.allocate_space(ui.available_size()); - // // let response = ui.interact(rect, id, egui::Sense::click_and_drag()); - // // self.canvas = (id, rect); - // // // Allow dragging the background as well. - // // if response.dragged() { - // // self.transform.translation += response.drag_delta(); - // // } - - // // // Plot-like reset - // // if response.double_clicked() { - // // self.transform = TSTransform::default(); - // // self.transform = TSTransform::from_translation(Vec2::new( - // // rect.width() / 2., - // // rect.height() / 2., - // // )); - // // } - - // // let transform = - // // TSTransform::from_translation(ui.min_rect().left_top().to_vec2()) - // // * self.transform; - - // // if let Some(pointer) = ui.ctx().input(|i| i.pointer.hover_pos()) { - // // // Note: doesn't catch zooming / panning if a button in this PanZoom container is hovered. - // // if response.hovered() { - // // let pointer_in_layer = transform.inverse() * pointer; - // // let zoom_delta = ui.ctx().input(|i| i.zoom_delta()); - // // let pan_delta = ui.ctx().input(|i| i.smooth_scroll_delta); - - // // // Zoom in on pointer: - // // self.transform = self.transform - // // * TSTransform::from_translation(pointer_in_layer.to_vec2()) - // // * TSTransform::from_scaling(zoom_delta) - // // * TSTransform::from_translation(-pointer_in_layer.to_vec2()); - - // // // Pan: - // // self.transform = - // // TSTransform::from_translation(pan_delta) * self.transform; - // // } - // // } - - // // self.test_transform = transform; - // }) - // }); - - // let (id, rect) = ui.allocate_space(Vec2::new(ui.available_width(), 15.)); - // ui.painter().add(RectShape::stroke( - // rect, - // Rounding::same(0.), - // egui::Stroke::new(0.2, Color32::BLACK), - // )); - - // let (id, rect) = ui.allocate_space(Vec2::new(10., ui.available_height())); - // ui.painter().add(RectShape::stroke( - // rect, - // Rounding::same(0.), - // egui::Stroke::new(0.2, Color32::BLACK), - // )); - - // let (id, rect) = ui.allocate_space(ui.available_size()); - // let response = ui.interact(rect, id, egui::Sense::click_and_drag()); - // self.canvas = (id, rect); - // // Allow dragging the background as well. - // if response.dragged() { - // self.transform.translation += response.drag_delta(); - // } - - // // Plot-like reset - // if response.double_clicked() { - // self.transform = TSTransform::default(); - // self.transform = - // TSTransform::from_translation(Vec2::new(rect.width() / 2., rect.height() / 2.)); - // } - - // let transform = - // TSTransform::from_translation(ui.min_rect().left_top().to_vec2()) * self.transform; - - // if let Some(pointer) = ui.ctx().input(|i| i.pointer.hover_pos()) { - // // Note: doesn't catch zooming / panning if a button in this PanZoom container is hovered. - // if response.hovered() { - // let pointer_in_layer = transform.inverse() * pointer; - // let zoom_delta = ui.ctx().input(|i| i.zoom_delta()); - // let pan_delta = ui.ctx().input(|i| i.smooth_scroll_delta); - - // // Zoom in on pointer: - // self.transform = self.transform - // * TSTransform::from_translation(pointer_in_layer.to_vec2()) - // * TSTransform::from_scaling(zoom_delta) - // * TSTransform::from_translation(-pointer_in_layer.to_vec2()); - - // // Pan: - // self.transform = TSTransform::from_translation(pan_delta) * self.transform; - // } - // } - - // self.test_transform = transform; - - // let p = ui.painter_at(rect); - // p.add(RectShape::filled( - // Rect::from_center_size(rect.center(), Vec2::new(rect.width(), 1.)), - // Rounding::ZERO, - // Color32::LIGHT_RED, - // )); - // p.add(RectShape::filled( - // Rect::from_center_size(rect.center(), Vec2::new(1., rect.height())), - // Rounding::ZERO, - // Color32::LIGHT_RED, - // )); - draw_canvas(ui, self); }); } diff --git a/src/application/errors.rs b/src/application/errors.rs new file mode 100644 index 0000000..b1cc8b5 --- /dev/null +++ b/src/application/errors.rs @@ -0,0 +1,20 @@ +use std::fmt; + +use error_stack::{Context, Report}; + +#[derive(Debug)] +pub struct FileError; + +impl FileError { + pub fn new(text: &str) -> Report { + Report::new(Self).attach_printable(text.to_string()) + } +} + +impl fmt::Display for FileError { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.write_str("Error opening file") + } +} + +impl Context for FileError {} diff --git a/src/application/mod.rs b/src/application/mod.rs index a8af8ad..9d49072 100644 --- a/src/application/mod.rs +++ b/src/application/mod.rs @@ -1,30 +1,24 @@ mod canvas; mod egui; +mod errors; pub mod panels; use std::collections::HashMap; -use eframe::{ - egui::{Id, Pos2, Rect, Vec2}, - emath::TSTransform, -}; - use crate::{ excellon::drills::Drills, geometry::{Geometry, Unit}, outline_geometry::OutlineGeometry, + resources::ResourceLoader, }; pub use canvas::CanvasColour; -pub struct Application { +pub struct Application<'a> { + resources: ResourceLoader<'a>, gerbers: HashMap, outlines: HashMap, excellons: HashMap, - // geometry: Geometry, - transform: TSTransform, - test_transform: TSTransform, - canvas: (Id, Rect), selection: String, variables: Variables, } @@ -35,19 +29,13 @@ pub struct Variables { units: Unit, } -impl Application { +impl<'a> Application<'a> { pub fn new() -> Self { Self { + resources: ResourceLoader::new(), gerbers: HashMap::new(), outlines: HashMap::new(), excellons: HashMap::new(), - // geometry, - transform: TSTransform::default(), - test_transform: TSTransform::default(), - canvas: ( - Id::new("0"), - Rect::from_center_size(Pos2::new(0., 0.), Vec2::default()), - ), selection: "".into(), variables: Variables::default(), } diff --git a/src/application/panels/actions/excellon_actions.rs b/src/application/panels/actions/excellon_actions.rs index 46763a7..0cc1d58 100644 --- a/src/application/panels/actions/excellon_actions.rs +++ b/src/application/panels/actions/excellon_actions.rs @@ -1,51 +1,51 @@ +use std::collections::hash_map::Entry; + use eframe::egui::Ui; -use crate::{ - application::Application, - geometry::{ClipperPath, ClipperPaths, DrawableRaw}, - outline_geometry::OutlineGeometry, -}; +use crate::{application::Application, geometry::ClipperPath, outline_geometry::OutlineGeometry}; use super::HOLE_MARK_DIAMETER; pub fn show_excellon_actions(ui: &mut Ui, app: &mut Application) { - if let Some((name, drill)) = app.excellons.get(&app.selection) { - if ui.button("Generate cut out").clicked() { - let path = drill - .holes - .iter() - .map(|hole| hole.outline.clone()) - .collect::>() - .into(); - app.outlines.insert( - format!("{name}-CutOut"), - OutlineGeometry::new_no_inflate( - &path, - 0.1, - app.variables.units, - name, - path.bounds(), - ), - ); - } - if ui.button("Generate hole mark").clicked() { - app.outlines.insert( - format!("{name}-HoleMark"), - OutlineGeometry::point_marker( - drill.holes.iter().map(|c| c.canvas_pos()).collect(), - HOLE_MARK_DIAMETER, - app.variables.units, - name, - ClipperPaths::from( - drill + if app.excellons.contains_key(&app.selection) { + match app.excellons.entry(app.selection.to_string()) { + Entry::Occupied(c) => { + let mut deletion_request = false; + let (name, drill) = c.get(); + if ui.button("Delete").clicked() { + deletion_request = true; + } + ui.horizontal(|ui| { + if ui.button("Generate cut out").clicked() { + let path = drill .holes .iter() .map(|hole| hole.outline.clone()) - .collect::>(), - ) - .bounds(), - ), - ); + .collect::>() + .into(); + app.outlines.insert( + format!("{name}-CutOut"), + OutlineGeometry::new_no_inflate(&path, 0.1, app.variables.units, name), + ); + } + if ui.button("Generate hole mark").clicked() { + app.outlines.insert( + format!("{name}-HoleMark"), + OutlineGeometry::drill_marker( + drill, + HOLE_MARK_DIAMETER, + app.variables.units, + name, + ), + ); + } + }); + + if deletion_request { + c.remove(); + } + } + Entry::Vacant(_) => unreachable!(), } } } diff --git a/src/application/panels/actions/geometry_actions.rs b/src/application/panels/actions/geometry_actions.rs index 0bed6d5..a150d7d 100644 --- a/src/application/panels/actions/geometry_actions.rs +++ b/src/application/panels/actions/geometry_actions.rs @@ -1,34 +1,59 @@ +use std::collections::hash_map::Entry; + use eframe::egui::{ComboBox, Ui}; use crate::{application::Application, export::svg::SVGConverter}; pub fn show_geometry_actions(ui: &mut Ui, app: &mut Application) { - if let Some(outline) = app.outlines.get_mut(&app.selection) { - ui.label("BoundingBox"); - ComboBox::from_label("Select one!") - .selected_text(format!("{:?}", outline.bounds_from)) - .show_ui(ui, |ui| { - for (key, (name, _)) in app.gerbers.iter() { - if ui - .selectable_value(&mut outline.bounds_from, name.into(), name) - .clicked() - { - if let Some((_, box_geo)) = app.gerbers.get(key) { - outline.bounding_box = box_geo.outline_union.bounds(); + if app.outlines.contains_key(&app.selection) { + match app.outlines.entry(app.selection.to_string()) { + Entry::Occupied(mut c) => { + let mut deletion_request = false; + let isolated_tracks = c.get_mut(); + + if ui.button("Delete").clicked() { + deletion_request = true; + } + + ui.horizontal(|ui| { + ui.label("BoundingBox"); + let id = ui.make_persistent_id("BoundingBoxSelection"); + ComboBox::new(id, "") + .selected_text(format!("{:?}", isolated_tracks.bounds_from)) + .show_ui(ui, |ui| { + for (key, (name, _)) in app.gerbers.iter() { + if ui + .selectable_value( + &mut isolated_tracks.bounds_from, + name.into(), + name, + ) + .clicked() + { + if let Some((_, box_geo)) = app.gerbers.get(key) { + isolated_tracks.bounding_box = box_geo.united_nets.bounds(); + } + } + } + }); + + if ui.button("Save as SVG").clicked() { + if let Some(path) = rfd::FileDialog::new() + .set_title("Save as SVG") + .set_file_name(app.selection.to_string()) + .add_filter("SVG", &["svg", "SVG"]) + .save_file() + { + SVGConverter::export(isolated_tracks, &path); } } - } - }); + }); - if ui.button("Save as SVG").clicked() { - if let Some(path) = rfd::FileDialog::new() - .set_title("Save as SVG") - .set_file_name(app.selection.to_string()) - .add_filter("SVG", &["svg", "SVG"]) - .save_file() - { - SVGConverter::export(outline, &path); + if deletion_request { + c.remove(); + } } + Entry::Vacant(_) => unreachable!(), } } } diff --git a/src/application/panels/actions/gerber_actions.rs b/src/application/panels/actions/gerber_actions.rs index 2495bcf..21f3648 100644 --- a/src/application/panels/actions/gerber_actions.rs +++ b/src/application/panels/actions/gerber_actions.rs @@ -1,28 +1,45 @@ +use std::collections::hash_map::Entry; + use eframe::egui::{DragValue, Ui}; use crate::{application::Application, outline_geometry::OutlineGeometry}; pub fn show_gerber_actions(ui: &mut Ui, app: &mut Application) { - if let Some((name, geo)) = app.gerbers.get(&app.selection) { - ui.horizontal(|ui| { - ui.add( - DragValue::new(&mut app.variables.laser_line_width) - .range(0.1..=10.) - .suffix(geo.units), - ); + if app.gerbers.contains_key(&app.selection) { + match app.gerbers.entry(app.selection.to_string()) { + Entry::Occupied(c) => { + let mut deletion_request = false; + let (name, gerber) = c.get(); - if ui.button("Generate Isolation").clicked() { - app.outlines.insert( - format!("{name}-Iso"), - OutlineGeometry::new( - &geo.outline_union, - app.variables.laser_line_width, - geo.units, - name, - geo.outline_union.bounds(), - ), - ); + if ui.button("Delete").clicked() { + deletion_request = true; + } + ui.horizontal(|ui| { + ui.add( + DragValue::new(&mut app.variables.laser_line_width) + .range(0.1..=10.) + .speed(0.1) + .suffix(gerber.units), + ); + + if ui.button("Generate Isolation").clicked() { + app.outlines.insert( + format!("{name}-Iso"), + OutlineGeometry::new( + &gerber.united_nets, + app.variables.laser_line_width, + gerber.units, + name, + ), + ); + } + }); + + if deletion_request { + c.remove(); + } } - }); + Entry::Vacant(_) => unreachable!(), + } } } diff --git a/src/application/panels/header.rs b/src/application/panels/header.rs index 4242db8..010de46 100644 --- a/src/application/panels/header.rs +++ b/src/application/panels/header.rs @@ -1,62 +1,192 @@ -use std::{fs::File, io::BufReader}; +use std::{ + fs::File, + io::{BufReader, Read}, +}; use eframe::egui; +use error_stack::{Report, ResultExt}; +use tracing::error; use crate::{ - application::Application, - excellon::{drills::Drills, parse_excellon}, + application::{errors::FileError, Application}, + excellon::{doc::ExcellonDoc, drills::Drills, parse_excellon}, geometry::Geometry, - gerber::parse_gerber, + gerber::{doc::GerberDoc, parse_gerber}, }; +const GERBER_EXTENSIONS: &[&str] = &["GBR ", "gbr", "GB", "geb"]; +const EXCELLON_EXTENSIONS: &[&str] = &["DRL ", "drl"]; + pub fn draw_header(ctx: &egui::Context, app: &mut Application) { egui::TopBottomPanel::top("top_panel") .exact_height(40.) .show(ctx, |ui| { - ui.horizontal(|ui| { - if ui.button("Open Gerber").clicked() { - if let Some(paths) = rfd::FileDialog::new() - .add_filter("Gerber", &["GBR ", "gbr", "GB", "geb"]) - .pick_files() - { - // self.picked_path = Some(path.display().to_string()); - for path in paths { - // TODO remove all unwraps - if let Ok(file) = File::open(&path) { - let gerber = parse_gerber(BufReader::new(file)); - let name = path.file_name().unwrap().to_str().unwrap().to_string(); - app.gerbers.insert( - path.to_str().unwrap().into(), - (name, Geometry::from(gerber).to_unit(app.variables.units)), - ); - } else { - // TODO show error - }; + ui.horizontal_centered(|ui| { + if let Some(opened_files) = ui + .menu_button("📝 Open File", open_file_menu) + .inner + .flatten() + { + match opened_files { + Ok(files) => { + for (path, name, content) in files { + match content { + AppFileContent::Gerber(gerber) => { + app.gerbers.insert( + path, + ( + name, + Geometry::from(gerber) + .into_unit(app.variables.units), + ), + ); + } + AppFileContent::Excellon(excellon) => { + let drills: Drills = excellon.into(); + app.excellons.insert( + path, + (name, drills.into_unit(app.variables.units)), + ); + } + } + } + } + Err(e) => { + // TODO Show error + error!("{e:?}"); } } - } - - if ui.button("Open Excellon").clicked() { - if let Some(paths) = rfd::FileDialog::new() - .add_filter("Excellon", &["DRL ", "drl"]) - .pick_files() - { - for path in paths { - // TODO remove all unwraps - if let Ok(file) = File::open(&path) { - let excellon = parse_excellon(BufReader::new(file)).unwrap(); - let drills: Drills = excellon.into(); - let name = path.file_name().unwrap().to_str().unwrap().to_string(); - app.excellons.insert( - path.to_str().unwrap().into(), - (name, drills.to_unit(app.variables.units)), - ); - } else { - // TODO show error - }; - } - } - } + }; }) }); } + +type FileOpenResponse = Result, Report>; + +fn open_file_menu(ui: &mut egui::Ui) -> Option { + let mut response = None; + ui.set_max_width(200.0); // To make sure we wrap long text + + if ui.button("Gerber").clicked() { + response = Some(open_file(AppFileType::Gerber)); + ui.close_menu(); + } + + if ui.button("Excellon").clicked() { + ui.close_menu(); + response = Some(open_file(AppFileType::Excellon)); + } + + // ui.menu_button("SubMenu", |ui| { + // ui.menu_button("SubMenu", |ui| { + // if ui.button("Open…").clicked() { + // ui.close_menu(); + // } + // let _ = ui.button("Item"); + // }); + // ui.menu_button("SubMenu", |ui| { + // if ui.button("Open…").clicked() { + // ui.close_menu(); + // } + // let _ = ui.button("Item"); + // }); + // let _ = ui.button("Item"); + // if ui.button("Open…").clicked() { + // ui.close_menu(); + // } + // }); + // ui.menu_button("SubMenu", |ui| { + // let _ = ui.button("Item1"); + // let _ = ui.button("Item2"); + // let _ = ui.button("Item3"); + // let _ = ui.button("Item4"); + // if ui.button("Open…").clicked() { + // ui.close_menu(); + // } + // }); + // let _ = ui.button("Very long text for this item that should be wrapped"); + + response +} + +#[derive(Debug, Clone, Copy)] +enum AppFileType { + Gerber, + Excellon, +} + +impl std::fmt::Display for AppFileType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "{}", + match self { + AppFileType::Gerber => "Gerber", + AppFileType::Excellon => "Excellon", + } + ) + } +} + +impl AppFileType { + pub fn extensions(&self) -> &[&str] { + match self { + AppFileType::Gerber => GERBER_EXTENSIONS, + AppFileType::Excellon => EXCELLON_EXTENSIONS, + } + } +} + +pub enum AppFileContent { + Gerber(GerberDoc), + Excellon(ExcellonDoc), +} + +impl AppFileContent { + fn from_file( + file_type: AppFileType, + file: BufReader, + ) -> Result> { + Ok(match file_type { + AppFileType::Gerber => Self::Gerber(parse_gerber(file)), + AppFileType::Excellon => Self::Excellon( + parse_excellon(file) + .change_context(FileError) + .attach_printable("Could not parse Excellon file")?, + ), + }) + } +} + +fn open_file( + file_type: AppFileType, +) -> Result, Report> { + let mut result = Vec::new(); + if let Some(paths) = rfd::FileDialog::new() + .add_filter(file_type.to_string(), file_type.extensions()) + .pick_files() + { + for path in paths { + // get file content + let file = File::open(&path).change_context(FileError)?; + // parse file format + let content = AppFileContent::from_file(file_type, BufReader::new(file))?; + // get file path + let path_str = path + .to_str() + .ok_or(FileError::new("Could not get file path string"))?; + // get file name + let name_str = path + .file_name() + .ok_or(FileError::new( + "Could not determine file name from selection", + ))? + .to_str() + .ok_or(FileError::new("Could not convert OS String"))?; + + result.push((path_str.into(), name_str.into(), content)); + } + } + + Ok(result) +} diff --git a/src/application/panels/sidebar.rs b/src/application/panels/sidebar.rs index c271470..c4d6395 100644 --- a/src/application/panels/sidebar.rs +++ b/src/application/panels/sidebar.rs @@ -1,4 +1,4 @@ -use eframe::egui::{self, CollapsingHeader}; +use eframe::egui::{self, RichText}; use crate::{application::Application, APP_NAME}; @@ -6,30 +6,74 @@ pub fn draw_sidebar(ctx: &egui::Context, app: &mut Application) { egui::SidePanel::left("left_panel") .exact_width(230.) .show(ctx, |ui| { + ui.add_space(6.0); + ui.heading(APP_NAME); - CollapsingHeader::new("Gerber") - .default_open(true) - .show(ui, |ui| { + + ui.add_space(12.0); + + let id = ui.make_persistent_id("GerberContainer"); + egui::collapsing_header::CollapsingState::load_with_default_open(ui.ctx(), id, true) + .show_header(ui, |ui| { + ui.horizontal_centered(|ui| { + ui.image(app.resources.icons().gerber_file.clone()); + ui.label( + RichText::new("Gerber") + .extra_letter_spacing(1.2) + .size(17.) + .strong(), + ); + }); + }) + .body(|ui| { for (key, (name, _)) in app.gerbers.iter() { - ui.selectable_value(&mut app.selection, key.to_string(), name); + ui.selectable_value( + &mut app.selection, + key.to_string(), + RichText::new(name).size(11.), + ); } }); - CollapsingHeader::new("Excellon") - .default_open(true) - .show(ui, |ui| { + let id = ui.make_persistent_id("ExcellonContainer"); + egui::collapsing_header::CollapsingState::load_with_default_open(ui.ctx(), id, true) + .show_header(ui, |ui| { + ui.horizontal_centered(|ui| { + ui.image(app.resources.icons().excellon_file.clone()); + ui.label( + RichText::new("Excellon") + .extra_letter_spacing(1.2) + .size(17.) + .strong(), + ); + }); + }) + .body(|ui| { for (key, (name, _)) in app.excellons.iter() { ui.selectable_value(&mut app.selection, key.to_string(), name); } }); - CollapsingHeader::new("Geometry") - .default_open(true) - .show(ui, |ui| { + let id = ui.make_persistent_id("GeometryContainer"); + egui::collapsing_header::CollapsingState::load_with_default_open(ui.ctx(), id, true) + .show_header(ui, |ui| { + ui.horizontal_centered(|ui| { + ui.image(app.resources.icons().geometry_file.clone()); + ui.label( + RichText::new("Geometry") + .extra_letter_spacing(1.2) + .size(17.) + .strong(), + ); + }); + }) + .body(|ui| { for (key, _) in app.outlines.iter() { ui.selectable_value(&mut app.selection, key.to_string(), key); } }); + + // allocate rest of the container let (id, rect) = ui.allocate_space(ui.available_size()); let response = ui.interact(rect, id, egui::Sense::click_and_drag()); if response.clicked() { diff --git a/src/excellon/drills.rs b/src/excellon/drills.rs index 88beca8..2343d39 100644 --- a/src/excellon/drills.rs +++ b/src/excellon/drills.rs @@ -41,13 +41,13 @@ impl From for Drills { } impl Drills { - pub fn to_unit(&self, unit: Unit) -> Self { + pub fn into_unit(self, unit: Unit) -> Self { Self { units: unit, holes: self .holes - .iter() - .map(|hole| hole.to_unit(self.units, unit)) + .into_iter() + .map(|hole| hole.into_unit(self.units, unit)) .collect(), } } diff --git a/src/excellon/mod.rs b/src/excellon/mod.rs index 88c4306..0e9ff60 100644 --- a/src/excellon/mod.rs +++ b/src/excellon/mod.rs @@ -1,4 +1,4 @@ -mod doc; +pub mod doc; pub mod drills; mod errors; @@ -271,8 +271,6 @@ mod tests { let file = File::open("./FirstPCB-PTH.drl").unwrap(); let _reader = BufReader::new(file); - let excellon = parse_excellon(BufReader::new(excellon.as_bytes())); - // let excellon = parse_excellon(reader); - println!("{:#?}", excellon); + let _excellon = parse_excellon(BufReader::new(excellon.as_bytes())); } } diff --git a/src/export/dxf.rs b/src/export/dxf.rs index b5987f3..c5d8ce6 100644 --- a/src/export/dxf.rs +++ b/src/export/dxf.rs @@ -8,9 +8,9 @@ use crate::geometry::Geometry; pub struct DXFConverter; impl DXFConverter { - pub fn export(geometry: &Geometry, file: &str) { + pub fn export(_geometry: &Geometry, _file: &str) { let mut drawing = Drawing::new(); - let added_entity_ref = drawing.add_entity(Entity::new(EntityType::Line(Line::default()))); + let _added_entity_ref = drawing.add_entity(Entity::new(EntityType::Line(Line::default()))); // `added_entity_ref` is a reference to the newly added entity drawing.save_file("./file.dxf").unwrap(); } diff --git a/src/export/svg.rs b/src/export/svg.rs index 4048020..29b0989 100644 --- a/src/export/svg.rs +++ b/src/export/svg.rs @@ -43,8 +43,8 @@ impl SVGConverter { let points = geo.points().into_iter().map(|p| { Circle::new() .set("r", HOLE_MARK_DIAMETER) - .set("cx", p.x) - .set("cy", p.invert_y().y) + .set("cx", p.x()) + .set("cy", p.invert_y().y()) .set("fill", "black") }); diff --git a/src/geometry/elements/circle.rs b/src/geometry/elements/circle.rs index bd4b99e..e9c737b 100644 --- a/src/geometry/elements/circle.rs +++ b/src/geometry/elements/circle.rs @@ -1,20 +1,21 @@ use std::f64::consts::{PI, TAU}; -use eframe::{ - egui::{remap, Stroke, Ui}, - epaint::CircleShape, -}; +use eframe::egui::{remap, Stroke}; use egui_plot::{PlotPoints, PlotUi, Polygon}; +use gerber_types::CirclePrimitive; use crate::{ application::CanvasColour, geometry::{ClipperPath, ClipperPaths}, }; -use super::super::{ - helpers::{create_circular_path, CircleSegment}, - point::{convert_to_unit, Point}, - DrawableRaw, Unit, +use super::{ + super::{ + helpers::{create_circular_path, CircleSegment}, + point::{convert_to_unit, Point}, + DrawableRaw, Unit, + }, + macro_decimal_to_f64, }; #[derive(Debug, Clone)] @@ -29,7 +30,7 @@ impl Circle { pub fn new(position: impl Into, diameter: f64, hole_diameter: Option) -> Self { let position = position.into(); Self { - position: position, + position, diameter, hole_diameter, outline: create_circular_path(&position, diameter, CircleSegment::Full).into(), @@ -39,8 +40,19 @@ impl Circle { Self::new(position, aperture.diameter, aperture.hole_diameter) } - pub fn to_unit(&self, origin: Unit, to: Unit) -> Self { - let position = self.position.to_unit(origin, to); + pub fn from_macro(ap_macro: &CirclePrimitive, variables: &[f64], target: Point) -> Self { + Self::new( + Point::new( + macro_decimal_to_f64(&ap_macro.center.0, variables) + target.x(), + macro_decimal_to_f64(&ap_macro.center.1, variables) + target.y(), + ), + macro_decimal_to_f64(&ap_macro.diameter, variables), + None, + ) + } + + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { + let position = self.position.into_unit(origin, to); let diameter = convert_to_unit(self.diameter, origin, to); Self { position, @@ -51,17 +63,6 @@ impl Circle { } fn draw_circle(&self, ui: &mut PlotUi, colour: CanvasColour, selected: bool) { - // let n = 512; - // let circle_points: PlotPoints = (0..=n) - // .map(|i| { - // let t = remap(i as f64, 0.0..=(n as f64), 0.0..=TAU); - // let r = self.diameter / 2.; - // [ - // r * t.cos() + self.position.x as f64, - // r * t.sin() + self.position.y as f64, - // ] - // }) - // .collect(); let circle_points = PlotPoints::from(Self::circle_segment_points( self.position, self.diameter, @@ -71,7 +72,7 @@ impl Circle { ui.polygon( Polygon::new(circle_points) - .fill_color(colour.to_colour32(selected)) + .fill_color(colour.as_colour32(selected)) .stroke(Stroke::NONE), ); } @@ -84,16 +85,15 @@ impl Circle { ) -> Vec<[f64; 2]> { let segment_width = segment_width.clamp(0.0, 1.0); let n = (512. * segment_width) as i32; - let circle_points = (0..=n) + + (0..=n) .map(|i| { let t = remap(i as f64, 0.0..=(n as f64), 0.0..=TAU * segment_width) + rotation * (PI / 180.); let r = diameter / 2.; - [r * t.cos() + position.x, r * t.sin() + position.y] + [r * t.cos() + position.x(), r * t.sin() + position.y()] }) - .collect(); - - circle_points + .collect() } } @@ -101,31 +101,7 @@ impl DrawableRaw for Circle { fn canvas_pos(&self) -> Point { self.position } - - fn draw_egui(&self, ui: &mut Ui, selected: bool) { - ui.painter().add(CircleShape::filled( - self.position.invert_y().into(), - self.diameter as f32 / 2., - CanvasColour::Copper.to_colour32(selected), - )); - } - fn draw_egui_plot(&self, ui: &mut egui_plot::PlotUi, colour: CanvasColour, selected: bool) { - // let circle_points: Vec<[f64; 2]> = - // create_circular_path(&self.position, self.diameter, CircleSegment::Full) - // .iter() - // .map(|(x, y)| [*x, *y]) - // .collect(); - - // let polygon = Polygon::new(PlotPoints::from(circle_points)) - // .fill_color(if selected { - // COPPER_COLOR_SELECTED - // } else { - // COPPER_COLOR - // }) - // .stroke(Stroke::new(0., Color32::TRANSPARENT)); - - // ui.polygon(polygon); self.draw_circle(ui, colour, selected); } diff --git a/src/geometry/elements/composite.rs b/src/geometry/elements/composite.rs new file mode 100644 index 0000000..e1e16c3 --- /dev/null +++ b/src/geometry/elements/composite.rs @@ -0,0 +1,117 @@ +use std::collections::HashMap; + +use clipper2::PointInPolygonResult; +use itertools::Itertools; + +use crate::{ + application::CanvasColour, + geometry::{point::Point, union::union_function, ClipperPath, ClipperPaths, DrawableRaw, Unit}, +}; + +use super::Element; + +#[derive(Debug, Clone)] +pub struct Composite { + elements: Vec, + outline: ClipperPaths, +} + +impl Composite { + pub fn new() -> Self { + Self { + elements: Vec::new(), + outline: ClipperPaths::new(vec![]), + } + } + + pub fn add(&mut self, element: Element) { + self.elements.push(element); + } + + pub fn finalize(&mut self) { + let mut intersection_map: HashMap> = HashMap::new(); + + for part in self.elements.iter().enumerate().combinations(2) { + let (index1, element1) = part[0]; + let (index2, element2) = part[1]; + + // check if element1 and element2 intersect + if element1 + .outline() + .iter() + .any(|p| element2.outline().is_point_inside(*p) != PointInPolygonResult::IsOutside) + { + // add intersection result for both indices + let entry1 = intersection_map.entry(index1).or_default(); + entry1.push(index2); + let entry2 = intersection_map.entry(index2).or_default(); + entry2.push(index1); + } + } + + // go through all aperture components + for i in 0..intersection_map.len() { + // remove component from map + if let Some(mut intersections) = intersection_map.remove(&i) { + // take outline of element as base + let mut geo = self.elements[i].to_paths(); + + // union with intersecting aperture components until done + while let Some(other) = intersections.pop() { + // union with intersecting aperture component + let intersecting_element = &self.elements[other]; + if let Some(union) = union_function(&geo, &intersecting_element.to_paths()) { + geo = union; + } + + // get intersections of united aperture component and add them if not already in own + if let Some(new_intersections) = intersection_map.remove(&other) { + for o in new_intersections { + // add to original line if not self and not already inside + if o != i // ensure to not intersect with itself + && !intersections.contains(&o) // do not add if already in intersection list + && intersection_map.contains_key(&o) + // check if intersection was already performed + { + intersections.push(o); + } + } + } + } + self.outline.push(geo); + } + } + } + + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { + Self { + elements: self + .elements + .into_iter() + .map(|el| el.into_unit(origin, to)) + .collect(), + outline: self.outline, + } + } +} + +impl DrawableRaw for Composite { + fn canvas_pos(&self) -> Point { + // self.position + todo!() + } + + fn draw_egui_plot(&self, ui: &mut egui_plot::PlotUi, colour: CanvasColour, selected: bool) { + for element in &self.elements { + element.draw_egui_plot(ui, colour, selected); + } + } + + fn to_paths(&self) -> ClipperPaths { + self.outline.clone() + } + + fn outline(&self) -> ClipperPath { + self.outline.first().unwrap().clone() + } +} diff --git a/src/geometry/elements/linepath.rs b/src/geometry/elements/linepath.rs index 36e8fac..6fc5369 100644 --- a/src/geometry/elements/linepath.rs +++ b/src/geometry/elements/linepath.rs @@ -1,14 +1,12 @@ use std::f64::consts::PI; -use eframe::{ - egui::{Pos2, Stroke, Ui}, - epaint::{CircleShape, PathShape, PathStroke}, -}; +use clipper2::PointInPolygonResult; +use eframe::egui::Stroke; use egui_plot::{PlotPoints, Polygon}; use crate::{ application::CanvasColour, - geometry::{helpers::semi_circle, ClipperPath, ClipperPaths}, + geometry::{helpers::semi_circle, ClipperPath, ClipperPaths, ClipperPoint}, }; use super::super::{ @@ -47,11 +45,16 @@ impl LinePath { pub fn finalize(&mut self, stroke_width: f64) { self.diameter = stroke_width; self.outline = self.create_outline(); + println!("Line with diameter: {stroke_width}"); } - pub fn to_unit(&self, origin: Unit, to: Unit) -> Self { + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { let mut converted = Self { - points: self.points.iter().map(|p| p.to_unit(origin, to)).collect(), + points: self + .points + .iter() + .map(|p| p.into_unit(origin, to)) + .collect(), diameter: convert_to_unit(self.diameter, origin, to), outline: ClipperPaths::new(vec![]), }; @@ -60,6 +63,14 @@ impl LinePath { converted } + pub fn outline_includes_points(&self, points: &[Point]) -> bool { + self.outline.iter().any(|path| { + points.iter().any(|point| { + path.is_point_inside(ClipperPoint::from(point)) != PointInPolygonResult::IsOutside + }) + }) + } + fn create_outline(&self) -> ClipperPaths { let mut paths: Vec = Vec::new(); @@ -91,33 +102,12 @@ impl DrawableRaw for &LinePath { points.push(points[0]); let poly = Polygon::new(PlotPoints::from(points)) - .fill_color(colour.to_colour32(selected)) + .fill_color(colour.as_colour32(selected)) .stroke(Stroke::NONE); ui.polygon(poly); } } - fn draw_egui(&self, ui: &mut Ui, selected: bool) { - ui.painter().add(PathShape::line( - self.points - .iter() - .map(|v| (*v).invert_y().into()) - .collect::>(), - PathStroke::new( - self.diameter as f32, - CanvasColour::Copper.to_colour32(selected), - ), - )); - - for point in &self.points { - ui.painter().add(CircleShape::filled( - point.invert_y().into(), - self.diameter as f32 / 2., - CanvasColour::Copper.to_colour32(selected), - )); - } - } - fn to_paths(&self) -> ClipperPaths { self.outline.clone() } @@ -132,7 +122,7 @@ fn create_outline_between_points(point1: Point, point2: Point, width: f64) -> Ve let normalized = line_vec.normalize(); let angle = - (normalized.x).acos() * (180. / PI) * if normalized.y < 0. { -1. } else { 1. } + 90.; + (normalized.x()).acos() * (180. / PI) * if normalized.y() < 0. { -1. } else { 1. } + 90.; let mut outline: Vec<(f64, f64)> = Vec::new(); diff --git a/src/geometry/elements/mod.rs b/src/geometry/elements/mod.rs index 858228d..07a71a1 100644 --- a/src/geometry/elements/mod.rs +++ b/src/geometry/elements/mod.rs @@ -1,79 +1,126 @@ use circle::Circle; -use eframe::egui::Ui; +use composite::Composite; use egui_plot::PlotUi; +use evalexpr::eval_number; +use gerber_types::MacroDecimal; +use lazy_regex::regex; use linepath::LinePath; use obround::Obround; +use polygon::Polygon; use rectangle::Rectangle; +use tracing::error; use crate::application::CanvasColour; use super::{point::Point, ClipperPath, ClipperPaths, DrawableRaw, Unit}; pub mod circle; +pub mod composite; pub mod linepath; pub mod obround; +pub mod polygon; pub mod rectangle; -#[derive(Debug)] +#[derive(Debug, Clone)] pub enum Element { Circle(Circle), + Composite(Composite), Rectangle(Rectangle), - Line(LinePath), + _Line(LinePath), Obround(Obround), + Polygon(Polygon), } impl Element { pub fn draw_egui_plot(&self, ui: &mut PlotUi, colour: CanvasColour, selected: bool) { match self { Element::Circle(c) => c.draw_egui_plot(ui, colour, selected), + Element::Composite(co) => co.draw_egui_plot(ui, colour, selected), Element::Rectangle(r) => r.draw_egui_plot(ui, colour, selected), - Element::Line(l) => l.draw_egui_plot(ui, colour, selected), + Element::_Line(l) => l.draw_egui_plot(ui, colour, selected), Element::Obround(o) => o.draw_egui_plot(ui, colour, selected), - } - } - - pub fn draw_egui(&self, ui: &mut Ui, selected: bool) { - match self { - Element::Circle(c) => c.draw_egui(ui, selected), - Element::Rectangle(r) => r.draw_egui(ui, selected), - Element::Line(l) => l.draw_egui(ui, selected), - Element::Obround(o) => o.draw_egui(ui, selected), + Element::Polygon(p) => p.draw_egui_plot(ui, colour, selected), } } pub fn canvas_pos(&self) -> Point { match self { Element::Circle(c) => c.canvas_pos(), + Element::Composite(c) => c.canvas_pos(), Element::Rectangle(r) => r.canvas_pos(), - Element::Line(l) => l.canvas_pos(), + Element::_Line(l) => l.canvas_pos(), Element::Obround(o) => o.canvas_pos(), + Element::Polygon(p) => p.canvas_pos(), } } pub fn to_paths(&self) -> ClipperPaths { match self { Element::Circle(c) => c.to_paths(), + Element::Composite(c) => c.to_paths(), Element::Rectangle(r) => r.to_paths(), - Element::Line(l) => l.to_paths(), + Element::_Line(l) => l.to_paths(), Element::Obround(o) => o.to_paths(), + Element::Polygon(p) => p.to_paths(), } } pub fn outline(&self) -> ClipperPath { match self { Element::Circle(c) => c.outline(), + Element::Composite(c) => c.outline(), Element::Rectangle(r) => r.outline(), - Element::Line(l) => l.outline(), + Element::_Line(l) => l.outline(), Element::Obround(o) => o.outline(), + Element::Polygon(p) => p.outline(), } } - pub fn to_unit(&self, origin: Unit, to: Unit) -> Self { + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { match self { - Element::Circle(c) => Element::Circle(c.to_unit(origin, to)), - Element::Rectangle(r) => Element::Rectangle(r.to_unit(origin, to)), - Element::Line(l) => Element::Line(l.to_unit(origin, to)), - Element::Obround(o) => Element::Obround(o.to_unit(origin, to)), + Element::Circle(c) => Element::Circle(c.into_unit(origin, to)), + Element::Composite(c) => Element::Composite(c.into_unit(origin, to)), + Element::Rectangle(r) => Element::Rectangle(r.into_unit(origin, to)), + Element::_Line(l) => Element::_Line(l.into_unit(origin, to)), + Element::Obround(o) => Element::Obround(o.into_unit(origin, to)), + Element::Polygon(p) => Element::Polygon(p.into_unit(origin, to)), + } + } +} + +pub fn macro_decimal_to_f64(macro_decimal: &MacroDecimal, variables: &[f64]) -> f64 { + let re_units = regex!(r#"(\$\d+)"#); + + match macro_decimal { + MacroDecimal::Value(v) => *v, + MacroDecimal::Variable(v) => *variables.get(*v as usize).unwrap_or(&0.), + MacroDecimal::Expression(ex) => { + // search for variables (eg. $1) + if let Some(captures) = re_units.captures(ex) { + // copy expression + let mut expr = ex.clone(); + // go through all found variable names + for c in captures.iter().skip(1).flatten() { + // get variable name + let matched = c.as_str(); + // create index out of variable + let index = matched.replace('$', "").parse::().unwrap(); + // replace variable name with value + expr = expr.replace( + matched, + &variables.get(index - 1).unwrap_or(&0.).to_string(), + ); + } + match eval_number(&expr) { + Ok(res) => res, + Err(e) => { + error!("{e:?}"); + 0. + } + } + } else { + 0. + } } } } diff --git a/src/geometry/elements/obround.rs b/src/geometry/elements/obround.rs index 8a75b2a..5fd917a 100644 --- a/src/geometry/elements/obround.rs +++ b/src/geometry/elements/obround.rs @@ -1,7 +1,4 @@ -use eframe::{ - egui::{Rect, Rounding, Stroke, Ui, Vec2}, - epaint::RectShape, -}; +use eframe::egui::Stroke; use egui_plot::{PlotPoints, Polygon}; use crate::{ @@ -9,24 +6,21 @@ use crate::{ geometry::{ClipperPath, ClipperPaths}, }; -use super::rectangle::Rectangle; -use super::{ - super::{ - helpers::{create_circular_path, semi_circle, CircleSegment}, - point::{convert_to_unit, Point}, - DrawableRaw, Unit, - }, - circle::Circle, +use super::super::{ + helpers::{create_circular_path, semi_circle, CircleSegment}, + point::{convert_to_unit, Point}, + DrawableRaw, Unit, }; +use super::rectangle::Rectangle; -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct Obround { position: Point, x: f64, y: f64, - rounding: f64, + _rounding: f64, outline: ClipperPath, - rectangle: Rectangle, + _rectangle: Rectangle, hole_diameter: Option, } @@ -40,12 +34,27 @@ impl Obround { // check if obround is round to x or y if x < y { // round on y axis - path.append(&mut semi_circle(position - Point::new(0., y / 4.), x, 180.)); - path.append(&mut semi_circle(position + Point::new(0., y / 4.), x, 0.)); + path.append(&mut semi_circle( + position - Point::new(0., y / 2. - x / 2.), + x, + 180., + )); + path.append(&mut semi_circle( + position + Point::new(0., y / 2. - x / 2.), + x, + 0., + )); } else { - // TODO round on x axis -> check for correctness!!!!!!! - path.append(&mut semi_circle(position - Point::new(0., x / 4.), y, 270.)); - path.append(&mut semi_circle(position + Point::new(0., x / 4.), y, 90.)); + path.append(&mut semi_circle( + position + Point::new(x / 2. - y / 2., 0.), + y, + 270., + )); + path.append(&mut semi_circle( + position - Point::new(x / 2. - y / 2., 0.), + y, + 90., + )); } path @@ -53,12 +62,12 @@ impl Obround { Self { position, - x: x, - y: y, - rounding: diameter, + x, + y, + _rounding: diameter, outline: outline.into(), - rectangle: Rectangle::new(position, x, y, hole_diameter), - hole_diameter: hole_diameter, + _rectangle: Rectangle::new(position, x, y, hole_diameter), + hole_diameter, } } @@ -66,9 +75,9 @@ impl Obround { Self::new(position, aperture.x, aperture.y, aperture.hole_diameter) } - pub fn to_unit(&self, origin: Unit, to: Unit) -> Self { + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { Self::new( - self.position.to_unit(origin, to), + self.position.into_unit(origin, to), convert_to_unit(self.x, origin, to), convert_to_unit(self.y, origin, to), self.hole_diameter.map(|d| convert_to_unit(d, origin, to)), @@ -86,22 +95,11 @@ impl DrawableRaw for Obround { points.push(points[0]); let poly = Polygon::new(PlotPoints::from(points)) - .fill_color(colour.to_colour32(selected)) + .fill_color(colour.as_colour32(selected)) .stroke(Stroke::NONE); ui.polygon(poly); } - fn draw_egui(&self, ui: &mut Ui, selected: bool) { - ui.painter().add(RectShape::filled( - Rect::from_center_size( - self.position.invert_y().into(), - Vec2::new(self.rectangle.width as f32, self.rectangle.height as f32), - ), - Rounding::same(self.rounding as f32 / 2.), - CanvasColour::Copper.to_colour32(selected), - )); - } - fn to_paths(&self) -> ClipperPaths { ClipperPaths::new(vec![self.outline.clone()]) } diff --git a/src/geometry/elements/polygon.rs b/src/geometry/elements/polygon.rs new file mode 100644 index 0000000..e3dc3da --- /dev/null +++ b/src/geometry/elements/polygon.rs @@ -0,0 +1,72 @@ +use eframe::egui::Stroke; +use gerber_types::OutlinePrimitive; + +use crate::{ + application::CanvasColour, + geometry::{ + elements::macro_decimal_to_f64, point::Point, ClipperPath, ClipperPaths, DrawableRaw, Unit, + }, +}; + +#[derive(Debug, Clone)] +pub struct Polygon { + points: Vec, +} + +impl Polygon { + pub fn new(points: &[Point]) -> Self { + Self { + points: points.to_vec(), + } + } + + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { + Self { + points: self + .points + .iter() + .map(|p| p.into_unit(origin, to)) + .collect(), + } + } + + pub fn from_macro(ap_macro: &OutlinePrimitive, variables: &[f64], target: Point) -> Self { + Self { + points: ap_macro + .points + .iter() + .map(|(x, y)| { + Point::new( + macro_decimal_to_f64(x, variables), + macro_decimal_to_f64(y, variables), + ) + target + }) + .collect(), + } + } +} + +impl DrawableRaw for Polygon { + fn canvas_pos(&self) -> Point { + // self.position + todo!() + } + + fn draw_egui_plot(&self, ui: &mut egui_plot::PlotUi, colour: CanvasColour, selected: bool) { + let points: Vec<[f64; 2]> = self.points.iter().map(|p| [p.x(), p.y()]).collect(); + + ui.polygon( + egui_plot::Polygon::new(points) + .fill_color(colour.as_colour32(selected)) + .stroke(Stroke::NONE), + ); + } + + fn to_paths(&self) -> ClipperPaths { + ClipperPaths::new(vec![self.outline()]) + } + + fn outline(&self) -> ClipperPath { + ClipperPath::new(self.points.iter().map(|p| p.into()).collect()) + } +} diff --git a/src/geometry/elements/rectangle.rs b/src/geometry/elements/rectangle.rs index 9555947..f70851e 100644 --- a/src/geometry/elements/rectangle.rs +++ b/src/geometry/elements/rectangle.rs @@ -1,20 +1,21 @@ -use eframe::{ - egui::{Rect, Rounding, Stroke, Ui, Vec2}, - epaint::RectShape, -}; +use eframe::egui::Stroke; use egui_plot::{PlotPoints, Polygon}; +use gerber_types::{CenterLinePrimitive, VectorLinePrimitive}; use crate::{ application::CanvasColour, geometry::{ClipperPath, ClipperPaths}, }; -use super::super::{ - point::{convert_to_unit, Point}, - DrawableRaw, Unit, +use super::{ + super::{ + point::{convert_to_unit, Point}, + DrawableRaw, Unit, + }, + macro_decimal_to_f64, }; -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct Rectangle { position: Point, pub width: f64, @@ -34,11 +35,26 @@ impl Rectangle { height: aperture.y, hole_diameter: aperture.hole_diameter, outline: vec![ - (position.x - aperture.x / 2., position.y - aperture.y / 2.), - (position.x - aperture.x / 2., position.y + aperture.y / 2.), - (position.x + aperture.x / 2., position.y + aperture.y / 2.), - (position.x + aperture.x / 2., position.y - aperture.y / 2.), - (position.x - aperture.x / 2., position.y - aperture.y / 2.), + ( + position.x() - aperture.x / 2., + position.y() - aperture.y / 2., + ), + ( + position.x() - aperture.x / 2., + position.y() + aperture.y / 2., + ), + ( + position.x() + aperture.x / 2., + position.y() + aperture.y / 2., + ), + ( + position.x() + aperture.x / 2., + position.y() - aperture.y / 2., + ), + ( + position.x() - aperture.x / 2., + position.y() - aperture.y / 2., + ), ] .into(), } @@ -51,18 +67,66 @@ impl Rectangle { height, hole_diameter, outline: vec![ - (position.x - width / 2., position.y - height / 2.), - (position.x - width / 2., position.y + height / 2.), - (position.x + width / 2., position.y + height / 2.), - (position.x + width / 2., position.y - height / 2.), + (position.x() - width / 2., position.y() - height / 2.), + (position.x() - width / 2., position.y() + height / 2.), + (position.x() + width / 2., position.y() + height / 2.), + (position.x() + width / 2., position.y() - height / 2.), ] .into(), } } - pub fn to_unit(&self, origin: Unit, to: Unit) -> Self { + pub fn from_macro_vector_line( + ap_macro: &VectorLinePrimitive, + variables: &[f64], + target: Point, + ) -> Self { + // TODO angle + let x_start = macro_decimal_to_f64(&ap_macro.start.0, variables); + let x_end = macro_decimal_to_f64(&ap_macro.end.0, variables); + let y_start = macro_decimal_to_f64(&ap_macro.start.1, variables); + let y_end = macro_decimal_to_f64(&ap_macro.end.1, variables); + + let height = if x_end - x_start == 0. { + macro_decimal_to_f64(&ap_macro.width, variables) + } else { + x_end - x_start + }; + let width = if y_end - y_start == 0. { + macro_decimal_to_f64(&ap_macro.width, variables) + } else { + y_end - y_start + }; + Self::new( - self.position.to_unit(origin, to), + Point::new(x_start, y_start) + + (Point::new(x_end, y_end) - Point::new(x_start, y_start)).div(2.) + + target, + height, + width, + None, + ) + } + pub fn from_macro_center_line( + ap_macro: &CenterLinePrimitive, + variables: &[f64], + target: Point, + ) -> Self { + // TODO angle + Self::new( + Point::new( + macro_decimal_to_f64(&ap_macro.center.0, variables), + macro_decimal_to_f64(&ap_macro.center.1, variables), + ) + target, + macro_decimal_to_f64(&ap_macro.dimensions.0, variables), + macro_decimal_to_f64(&ap_macro.dimensions.1, variables), + None, + ) + } + + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { + Self::new( + self.position.into_unit(origin, to), convert_to_unit(self.width, origin, to), convert_to_unit(self.height, origin, to), self.hole_diameter.map(|d| convert_to_unit(d, origin, to)), @@ -73,8 +137,8 @@ impl Rectangle { impl DrawableRaw for Rectangle { fn canvas_pos(&self) -> Point { self.position - .shift_x(self.position.x / 2.) - .shift_y(self.position.y / 2.) + .shift_x(self.position.x() / 2.) + .shift_y(self.position.y() / 2.) } fn draw_egui_plot(&self, ui: &mut egui_plot::PlotUi, colour: CanvasColour, selected: bool) { @@ -82,22 +146,11 @@ impl DrawableRaw for Rectangle { points.push(points[0]); let poly = Polygon::new(PlotPoints::from(points)) - .fill_color(colour.to_colour32(selected)) + .fill_color(colour.as_colour32(selected)) .stroke(Stroke::NONE); ui.polygon(poly); } - fn draw_egui(&self, ui: &mut Ui, selected: bool) { - ui.painter().add(RectShape::filled( - Rect::from_center_size( - self.position.invert_y().into(), - Vec2::new(self.width as f32, self.height as f32), - ), - Rounding::ZERO, - CanvasColour::Copper.to_colour32(selected), - )); - } - fn to_paths(&self) -> ClipperPaths { ClipperPaths::new(vec![self.outline.clone()]) } diff --git a/src/geometry/gerber.rs b/src/geometry/gerber.rs index a5b815d..7a78620 100644 --- a/src/geometry/gerber.rs +++ b/src/geometry/gerber.rs @@ -1,9 +1,10 @@ -use clipper2::Paths; +use std::collections::HashMap; + use gerber_types::{ - Aperture, Command, Coordinates, DCode, FunctionCode, GCode, InterpolationMode, MCode, - Operation, Unit, + Aperture, ApertureMacro, Command, Coordinates, DCode, FunctionCode, GCode, InterpolationMode, + MCode, MacroContent, Operation, Unit, }; -use tracing::{debug, error, info}; +use tracing::{error, info}; use crate::{ geometry::{ @@ -16,6 +17,7 @@ use crate::{ }; use super::{ + elements::{composite::Composite, polygon::Polygon}, union::{union_lines, union_with_apertures}, Geometry, }; @@ -32,7 +34,6 @@ impl From for Geometry { // create geometries by applying all gerber commands for command in gerber.commands { - println!("{command:?}"); match command { Command::FunctionCode(f) => { match f { @@ -83,6 +84,7 @@ impl From for Geometry { Operation::Flash(f) => { Self::add_geometry( &mut added_apertures, + &gerber.aperture_macros, ¤t_position, &f, &selected_aperture, @@ -93,6 +95,19 @@ impl From for Geometry { }, // select an aperture DCode::SelectAperture(ap) => { + // check if a aperture is selected and if it's circular + if let Some(Aperture::Circle(c)) = selected_aperture.as_ref() { + // check if a path is currently active + if !active_path.is_empty() { + // finish active path if there is an active one before selecting new aperture + active_path.finalize(c.diameter); + path_container.push(active_path); + + // create new active path + active_path = LinePath::new(); + } + } + selected_aperture = Some( gerber .apertures @@ -127,53 +142,13 @@ impl From for Geometry { } } - // create empty path set - let mut result = clipper2::Paths::new(vec![]); - // if path_container.len() > 1 { - // let mut clipper = path_container[1] - // .outline - // // .to_paths() - // .to_clipper_subject() - // .add_clip(path_container[2].outline.clone()); - // // .add_clip(path_container[3].outline.clone()) - // // .add_clip(path_container[4].outline.clone()); - - // // for clip in added_apertures.iter().skip(2) { - // // clipper = clipper.add_clip(clip.to_paths()); - // // } - - // // for line in path_container.iter().skip(2) { - // // clipper = clipper.add_clip(line.to_paths()) - // // } - - // result = clipper.union(clipper2::FillRule::default()).unwrap(); - - // result = result - // .to_clipper_subject() - // .add_clip(path_container[3].outline.clone()) - // .add_clip(path_container[4].outline.clone()) - // .union(clipper2::FillRule::default()) - // .unwrap(); - // } - - // let mut geo = Paths::new(vec![]); - // union all drawn lines into nets of conductors let conductor_net = union_lines(&path_container); + // union conductors with apertures + let united_nets = union_with_apertures(&added_apertures, conductor_net).unwrap(); - // for outline in &conductor_net { - // println!("{:?}", outline.included_points); - // geo.push(outline.outline.clone()); - // } - - // println!("Number of conductor net paths: {}", geo.len()); - - if let Some(geo) = union_with_apertures(&added_apertures, conductor_net) { - println!("Number of finalized net paths: {}", geo.len()); - result = geo; - } Self { - outline_union: result, + united_nets, apertures: added_apertures, paths: path_container, units: gerber.units.unwrap_or(Unit::Millimeters).into(), @@ -182,7 +157,7 @@ impl From for Geometry { } impl Geometry { - fn move_position(coord: &Coordinates, position: &mut Point) -> () { + fn move_position(coord: &Coordinates, position: &mut Point) { if let Ok(pos) = Point::try_from(coord) { *position = pos; }; @@ -190,6 +165,7 @@ impl Geometry { fn add_geometry( geometries: &mut Vec, + aperture_macros: &HashMap, position: &Point, coordinates: &Coordinates, aperture: &Option, @@ -216,7 +192,53 @@ impl Geometry { error!("Unsupported Polygon aperture:\r\n{:#?}", p); } Aperture::Other(o) => { - error!("Unsupported Other aperture:\r\n{:#?}", o); + // split at '/' -> name/arguments + if let Some((name, args)) = o.split_once("/") { + // parse variables from args + let variables: Vec = args + .split(",") + .map(|s| s.parse::().unwrap_or(0.)) + .collect(); + + if let Some(ap_macro) = aperture_macros.get(name) { + let mut composite = Composite::new(); + // add elements from macro + for aperture in &ap_macro.content { + match aperture { + MacroContent::Circle(c) => composite.add(Element::Circle( + Circle::from_macro(c, &variables, target), + )), + MacroContent::VectorLine(vl) => composite.add(Element::Rectangle( + Rectangle::from_macro_vector_line(vl, &variables, target), + )), + MacroContent::CenterLine(cl) => composite.add(Element::Rectangle( + Rectangle::from_macro_center_line(cl, &variables, target), + )), + MacroContent::Outline(ol) => composite.add(Element::Polygon( + Polygon::from_macro(ol, &variables, target), + )), + MacroContent::Polygon(p) => { + error!("Polygon Not implemented yet") + } + MacroContent::Moire(m) => { + error!("Moire Not implemented yet") + } + MacroContent::Thermal(t) => { + error!("Thermal Not implemented yet") + } + MacroContent::VariableDefinition(_) => {} + MacroContent::Comment(_) => {} + }; + } + + composite.finalize(); + geometries.push(Element::Composite(composite)); + } else { + error!("Unsupported Other aperture:\r\n{:#?}", o); + } + } else { + error!("Unsupported Other aperture:\r\n{:#?}", o); + } } } } diff --git a/src/geometry/helpers.rs b/src/geometry/helpers.rs index 64f5746..6b0b04b 100644 --- a/src/geometry/helpers.rs +++ b/src/geometry/helpers.rs @@ -10,13 +10,14 @@ pub fn semi_circle(center: Point, diameter: f64, tilt: f64) -> Vec<(f64, f64)> { .map(|i| { let angle = (i as f64 / (CIRCLE_SEGMENTS / 2) as f64) * PI + tilt * (PI / 180.); ( - angle.cos() * diameter / 2. + center.x, - angle.sin() * diameter / 2. + center.y, + angle.cos() * diameter / 2. + center.x(), + angle.sin() * diameter / 2. + center.y(), ) }) .collect() } +#[allow(unused)] pub enum CircleSegment { North, East, @@ -49,106 +50,106 @@ pub fn create_circular_path( .map(|&i| { let angle = (i as f64 / CIRCLE_SEGMENTS as f64) * 2.0 * PI; ( - angle.sin() * diameter / 2. + position.x, - angle.cos() * diameter / 2. + position.y, + angle.sin() * diameter / 2. + position.x(), + angle.cos() * diameter / 2. + position.y(), ) }) .collect() } -#[derive(Debug, PartialEq)] -pub enum Orientation { - Clockwise, - CounterClockwise, - CoLinear, -} +// #[derive(Debug, PartialEq)] +// pub enum Orientation { +// Clockwise, +// CounterClockwise, +// CoLinear, +// } -// To find orientation of ordered triplet (p, q, r). -// https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ -pub fn orientation(p: impl Into, q: impl Into, r: impl Into) -> Orientation { - let (p, q, r) = (p.into(), q.into(), r.into()); +// // To find orientation of ordered triplet (p, q, r). +// // https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ +// pub fn orientation(p: impl Into, q: impl Into, r: impl Into) -> Orientation { +// let (p, q, r) = (p.into(), q.into(), r.into()); - // See https://www.geeksforgeeks.org/orientation-3-ordered-points/ - // for details of below formula. - let val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); +// // See https://www.geeksforgeeks.org/orientation-3-ordered-points/ +// // for details of below formula. +// let val = (q.y() - p.y()) * (r.x() - q.x()) - (q.x() - p.x()) * (r.y() - q.y()); - match val { - 0. => Orientation::CoLinear, - x if x > 0. => Orientation::Clockwise, - _ => Orientation::CounterClockwise, - } -} +// match val { +// 0. => Orientation::CoLinear, +// x if x > 0. => Orientation::Clockwise, +// _ => Orientation::CounterClockwise, +// } +// } -// Given three collinear points p, q, r, the function checks if -// point q lies on line segment 'pr' -pub fn on_segment(p: impl Into, q: impl Into, r: impl Into) -> bool { - let (p, q, r) = (p.into(), q.into(), r.into()); +// // Given three collinear points p, q, r, the function checks if +// // point q lies on line segment 'pr' +// pub fn on_segment(p: impl Into, q: impl Into, r: impl Into) -> bool { +// let (p, q, r) = (p.into(), q.into(), r.into()); - q.x <= greater_val(p.x, r.x) - && q.x >= lower_val(p.x, r.x) - && q.y <= greater_val(p.y, r.y) - && q.y >= lower_val(p.y, r.y) -} +// q.x() <= greater_val(p.x(), r.x()) +// && q.x() >= lower_val(p.x(), r.x()) +// && q.y() <= greater_val(p.y(), r.y()) +// && q.y() >= lower_val(p.y(), r.y()) +// } -fn greater_val(a: f64, b: f64) -> f64 { - if a > b { - a - } else { - b - } -} +// fn greater_val(a: f64, b: f64) -> f64 { +// if a > b { +// a +// } else { +// b +// } +// } -fn lower_val(a: f64, b: f64) -> f64 { - if a < b { - a - } else { - b - } -} +// fn lower_val(a: f64, b: f64) -> f64 { +// if a < b { +// a +// } else { +// b +// } +// } -// The main function that returns true if line segment 'p1q1' -// and 'p2q2' intersect. -// https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ -pub fn do_intersect( - p1: impl Into, - q1: impl Into, - p2: impl Into, - q2: impl Into, -) -> bool { - let (p1, q1, p2, q2) = (p1.into(), q1.into(), p2.into(), q2.into()); +// // The main function that returns true if line segment 'p1q1' +// // and 'p2q2' intersect. +// // https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ +// pub fn do_intersect( +// p1: impl Into, +// q1: impl Into, +// p2: impl Into, +// q2: impl Into, +// ) -> bool { +// let (p1, q1, p2, q2) = (p1.into(), q1.into(), p2.into(), q2.into()); - // Find the four orientations needed for general and - // special cases - let o1 = orientation(p1, q1, p2); - let o2 = orientation(p1, q1, q2); - let o3 = orientation(p2, q2, p1); - let o4 = orientation(p2, q2, q1); +// // Find the four orientations needed for general and +// // special cases +// let o1 = orientation(p1, q1, p2); +// let o2 = orientation(p1, q1, q2); +// let o3 = orientation(p2, q2, p1); +// let o4 = orientation(p2, q2, q1); - // General case - if o1 != o2 && o3 != o4 { - return true; - } +// // General case +// if o1 != o2 && o3 != o4 { +// return true; +// } - // Special Cases - // p1, q1 and p2 are collinear and p2 lies on segment p1q1 - if o1 == Orientation::CoLinear && on_segment(p1, p2, q1) { - return true; - } +// // Special Cases +// // p1, q1 and p2 are collinear and p2 lies on segment p1q1 +// if o1 == Orientation::CoLinear && on_segment(p1, p2, q1) { +// return true; +// } - // p1, q1 and q2 are collinear and q2 lies on segment p1q1 - if o2 == Orientation::CoLinear && on_segment(p1, q2, q1) { - return true; - }; +// // p1, q1 and q2 are collinear and q2 lies on segment p1q1 +// if o2 == Orientation::CoLinear && on_segment(p1, q2, q1) { +// return true; +// }; - // p2, q2 and p1 are collinear and p1 lies on segment p2q2 - if o3 == Orientation::CoLinear && on_segment(p2, p1, q2) { - return true; - }; +// // p2, q2 and p1 are collinear and p1 lies on segment p2q2 +// if o3 == Orientation::CoLinear && on_segment(p2, p1, q2) { +// return true; +// }; - // p2, q2 and q1 are collinear and q1 lies on segment p2q2 - if o4 == Orientation::CoLinear && on_segment(p2, q1, q2) { - return true; - }; +// // p2, q2 and q1 are collinear and q1 lies on segment p2q2 +// if o4 == Orientation::CoLinear && on_segment(p2, q1, q2) { +// return true; +// }; - false // Doesn't fall in any of the above cases -} +// false // Doesn't fall in any of the above cases +// } diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index 974dd88..1550bf2 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -2,47 +2,39 @@ pub mod elements; pub mod gerber; mod helpers; pub mod point; -mod union; +pub mod union; use std::fmt::{Debug, Display}; use clipper2::{Bounds, Path, Paths, PointScaler}; -use eframe::egui::Ui; use egui_plot::PlotUi; use elements::{linepath::LinePath, Element}; use point::Point; +use union::UnitedNets; use crate::application::CanvasColour; pub struct Geometry { - pub outline_union: ClipperPaths, + pub united_nets: UnitedNets, pub apertures: Vec, pub paths: Vec, pub units: Unit, } impl Geometry { - pub fn to_unit(self, to: Unit) -> Self { + pub fn into_unit(self, to: Unit) -> Self { Self { - outline_union: self - .outline_union - .iter() - .map(|p| { - p.iter() - .map(|p| (&Point::from(p).to_unit(self.units, to)).into()) - .collect() - }) - .collect(), + united_nets: self.united_nets.into_unit(self.units, to), apertures: self .apertures - .iter() - .map(|a| a.to_unit(self.units, to)) + .into_iter() + .map(|a| a.into_unit(self.units, to)) .collect(), paths: self .paths - .iter() - .map(|l| l.to_unit(self.units, to)) + .into_iter() + .map(|l| l.into_unit(self.units, to)) .collect(), units: to, } @@ -98,12 +90,7 @@ pub type ClipperBounds = Bounds; pub trait DrawableRaw { fn canvas_pos(&self) -> Point; - fn draw_egui(&self, ui: &mut Ui, selected: bool); fn draw_egui_plot(&self, ui: &mut PlotUi, colour: CanvasColour, selected: bool); fn to_paths(&self) -> ClipperPaths; fn outline(&self) -> ClipperPath; } - -fn canvas_position_from_gerber(gerber_position: &Point, offset: Point) -> Point { - gerber_position.shift_x(offset.x).shift_y(offset.y) -} diff --git a/src/geometry/point.rs b/src/geometry/point.rs index 3305ff4..4ec9ff2 100644 --- a/src/geometry/point.rs +++ b/src/geometry/point.rs @@ -1,80 +1,115 @@ -use std::ops::{Add, Sub}; +use std::{ + fmt, + marker::PhantomData, + ops::{Add, Sub}, +}; +use clipper2::PointScaler; use eframe::egui::{Pos2, Vec2}; use egui_plot::PlotPoint; use gerber_types::Coordinates; -use super::{ClipperPoint, Unit}; +use super::{ClipperPoint, Micro, Unit}; -#[derive(Debug, Clone, Copy, PartialEq)] -pub struct Point { - pub x: f64, - pub y: f64, +#[derive(Copy, Clone, PartialEq, Eq, Hash)] +pub struct Point { + x: i64, + y: i64, + phantom_data: PhantomData

, } -impl Point { +impl fmt::Debug for Point { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Point") + .field("x", &self.x()) + .field("y", &self.y()) + .finish() + } +} + +impl Point

{ pub fn new(x: f64, y: f64) -> Self { - Point { x, y } + // Point { x, y } + Self { + x: P::scale(x) as i64, + y: P::scale(y) as i64, + phantom_data: PhantomData, + } } pub fn shift_x(&self, shift: f64) -> Self { Self { - x: self.x + shift, + x: self.x + P::scale(shift) as i64, y: self.y, + phantom_data: PhantomData, } } pub fn shift_y(&self, shift: f64) -> Self { Self { x: self.x, - y: self.y + shift, + y: self.y + P::scale(shift) as i64, + phantom_data: PhantomData, + } + } + + pub fn div(&self, divisor: f64) -> Self { + Self { + x: (self.x as f64 / divisor) as i64, + y: (self.y as f64 / divisor) as i64, + phantom_data: PhantomData, } } pub fn len(&self) -> f64 { - (self.x.powi(2) + self.y.powi(2)).sqrt() + P::descale(((self.x.pow(2) + self.y.pow(2)) as f64).sqrt()) } pub fn normalize(&self) -> Self { - Self { - x: self.x / self.len(), - y: self.y / self.len(), - } + Self::new(self.x() / self.len(), self.y() / self.len()) } pub fn invert_y(&self) -> Self { Self { x: self.x, y: -self.y, + phantom_data: PhantomData, } } - pub fn to_unit(&self, origin: Unit, to: Unit) -> Self { - Self { - x: convert_to_unit(self.x, origin, to), - y: convert_to_unit(self.y, origin, to), - } + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { + Self::new( + convert_to_unit(self.x(), origin, to), + convert_to_unit(self.y(), origin, to), + ) + } + + /// Returns the x coordinate of the point. + pub fn x(&self) -> f64 { + P::descale(self.x as f64) + } + + /// Returns the y coordinate of the point. + pub fn y(&self) -> f64 { + P::descale(self.y as f64) } } impl From for (f64, f64) { fn from(value: Point) -> Self { - (value.x, value.y) + (value.x(), value.y()) } } impl From for [f64; 2] { fn from(value: Point) -> Self { - [value.x, value.y] + [value.x(), value.y()] } } impl From<[f64; 2]> for Point { fn from(value: [f64; 2]) -> Self { - Point { - x: value[0], - y: value[1], - } + Self::new(value[0], value[1]) } } @@ -85,6 +120,7 @@ impl Add for Point { Self { x: self.x + other.x, y: self.y + other.y, + phantom_data: PhantomData, } } } @@ -96,6 +132,7 @@ impl Sub for Point { Self { x: self.x - other.x, y: self.y - other.y, + phantom_data: PhantomData, } } } @@ -103,8 +140,8 @@ impl Sub for Point { impl From for Pos2 { fn from(value: Point) -> Self { Self { - x: value.x as f32, - y: value.y as f32, + x: value.x() as f32, + y: value.y() as f32, } } } @@ -112,33 +149,30 @@ impl From for Pos2 { impl From<&Point> for Pos2 { fn from(value: &Point) -> Self { Self { - x: value.x as f32, - y: value.y as f32, + x: value.x() as f32, + y: value.y() as f32, } } } impl From for Point { fn from(value: Pos2) -> Self { - Self { - x: value.x.into(), - y: value.y.into(), - } + Self::new(value.x.into(), value.y.into()) } } impl From for Vec2 { fn from(value: Point) -> Self { Self { - x: value.x as f32, - y: value.y as f32, + x: value.x() as f32, + y: value.y() as f32, } } } impl From<&Point> for ClipperPoint { fn from(value: &Point) -> Self { - Self::new(value.x, value.y) + Self::from_scaled(value.x, value.y) } } @@ -150,7 +184,7 @@ impl From<&ClipperPoint> for Point { impl From for PlotPoint { fn from(value: Point) -> Self { - Self::new(value.x, value.y) + Self::new(value.x(), value.y()) } } diff --git a/src/geometry/union.rs b/src/geometry/union.rs index e1feb88..0f30c3d 100644 --- a/src/geometry/union.rs +++ b/src/geometry/union.rs @@ -1,30 +1,110 @@ use std::collections::HashMap; -use clipper2::{FillRule, One, Paths, PointInPolygonResult}; - -use crate::geometry::helpers::do_intersect; +use clipper2::{FillRule, PointInPolygonResult}; +use itertools::Itertools; use super::{ elements::{linepath::LinePath, Element}, point::Point, - ClipperPaths, + ClipperBounds, ClipperPaths, ClipperPoint, Unit, }; +#[derive(Debug, Clone, Default)] +pub struct UnitedNets { + pub conductors: Vec, + pub isolated_apertures: Vec, +} + +impl UnitedNets { + pub fn into_unit(self, origin: Unit, to: Unit) -> Self { + Self { + conductors: self + .conductors + .iter() + .map(|net| net.to_unit(origin, to)) + .collect(), + isolated_apertures: self + .isolated_apertures + .into_iter() + .map(|el| el.into_unit(origin, to)) + .collect(), + } + } + + pub fn bounds(&self) -> ClipperBounds { + let conductor_net = self + .conductors + .iter() + .map(|net| net.outline.clone()) + .reduce(|mut acc, v| { + acc.push(v); + acc + }); + let isolated_apertures_bound = ClipperPaths::new( + self.isolated_apertures + .iter() + .map(|net| net.outline()) + .collect(), + ) + .bounds(); + + if let Some(net) = conductor_net { + let net_bounds = net.bounds(); + + ClipperBounds { + min: ClipperPoint::new( + net_bounds.min.x().min(isolated_apertures_bound.min.x()), + net_bounds.min.y().min(isolated_apertures_bound.min.y()), + ), + max: ClipperPoint::new( + net_bounds.max.x().max(isolated_apertures_bound.max.x()), + net_bounds.max.y().max(isolated_apertures_bound.max.y()), + ), + } + } else { + isolated_apertures_bound + } + } +} + #[derive(Debug, Clone)] pub struct ConductorNet { pub outline: ClipperPaths, pub included_points: Vec, } +impl ConductorNet { + pub fn to_unit(&self, origin: Unit, to: Unit) -> Self { + Self { + outline: self + .outline + .iter() + .map(|p| { + p.iter() + .map(|p| (&Point::from(p).into_unit(origin, to)).into()) + .collect() + }) + .collect(), + included_points: self + .included_points + .iter() + .map(|el| el.into_unit(origin, to)) + .collect(), + } + } +} + pub fn union_lines(lines: &[LinePath]) -> Vec { let mut intersection_map = HashMap::new(); - println!( - "START LINE UNION of {:?}", - lines - .iter() - .map(|l| l.points.clone()) - .collect::>>() - ); + + // TODO prevent double checking same combination + let combinations = lines.iter().enumerate().combinations(2); + + for co in combinations { + let (index, line) = co[0]; + // print!("{} mit {};", combi[0].0, combi[1].0); + } + for (index, line) in lines.iter().enumerate() { if !line.is_empty() { // create list of intersecting lines @@ -36,16 +116,28 @@ pub fn union_lines(lines: &[LinePath]) -> Vec { // do not check for intersection with itself if index != i { // check for all lines in path - let intersect = l.points.windows(2).any(|w| { - let (p2, q2) = (w[0], w[1]); - // println!("LINE 2 {p2:?}, {q2:?}"); - do_intersect(p1, q1, p2, q2) - }); + // let intersect = l.points.windows(2).any(|w| { + // let (p2, q2) = (w[0], w[1]); + // // println!("LINE 2 {p2:?}, {q2:?}"); + // // do_intersect(p1, q1, p2, q2) + // line.outline + // .get(0) + // .unwrap() + // .is_point_inside(ClipperPoint::from(&p2)) + // != PointInPolygonResult::IsOutside + // || line + // .outline + // .get(0) + // .unwrap() + // .is_point_inside(ClipperPoint::from(&q2)) + // != PointInPolygonResult::IsOutside + // }); + let intersect = line.outline_includes_points(&l.points); // println!("INTERSECTING: {intersect}"); if intersect { // let entry = intersection_map.entry(index).or_insert(Vec::new()); // entry.push(i); - println!("INTERSECTING {:?} and {:?}", line.points, l.points); + // println!("INTERSECTING {:?} and {:?}", line.points, l.points); intersections.push(i); } } @@ -56,34 +148,20 @@ pub fn union_lines(lines: &[LinePath]) -> Vec { } } - println!("{intersection_map:?}"); let mut final_geo = Vec::new(); // go through all line segments for i in 0..intersection_map.len() { if let Some(mut intersections) = intersection_map.remove(&i) { - // if no intersections are given, add line as own conductor net - // if intersections.is_empty() { - // if let Some(line) = lines.get(i) { - // final_geo.push(ConductorNet { - // outline: line.outline.clone(), - // included_points: line.points.clone(), - // }) - // } - // } - - println!("--- Taking line segment {i}"); // get current line path let mut geo = lines[i].outline.clone(); let mut included_points = lines[i].points.clone(); // union with intersecting lines until done - println!("Intersection points: {intersections:?}"); while let Some(other) = intersections.pop() { - println!("Intersecting with line # {other:?}"); // union with intersecting line let intersecting_line = &lines[other]; - if let Some(union) = union(&geo, &intersecting_line.outline) { + if let Some(union) = union_function(&geo, &intersecting_line.outline) { geo = union; } // add points of added line to included points @@ -115,23 +193,16 @@ pub fn union_lines(lines: &[LinePath]) -> Vec { } } - // if final_geo.is_empty() { - // if let Some(line) = lines.get(0) { - // final_geo.push(ConductorNet { - // outline: line.outline.clone(), - // included_points: line.points.clone(), - // }) - // } - // } - final_geo } pub fn union_with_apertures( apertures: &Vec, conductors: Vec, -) -> Option { - let mut finalized_paths = Vec::new(); // handle apertures without connection +) -> Option { + let mut isolated_apertures = Vec::new(); + + // let mut finalized_paths = Vec::new(); // handle apertures without connection let mut current_conductors = conductors; // go through all apertures @@ -152,7 +223,7 @@ pub fn union_with_apertures( .any(|c| ap.outline().is_point_inside(c.into()) != PointInPolygonResult::IsOutside) { // union aperture with conductor net - let geo = union(&geo, &conductor.outline)?; + let geo = union_function(&geo, &conductor.outline)?; let mut cond = conductor; cond.outline = geo; isolated = false; @@ -164,24 +235,21 @@ pub fn union_with_apertures( // add aperture to extra container if isolated if isolated { - finalized_paths.push(geo); + // finalized_paths.push(geo); + isolated_apertures.push(ap.clone()); } // update current conductors current_conductors = new_conductors; } - for conductor in current_conductors { - finalized_paths.push(conductor.outline); - } - - finalized_paths.into_iter().reduce(|mut all, paths| { - all.push(paths); - all + Some(UnitedNets { + conductors: current_conductors, + isolated_apertures, }) } -fn union(path1: &ClipperPaths, path2: &ClipperPaths) -> Option { +pub fn union_function(path1: &ClipperPaths, path2: &ClipperPaths) -> Option { path1 .to_clipper_subject() .add_clip(path2.clone()) diff --git a/src/gerber/aperture_macros.rs b/src/gerber/aperture_macros.rs index e0e4515..c63591e 100644 --- a/src/gerber/aperture_macros.rs +++ b/src/gerber/aperture_macros.rs @@ -1,7 +1,170 @@ -use gerber_types::MacroContent; +use std::str::Chars; -pub fn parse(data: &str) -> Option { - todo!() +use gerber_types::{ + ApertureMacro, CenterLinePrimitive, CirclePrimitive, MacroContent, MacroDecimal, + OutlinePrimitive, PolygonPrimitive, VectorLinePrimitive, +}; + +use super::doc::GerberDoc; + +pub fn start_macro(doc: &mut GerberDoc, macro_lines: &mut Option>, line: &str) { + *macro_lines = Some(vec![line.replacen("%AM", "", 1)]); + if line.ends_with("*%") { + if let Some(aperture_macro) = parse(macro_lines.as_ref()) { + doc.aperture_macros + .insert(aperture_macro.name.to_string(), aperture_macro); + }; + *macro_lines = None; + } +} + +pub fn continue_macro(doc: &mut GerberDoc, macro_lines: &mut Option>, line: &str) { + if let Some(lines) = macro_lines { + lines.push(line.to_string()); + if line.ends_with("*%") { + if let Some(aperture_macro) = parse(macro_lines.as_ref()) { + doc.aperture_macros + .insert(aperture_macro.name.to_string(), aperture_macro); + }; + *macro_lines = None; + } + } else { + start_macro(doc, macro_lines, line); + } +} + +pub fn parse(data: Option<&Vec>) -> Option { + let mut name = ""; + let mut macro_content = Vec::new(); + let lines = data?; + + // Go through every very part in the macro + for (index, line) in lines.iter().enumerate() { + // get name + if index == 0 { + name = line.strip_suffix("*")?; + continue; + } + + let mut chars = line.chars(); + // remove % char of last line + if index == lines.len() - 1 { + chars.next_back(); + } + + match chars.next()? { + // Comment + '0' => macro_content.push(MacroContent::Comment(line.to_string())), + // Circle + '1' => { + let args = get_attr_args(chars)?; + + macro_content.push(MacroContent::Circle(CirclePrimitive { + exposure: args.first()? == &MacroDecimal::Value(1.0), + diameter: args.get(1)?.clone(), + center: (args.get(2)?.clone(), args.get(3)?.clone()), + angle: match args.get(4) { + Some(arg) => Some(arg.clone()), + None => Some(MacroDecimal::Value(0.)), + }, + })); + } + '2' => { + match chars.next()? { + // Vector Line + '0' => { + let args = get_attr_args(chars)?; + + macro_content.push(MacroContent::VectorLine(VectorLinePrimitive { + exposure: args.first()? == &MacroDecimal::Value(1.0), + end: (args.get(4)?.clone(), args.get(5)?.clone()), + width: args.get(1)?.clone(), + start: (args.get(2)?.clone(), args.get(3)?.clone()), + angle: match args.get(6) { + Some(arg) => arg.clone(), + None => MacroDecimal::Value(0.), + }, + })); + } + // Center Line + '1' => { + let args = get_attr_args(chars)?; + + macro_content.push(MacroContent::CenterLine(CenterLinePrimitive { + exposure: args.first()? == &MacroDecimal::Value(1.0), + dimensions: (args.get(1)?.clone(), args.get(2)?.clone()), + center: (args.get(3)?.clone(), args.get(4)?.clone()), + angle: match args.get(6) { + Some(arg) => arg.clone(), + None => MacroDecimal::Value(0.), + }, + })); + } + _ => panic!("Unknown command in macro line:\n{} | {}", index, line), + } + } + // Outline + '4' => { + let args = get_attr_args(chars)?; + + macro_content.push(MacroContent::Outline(OutlinePrimitive { + exposure: args.first()? == &MacroDecimal::Value(1.0), + points: (args) + .chunks_exact(2) + .map(|c| (c[0].clone(), c[1].clone())) + .collect(), + angle: args.last()?.clone(), + })); + } + // Polygon + '5' => { + let args = get_attr_args(chars)?; + + macro_content.push(MacroContent::Polygon(PolygonPrimitive { + exposure: args.first()? == &MacroDecimal::Value(1.0), + vertices: match args.get(1)? { + MacroDecimal::Value(v) => *v as u8, + _ => 0, + }, + center: (args.get(2)?.clone(), args.get(3)?.clone()), + diameter: args.get(4)?.clone(), + angle: match args.get(5) { + Some(arg) => arg.clone(), + None => MacroDecimal::Value(0.), + }, + })); + } + '6' => todo!(), // Moiré + '7' => todo!(), // Thermal + '$' => todo!(), // Define variable + _ => panic!("Unknown command in macro line:\n{} | {}", index, line), + } + } + + Some(ApertureMacro { + name: name.to_string(), + content: macro_content, + }) +} + +fn get_attr_args(mut attribute_chars: Chars) -> Option> { + attribute_chars.next_back()?; + attribute_chars.next()?; + + Some( + attribute_chars + .as_str() + .split(",") + .map(|el| el.trim()) + .map(|el| { + if el.starts_with("$") { + MacroDecimal::Expression(el.to_string()) + } else { + MacroDecimal::Value(el.parse::().unwrap()) + } + }) + .collect(), + ) } // def parse_content(self): diff --git a/src/gerber/doc.rs b/src/gerber/doc.rs index e43143f..1fab86c 100644 --- a/src/gerber/doc.rs +++ b/src/gerber/doc.rs @@ -1,7 +1,8 @@ use ::std::collections::HashMap; -use gerber_types::{Aperture, ApertureDefinition, Command, CoordinateFormat, ExtendedCode, Unit}; +use gerber_types::{ + Aperture, ApertureDefinition, ApertureMacro, Command, CoordinateFormat, ExtendedCode, Unit, +}; use std::fmt; -use std::iter::repeat; #[derive(Debug, PartialEq)] // Representation of Gerber document @@ -12,6 +13,8 @@ pub struct GerberDoc { pub format_specification: Option, /// map of apertures which can be used in draw commands later on in the document. pub apertures: HashMap, + /// map of aperture macro which can be used to create aperture definitions + pub aperture_macros: HashMap, // Anything else, draw commands, comments, attributes pub commands: Vec, } @@ -23,6 +26,7 @@ impl GerberDoc { units: None, format_specification: None, apertures: HashMap::new(), + aperture_macros: HashMap::new(), commands: Vec::new(), } } @@ -33,26 +37,24 @@ impl GerberDoc { /// in the gerber-types rust crate. Note that aperture definitions will be sorted by code number /// with lower codes being at the top of the command. This is independent of their order during /// parsing. - pub fn to_commands(mut self) -> Vec { + pub fn into_commands(self) -> Vec { + let mut gerber_doc = self; let mut gerber_cmds: Vec = Vec::new(); - gerber_cmds.push(ExtendedCode::CoordinateFormat(self.format_specification.unwrap()).into()); - gerber_cmds.push(ExtendedCode::Unit(self.units.unwrap()).into()); + gerber_cmds + .push(ExtendedCode::CoordinateFormat(gerber_doc.format_specification.unwrap()).into()); + gerber_cmds.push(ExtendedCode::Unit(gerber_doc.units.unwrap()).into()); // we add the apertures to the list, but we sort by code. This means the order of the output // is reproducible every time. - let mut apertures = self.apertures.into_iter().collect::>(); + let mut apertures = gerber_doc.apertures.into_iter().collect::>(); apertures.sort_by_key(|tup| tup.0); for (code, aperture) in apertures { gerber_cmds.push( - ExtendedCode::ApertureDefinition(ApertureDefinition { - code: code, - aperture: aperture, - }) - .into(), + ExtendedCode::ApertureDefinition(ApertureDefinition { code, aperture }).into(), ) } - gerber_cmds.append(&mut self.commands); + gerber_cmds.append(&mut gerber_doc.commands); // TODO implement for units gerber_cmds } diff --git a/src/gerber/mod.rs b/src/gerber/mod.rs index ab40ca2..b52a613 100644 --- a/src/gerber/mod.rs +++ b/src/gerber/mod.rs @@ -1,5 +1,7 @@ +mod aperture_macros; pub mod doc; +use aperture_macros::{continue_macro, start_macro}; use doc::GerberDoc; use gerber_types::{ Aperture, ApertureAttribute, ApertureFunction, Circle, Command, CoordinateFormat, @@ -25,12 +27,14 @@ pub fn parse_gerber(reader: BufReader) -> GerberDoc { // By default the 'last coordinate' can be taken to be (0,0) let mut last_coords = (0i64, 0i64); + let mut aperture_macro: Option> = None; + // naively define some regex terms // TODO see which ones can be done without regex for better performance? let re_units = regex!(r#"%MO(.*)\*%"#); let re_comment = regex!(r#"G04 (.*)\*"#); let re_formatspec = regex!(r#"%FSLAX(.*)Y(.*)\*%"#); - let re_aperture = regex!(r#"%ADD([0-9]+)([A-Z]),(.*)\*%"#); + let re_aperture = regex!(r#"%ADD([0-9]+)(\w*),(.*)\*%"#); let re_interpolation = regex!(r#"X?(-?[0-9]+)?Y?(-?[0-9]+)?I?(-?[0-9]+)?J?(-?[0-9]+)?D01\*"#); let re_move_or_flash = regex!(r#"X?(-?[0-9]+)?Y?(-?[0-9]+)?D0[2-3]*"#); // TODO: handle escaped characters for attributes @@ -46,6 +50,12 @@ pub fn parse_gerber(reader: BufReader) -> GerberDoc { debug!("{}. {}", index + 1, &line); if !line.is_empty() { + // continue aperture macro if one is active + if aperture_macro.is_some() { + continue_macro(&mut gerber_doc, &mut aperture_macro, line); + continue; + } + let mut linechars = line.chars(); match linechars.next().unwrap() { @@ -114,7 +124,8 @@ pub fn parse_gerber(reader: BufReader) -> GerberDoc { 'A' => match linechars.next().unwrap() { 'D' => parse_aperture_defs(line, re_aperture, &mut gerber_doc), // AD 'M' => { - panic!("Aperture Macros (AM) are not supported yet.") + start_macro(&mut gerber_doc, &mut aperture_macro, line); + // panic!("Aperture Macros (AM) are not supported yet.") } // AM _ => line_parse_failure(line, index), }, @@ -348,7 +359,14 @@ fn parse_aperture_defs(line: &str, re: &Regex, gerber_doc: &mut GerberDoc) { }), ), _ => { - panic!("Encountered unknown aperture definition statement") + if let Some(ap_macro) = gerber_doc.aperture_macros.get(aperture_type) { + gerber_doc.apertures.insert( + code, + Aperture::Other(format!("{}/{}", ap_macro.name, aperture_args.join(","))), + ) + } else { + panic!("Encountered unknown aperture definition statement") + } } }; @@ -511,7 +529,7 @@ fn parse_move_or_flash( } } -fn parse_load_mirroring(mut linechars: Chars, gerber_doc: &mut GerberDoc) { +fn parse_load_mirroring(mut _linechars: Chars, _gerber_doc: &mut GerberDoc) { // match linechars.next().unwrap() { // 'N' => gerber_doc.commands.push(value), //LMN // 'Y' => gerber_doc.commands.push(value), // LMY @@ -528,7 +546,7 @@ fn parse_load_mirroring(mut linechars: Chars, gerber_doc: &mut GerberDoc) { // a step and repeat open statement has four (required) parameters that we need to extract // X (pos int) Y (pos int), I (decimal), J (decimal) fn parse_step_repeat_open(line: &str, re: &Regex, gerber_doc: &mut GerberDoc) { - println!("SR line: {}", &line); + // println!("SR line: {}", &line); if let Some(regmatch) = re.captures(line) { gerber_doc.commands.push( ExtendedCode::StepAndRepeat(StepAndRepeat::Open { @@ -577,7 +595,7 @@ fn parse_step_repeat_open(line: &str, re: &Regex, gerber_doc: &mut GerberDoc) { /// ⚠️ Any other Attributes (which seem to be valid within the gerber spec) we will **fail** to parse! /// /// ⚠️ This parsing statement needs a lot of tests and validation at the current stage! -fn parse_file_attribute(line: Chars, re: &Regex, gerber_doc: &mut GerberDoc) { +fn _parse_file_attribute(line: Chars, _re: &Regex, gerber_doc: &mut GerberDoc) { let attr_args = get_attr_args(line); if attr_args.len() >= 2 { // we must have at least 1 field @@ -626,7 +644,7 @@ fn parse_file_attribute(line: Chars, re: &Regex, gerber_doc: &mut GerberDoc) { /// ⚠️ Any other Attributes (which seem to be valid within the gerber spec) we will **fail** to parse! /// /// ⚠️ This parsing statement needs a lot of tests and validation at the current stage! -fn parse_aperture_attribute(line: Chars, re: &Regex, gerber_doc: &mut GerberDoc) { +fn parse_aperture_attribute(line: Chars, _re: &Regex, gerber_doc: &mut GerberDoc) { let attr_args = get_attr_args(line); if attr_args.len() >= 2 { // we must have at least 1 field @@ -708,7 +726,7 @@ fn parse_aperture_attribute(line: Chars, re: &Regex, gerber_doc: &mut GerberDoc) } } -fn parse_object_attribute(line: Chars, re: &Regex, gerber_doc: &mut GerberDoc) { +fn parse_object_attribute(line: Chars, _re: &Regex, _gerber_doc: &mut GerberDoc) { let attr_args = get_attr_args(line); if attr_args.len() >= 2 { // gerber_doc.commands.push( @@ -728,7 +746,7 @@ fn parse_object_attribute(line: Chars, re: &Regex, gerber_doc: &mut GerberDoc) { } } -fn parse_delete_attribute(line: Chars, re: &Regex, gerber_doc: &mut GerberDoc) { +fn parse_delete_attribute(line: Chars, _re: &Regex, gerber_doc: &mut GerberDoc) { let attr_args = get_attr_args(line); match attr_args.len() { 1 => gerber_doc diff --git a/src/main.rs b/src/main.rs index d23b413..742319c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,13 +6,15 @@ mod export; mod geometry; mod gerber; mod outline_geometry; +mod resources; use application::Application; -use eframe::egui; +use eframe::egui::{self, IconData}; use tracing_subscriber::{filter, layer::SubscriberExt, util::SubscriberInitExt, Layer}; const APP_NAME: &str = "Outlinify"; +const ICON: &[u8] = include_bytes!("../resources/icon.png"); fn main() -> eframe::Result { let stdout_log = tracing_subscriber::fmt::layer() @@ -28,17 +30,38 @@ fn main() -> eframe::Result { let application = Application::new(); let options = eframe::NativeOptions { - viewport: egui::ViewportBuilder::default().with_inner_size([900.0, 700.0]), + viewport: egui::ViewportBuilder::default() + .with_inner_size([900.0, 700.0]) + .with_icon(load_icon()), ..Default::default() }; + eframe::run_native( APP_NAME, options, Box::new(|cc| { // This gives us image support: - // egui_extras::install_image_loaders(&cc.egui_ctx); + egui_extras::install_image_loaders(&cc.egui_ctx); Ok(Box::new(application)) }), ) } + +fn load_icon() -> IconData { + let (icon_rgba, icon_width, icon_height) = { + let icon = ICON; + let image = image::load_from_memory(icon) + .expect("Failed to open icon path") + .into_rgba8(); + let (width, height) = image.dimensions(); + let rgba = image.into_raw(); + (rgba, width, height) + }; + + IconData { + rgba: icon_rgba, + width: icon_width, + height: icon_height, + } +} diff --git a/src/outline_geometry/mod.rs b/src/outline_geometry/mod.rs index 6a0bf63..6a73285 100644 --- a/src/outline_geometry/mod.rs +++ b/src/outline_geometry/mod.rs @@ -1,13 +1,11 @@ -use clipper2::{Bounds, EndType, JoinType, One, Paths}; -use eframe::{ - egui::{Rect, Shape, Stroke}, - epaint::{PathShape, PathStroke}, -}; -use egui_plot::{PlotBounds, PlotItem, PlotPoint, Polygon}; +use clipper2::{EndType, JoinType}; use crate::{ - application::CanvasColour, - geometry::{elements::circle::Circle, point::Point, ClipperBounds, ClipperPaths, Unit}, + excellon::drills::Drills, + geometry::{ + point::Point, union::UnitedNets, ClipperBounds, ClipperPath, ClipperPaths, DrawableRaw, + Unit, + }, }; #[derive(Debug, Clone)] @@ -16,10 +14,8 @@ pub enum GeometryType { Points(Vec), } -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct OutlineGeometry { - // pub path: ClipperPaths, - // pub points: Vec, items: GeometryType, pub stroke: f32, pub unit: Unit, @@ -28,26 +24,31 @@ pub struct OutlineGeometry { } impl OutlineGeometry { - pub fn new( - outline: &ClipperPaths, - stroke: f32, - unit: Unit, - bounds_from: &str, - bounds: ClipperBounds, - ) -> Self { - // inflate given path - let outline = outline - .clone() - .inflate((stroke / 2.).into(), JoinType::Miter, EndType::Polygon, 30.) - .simplify(0.01, false); + pub fn new(united_nets: &UnitedNets, stroke: f32, unit: Unit, bounds_from: &str) -> Self { + let mut outline_paths = ClipperPaths::new(vec![]); + // inflate conductor net paths + for net in &united_nets.conductors { + outline_paths.push( + net.outline + .inflate((stroke / 2.).into(), JoinType::Round, EndType::Polygon, 2.) + .simplify(0.001, false), + ) + } + // inflate isolated apertures + for ap in &united_nets.isolated_apertures { + outline_paths.push( + ap.to_paths() + .inflate((stroke / 2.).into(), JoinType::Round, EndType::Polygon, 2.) + .simplify(0.001, false), + ); + } + Self { - // path: outline, - // points: Vec::new(), - items: GeometryType::Paths(outline), + items: GeometryType::Paths(outline_paths), stroke, unit, bounds_from: bounds_from.into(), - bounding_box: bounds, + bounding_box: united_nets.bounds(), } } @@ -56,34 +57,30 @@ impl OutlineGeometry { stroke: f32, unit: Unit, bounds_from: &str, - bounds: ClipperBounds, ) -> Self { Self { - // path: outline.clone(), - // points: Vec::new(), items: GeometryType::Paths(outline.clone()), stroke, unit, bounds_from: bounds_from.into(), - bounding_box: bounds, + bounding_box: outline.bounds(), } } - pub fn point_marker( - points: Vec, - stroke: f32, - unit: Unit, - bounds_from: &str, - bounds: ClipperBounds, - ) -> Self { + pub fn drill_marker(drills: &Drills, stroke: f32, unit: Unit, bounds_from: &str) -> Self { Self { - // path: Paths::new(vec![]), - // points, - items: GeometryType::Points(points), + items: GeometryType::Points(drills.holes.iter().map(|c| c.canvas_pos()).collect()), stroke, unit, bounds_from: bounds_from.into(), - bounding_box: bounds, + bounding_box: ClipperPaths::from( + drills + .holes + .iter() + .map(|hole| hole.outline.clone()) + .collect::>(), + ) + .bounds(), } } @@ -101,114 +98,3 @@ impl OutlineGeometry { } } } - -pub struct OutlineShape { - stroke: f32, - selected: bool, - colour: CanvasColour, - items: GeometryType, - bounds: ClipperBounds, -} - -// impl OutlineShape { -// pub fn new_from_geometry( -// geometry: &OutlineGeometry, -// colour: CanvasColour, -// selected: bool, -// ) -> Self { -// Self { -// stroke: geometry.stroke, -// selected, -// items: geometry.items.clone(), -// bounds: geometry.bounding_box, -// colour, -// } -// } -// } - -// impl PlotItem for OutlineShape { -// fn shapes( -// &self, -// _ui: &eframe::egui::Ui, -// transform: &egui_plot::PlotTransform, -// shapes: &mut Vec, -// ) { -// match &self.items { -// GeometryType::Paths(paths) => { -// for path in paths.iter() { -// let values_tf: Vec<_> = path -// .iter() -// .map(|v| transform.position_from_point(&PlotPoint::from(Point::from(v)))) -// .collect(); - -// let shape = PathShape::closed_line( -// values_tf.clone(), -// PathStroke::new(20., self.colour.to_colour32(self.selected)), -// ); - -// shapes.push(shape.into()); -// } -// } -// GeometryType::Points(points) => { -// for point in points { -// // draw outline of hole -// let points = Circle::circle_segment_points( -// Point::from(transform.position_from_point(&PlotPoint::from(*point))), -// self.stroke.into(), -// 1., -// 0., -// ) -// .into_iter() -// .map(|p| Point::from(p).into()) -// .collect(); - -// let polygon = Shape::convex_polygon( -// points, -// self.colour.to_colour32(self.selected), -// Stroke::NONE, -// ); -// shapes.push(polygon); -// } -// // TODO draw point circles -// } -// } - -// // todo!() -// } - -// fn initialize(&mut self, x_range: std::ops::RangeInclusive) { -// {} -// } - -// fn name(&self) -> &str { -// "Test" -// } - -// fn color(&self) -> eframe::egui::Color32 { -// self.colour.to_colour32(self.selected) -// } - -// fn highlight(&mut self) { -// {} -// } - -// fn highlighted(&self) -> bool { -// false -// } - -// fn allow_hover(&self) -> bool { -// false -// } - -// fn geometry(&self) -> egui_plot::PlotGeometry<'_> { -// todo!() -// } - -// fn bounds(&self) -> PlotBounds { -// PlotBounds::from_min_max(self.bounds.min.into(), self.bounds.max.into()) -// } - -// fn id(&self) -> Option { -// None -// } -// } diff --git a/src/resources/errors.rs b/src/resources/errors.rs new file mode 100644 index 0000000..7afec46 --- /dev/null +++ b/src/resources/errors.rs @@ -0,0 +1,20 @@ +use std::fmt; + +use error_stack::{Context, Report}; + +#[derive(Debug)] +pub struct ResourceError; + +impl ResourceError { + pub fn new(text: &str) -> Report { + Report::new(Self).attach_printable(text.to_string()) + } +} + +impl fmt::Display for ResourceError { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.write_str("Error loading resource") + } +} + +impl Context for ResourceError {} diff --git a/src/resources/fonts.rs b/src/resources/fonts.rs new file mode 100755 index 0000000..8fe180e --- /dev/null +++ b/src/resources/fonts.rs @@ -0,0 +1,37 @@ +use eframe::egui::{FontData, FontDefinitions}; +// const FONT_ROBOTO: &[u8] = include_bytes!("../../resources/Roboto-Light.ttf"); +// const FONT_ROBOTO_MONO: &[u8] = include_bytes!("../../resources/RobotoMono-Light.ttf"); +const FONT_OPEN_SANS: &[u8] = include_bytes!("../../resources/OpenSans-Light.ttf"); + +// pub fn register_fonts(style: &mut Style) { +// use eframe::epaint::FontFamily::{Monospace, Proportional}; + +// style.text_styles = [ +// (TextStyle::Body, FontId::new(21.0, Proportional)), +// (TextStyle::Button, FontId::new(18.0, Monospace)), +// (TextStyle::Monospace, FontId::new(18.0, Monospace)), +// (TextStyle::Small, FontId::new(16.0, Proportional)), +// (TextStyle::Heading, FontId::new(48.0, Proportional)), +// ] +// .into(); +// } + +pub fn load_fonts() -> FontDefinitions { + use eframe::epaint::FontFamily::{Monospace, Proportional}; + + let mut fonts = FontDefinitions::default(); + // let roboto = FontData::from_static(FONT_ROBOTO); + // let roboto_mono = FontData::from_static(FONT_ROBOTO_MONO); + let open_sans = FontData::from_static(FONT_OPEN_SANS); + + // fonts.font_data.insert("roboto".into(), roboto); + // fonts.font_data.insert("roboto_mono".into(), roboto_mono); + fonts.font_data.insert("OpenSans".into(), open_sans); + + // fonts.families.insert(Monospace, vec!["roboto_mono".into()]); + // fonts.families.insert(Monospace, vec!["roboto".into()]); + fonts.families.insert(Proportional, vec!["OpenSans".into()]); + fonts.families.insert(Monospace, vec!["OpenSans".into()]); + + fonts +} diff --git a/src/resources/icons.rs b/src/resources/icons.rs new file mode 100644 index 0000000..f28d235 --- /dev/null +++ b/src/resources/icons.rs @@ -0,0 +1,17 @@ +use eframe::egui::{include_image, ImageSource}; + +pub struct Icons<'a> { + pub gerber_file: ImageSource<'a>, + pub excellon_file: ImageSource<'a>, + pub geometry_file: ImageSource<'a>, +} + +impl<'a> Icons<'a> { + pub fn preload() -> Self { + Self { + gerber_file: include_image!("../../resources/gerber_file.png"), + excellon_file: include_image!("../../resources/excellon_file.png"), + geometry_file: include_image!("../../resources/geometry_file.png"), + } + } +} diff --git a/src/resources/mod.rs b/src/resources/mod.rs new file mode 100755 index 0000000..2ba0b1f --- /dev/null +++ b/src/resources/mod.rs @@ -0,0 +1,25 @@ +// mod fonts; +mod errors; +mod icons; + +pub use self::icons::Icons; + +pub struct ResourceLoader<'a> { + icons: Icons<'a>, +} + +impl<'a> ResourceLoader<'a> { + pub fn new() -> Self { + Self { + icons: Icons::preload(), + } + } + + // pub fn fonts(&self) -> FontDefinitions { + // fonts::load_fonts() + // } + + pub fn icons(&self) -> &Icons { + &self.icons + } +}